《51单片机应用开发从入门到精通》——1.5 测试方法和工具

简介:

本节书摘来异步社区《51单片机应用开发从入门到精通》一书中的第1章,第1.5节,作者:张华杰 ,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 测试方法和工具

51单片机应用开发从入门到精通
完成一个用户样机,首先要完成硬件组装工作,然后进入软件设计、调试和硬件调试阶段。硬件组装就是在设计、制作完毕的印制板上焊好元件与插座,然后就可用仿真开发工具进行软件设计、调试和硬件调试工作。

1.用户样机软件的设计、调试
用户样机软件设计、调试的过程如图1-25所示,可为以下几个步骤。

2fe3a0978d55ffa214eb747538f1d0522519b614

第一步,建立用户源程序。用户通过开发系统的键盘、CRT显示器及开发系统的编辑软件,按照所要求的格式、语法规定,把源程序输入到开发系统中,并存在磁盘上。

第二步,在开发系统机上,利用汇编软件对第一步输入的用户源程序进行汇编,变为可执行的目标代码。在汇编过程中,如果用户源程序有语法错误,则在CRT上显示出来,然后返回到第一步进行修改,再进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。

第三步,动态在线调试。这一步对用户源程序进行调试。上述的第一步、第二步是一个纯粹的软件运行过程,而在这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无联系的程序以及与及样机硬件紧密关联的程序。

对于与用户样机硬件无联系的用户程序,例如计算机程序,虽然已经没有语法错误,但可能有逻辑错误,使计算结果不正确,这样必须借助于动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到第一步修改,直至逻辑错误纠正为止。

对于与用户样机硬件紧密相关的用户程序,如接口驱动程序,一定要先把硬件故障排除以后,再与硬件配合,对用户程序进行动态在线调试,如果有逻辑错误,则返回到第一步进行修改,直至逻辑错误消除为止。在调试这一类程序时,硬件调试与软件调试是不能完全分开的。许多硬件错误是通过对软件的调试而发现并纠正的。

第四步,将调试完毕的用户程序通过EPROM编程器(也称EPROM写入器)固化在EPROM中。

2.用户样机硬件调试
对用户样机进行调试,首先要进行静态调试,静态调试的目的是排除明显的硬件故障。

(1)静态调试

静态调试工作分为两步。

第一步是在样机加电之前,先用万用表等工具,根据硬件逻辑设计图,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,应特别注意电源系统的检查,以防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其他信号线的短路。

第二步是加电后检查各插件上引脚的电位,仔细测量各点电位是否正常,尤其应注意8031插座的各点电位,若有高压,与仿真器联机调试时将会损坏仿真器的器件。

具体步骤如下:

① 电源检查。

当用户样机板连接或焊接完成之后,先不插主要元器件,通上电源。通常用 + 5V直流电源(这是TTL电源),用万用表电压挡测试各元器件插座上相应电源引脚电压数值是否正确,极性是否符合。如有错误,要及时检查、排除,使每个电源引脚的数值都符合要求。

② 各元器件电源检查。

断开电源,按正确的元器件方向插上元器件。最好是分别插入,分别通电,并逐一检查每个元器件上的电源是否正确,以至最后全部插上元器件,通上电源后,每个元器件上电源正确无误。

③ 检查相应芯片的逻辑关系。

检查相应芯片逻辑关系通常采用静态电平检查法。即在一个芯片信号输入端加入一个相应电平,检查输出电平是否正确。单片机系统大都是数字逻辑电路,使用电平检查法可首先检查出逻辑设计是否正确。选用的元器件是否符合要求,逻辑关系是否匹配,元器件连接关系是否符合要求等。

(2)联机仿真、在线动态调试

在静态调试中,对目标样机硬件进行初步调试,只是排除了一些明显的静态故障。

用户样机中的硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要是靠联机仿真来排除的。

在断电情况下,除8031外,插上所有的元器件,并把仿真器的仿真插头插入样机上8031的插座,然后与开发系统的仿真器连接,分别打开样机和仿真器电源后,便可开始联机仿真调试。

前面已经讲到,硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。所以说,在上面介绍的软件设计过程中的第三步动态在线调试中,也包括联机仿真、硬件在线动态调试以及硬件故障的排除。

开发系统的仿真器是一个与被开发的用户样机具有相同单片机芯片的系统,它是借助开发系统的资源来模拟用户样机的单片机,对用户样机系统的资源(如存储器、I/O接口)进行管理。同时仿真开发机还具有跟踪功能,它可将程序执行过程中的有关数据和状态在屏幕上显示出来,这给查找错误和调试程序带来了方便。同时,其程序运行的断点功能、单步功能可直接发现硬件和软件的问题。

下面介绍在仿真开发机上如何利用简单调试程序检查用户样机电路。

利用仿真开发机对用户样机的硬件检查,常常按其功能及I/O通道分别编写相应简短的实验程序,来检查各部分功能及逻辑是否正确,下面作以简单介绍。

① 检查各地址译码输出

通常,地址译码输出是一个低电平有效信号。因此在选到某一个芯片时(无论是内存还是外设)其片选信号用示波器检查应该是一个负脉冲信号。由于使用的时钟频率不同,其负脉冲的宽度和频率也有所不同。注意在使用示波器测量用户板的某些信号时,要将示波器电源插头上的地线断开,这是由于示波器测量探头一端连到外壳,在有些电源系统中,保护地和电源地连在一起,有时会将电源插座插反,将交流220V直接引到测量端而将用户样机板全部烧毁,并且会殃及开发机。

下面来讨论如何检查地址译码器的输出,例如,一片6116存储芯片地址为2000 ~ 27FFH,则可在开发机上执行如下程序:

LP:    MOV    DPFR,#2000H
MOVX  A,@DPTR
SJMP  LP```
程序执行后,就应该从6116存储器芯片的片选端看到等间隔的一串负脉冲,就说明该芯片片选信号连接是正确的,即使不插入该存储器芯片,只测量插座相应片选引脚也会有上述结果。

用同样的方法,可将各内存及外设接口芯片的片选信号都逐一进行检查。如出现不正确现象,就要检查片选线连线是否正确,有无接触不良或错线、断线的现象。

② 检查RAM存储器

检查RAM存储器可编一程序,将RAM存储器进行写入,再读出,将写入和读出的数据进行比较,如发现错误则立即停止。将存储器芯片插上,执行如下程序:

MOV A,#00H
MOV DFFR,#RAM首地址
LP: MOVX @DPTR,A
MOV R0,A
MOVX A,@DFFR
CLR C
SUBB A,R0
JNZ LPl
INC DPTR
MOV A,R0
INC A
SJMP LP
LPl: 出错停止`
如一片RAM芯片的每个单元都出现问题,则有可能某些控制信号连接不正确,如一片RAM芯片中一个或几个单元出现问题,则有可能这一芯片本身是不好的,可换一片再测试一下。

③ 检查I/O扩展接口

对可编程接口芯片(如8155、8255),要首先对该接口芯片进行初始化,再对其I/O端口进行I/O操作。初始化要按系统设计要求进行,这个初始化程序调试好后就可作为正式编程的相应内容。程序初始化后,就可对其端口进行读写。对开关量I/O来讲,在用户样机板可利用钮子开关和发光二极管进行模拟,也可直接接上驱动板进行检查。一般情况下,用户样机板先调试,驱动板单独进行调试,这样排除故障更方便些。

如用自动程序检查端口状态不易观察时,就可用开发系统的单步功能单步执行程序,检查内部寄存器的有关内容或外部相应信号的状态,以确定开关量输入输出通道连接是否正确。

若外设端口连接一片8255,端口地址为B000 ~ B003H,A口为方式0输入,B口、C口都为方式0输出,则可用下述程序进行检查:

       MOV    DPTR,#0B003H
       MOV    A,#90            ;90H为方式控制字
       MOVX  @DPTR,A
       NOP
       MOV    DPTR,#0B000H
       MOVX   A,@DPTR         ;将A口输入状态读入A,单步执行完此步后,
                                      可暂停,检查PA
                                  ;口外部开关状态同A中相应位状态是否一致
       CLR     C
       MOV    A,#01H
       INC     DPTR
LP:  MOVX   @KPTR,A         ;将01H送B口,此指令执行完后,暂停。看
                B口连接的发光状态
                                  ;二极管状态,第0位是否是高电平
       RLC     A                  ;将1从第0位移到第1位
       JNZ     LP
       INC     DPTR
       RLC     A
LP1:  MOVX  @DPTR,A         ;将01H送C口,此指令执行完后,看C口第0
                                       位的输出状态
       RLC     A
       JNZ     LP1

如使用同步I/O口,例如常用的锁存器和缓冲器,可直接对端口进行读写,不存在初始化过程。

通过上面介绍的开发系统调试用户样机的过程,可以体会到离开了开发系统就根本不可能进行用户样机的调试,而调试的关键步骤——动态在线仿真调试,又完全依赖于开发系统中的在线仿真器。所以说开发系统性能的优劣,主要取决于在线仿真器性能的优劣,在线仿真器所能提供仿真开发的手段,直接影响设计者的设计、调试工作的效率。所以,它对于一个设计者来说,在了解了目前的开发系统的种类和性能之后,选择一个性能/价格比高的开发系统,并能够熟练的使用它调试用户样机是十分重要的。

相关文章
|
14天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
20 1
|
11天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】利用AI辅助工具提高软件测试效率与准确性
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
2天前
|
存储 测试技术 数据库
深入理解自动化测试中的数据驱动方法
【5月更文挑战第7天】 在快速发展的软件行业中,为了提升测试效率和测试覆盖率,自动化测试已经成为一个不可或缺的部分。数据驱动测试(DDT)是一种独特的自动化测试方法,它允许分离测试逻辑和测试数据,从而使得测试案例可以更加灵活和有效地进行管理。本文将探讨数据驱动测试的核心概念、实施步骤及其在实际应用中的优势与挑战。通过对多个案例的分析,我们旨在提供一个全面的指南,帮助软件测试人员理解和运用数据驱动方法以优化他们的自动化测试策略。
|
2天前
|
测试技术 API
探索软件测试中的自动化工具与挑战
本文探讨了软件测试领域中自动化工具的应用与挑战。通过分析目前主流的自动化测试工具,探讨了其在提高测试效率、减少人工成本、增强测试覆盖率等方面的优势。然而,自动化测试也面临着诸如脆弱性、维护成本高等挑战。最后,提出了一些应对挑战的建议,以期为软件测试领域的自动化工作提供一些启示。
10 1
|
7天前
|
机器学习/深度学习 人工智能 测试技术
提升软件测试效率与准确性的策略与工具
【5月更文挑战第2天】 在软件开发生命周期中,测试阶段是确保产品质量的关键。然而,传统的测试方法往往耗时且容易出错。本文将探讨一系列现代软件测试策略和工具,旨在提高测试效率和准确性。我们将分析自动化测试框架、持续集成(CI)、测试驱动开发(TDD)以及人工智能(AI)在测试中的应用,并讨论如何结合这些技术和方法来优化测试流程。
|
8天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
8天前
|
中间件 测试技术 API
探索自动化测试工具的新边界:Selenium与Appium的集成实践
【4月更文挑战第30天】 随着移动应用和Web应用的不断融合,传统的自动化测试工具需要适应新的测试环境。本文将详细分析Selenium和Appium这两款流行的自动化测试工具的集成实践,探讨如何构建一个能够同时支持Web和移动端应用的自动化测试框架。通过对比两者的技术架构、功能特性以及在实际项目中的集成过程,我们旨在为读者提供一个清晰的指导,帮助他们在复杂的应用环境中实现高效、稳定的自动化测试流程。
|
8天前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
|
9天前
|
机器学习/深度学习 人工智能 机器人
深入理解自动化测试:框架、工具与实践
【4月更文挑战第30天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键环节。本文将探讨自动化测试的核心框架、常用工具以及实际应用的最佳实践,旨在为软件测试工程师提供深入的理解和有效的策略,以改进其自动化测试流程。我们将分析几种流行的测试自动化框架,包括Selenium、Appium和JUnit,并讨论如何根据项目需求选择适合的工具。此外,文中还将介绍持续集成(CI)环境下的自动化测试策略,以及如何通过测试结果分析和报告来优化测试过程。目标是帮助读者构建更健壮、更高效的自动化测试系统。
|
9天前
|
IDE 测试技术 持续交付
探索自动化测试工具Selenium的高效应用
【4月更文挑战第29天】 在快速迭代的软件开发过程中,高效的测试策略是确保产品质量的关键。本文将深入探讨如何利用自动化测试工具Selenium来提高软件测试的效率和准确性。通过介绍Selenium的核心功能、脚本编写技巧以及与持续集成环境的集成方法,我们旨在为读者提供一个全面的Selenium应用指南。此外,我们还将讨论常见的问题解决策略,并通过案例分析展示如何有效地运用Selenium进行复杂的Web应用测试。

热门文章

最新文章