|
|
摘要:叙述嵌入式计算系统在开发阶段、生产环境和现场环境三种情况下的调测技术<BR> 和方法,以及如何在硬件和软件设计中进行可观测性和可测试性设计。</P><P> 关键词:在线测试 可观测性 可测试性 BDM JTAG</P><P> 引言</P><P> 对于含有微处理器的装置来说,调测总是软件和硬件结合的。在产品开发的阶段以排错为<BR> 主,在产品开发后期以及生产和现场运行阶段,则是以测试为主。不同的阶段,调测的内<BR> 容、手段和使用的工具不尽相同。</P><P> 测试接口并不是系统功能的一部分,测试接口设计本身也需要成本。对于小型简单系统来<BR> 说,没有必要也不允许(成本考虑)设计测试接口;对于复杂系统来说,设计测试接口的<BR> 花费是值得的。良好的测试接口设计可经缩短产品的开发周期,给产品维护、维修带来便<BR> 利。</P><P> 对于嵌入式计算系统来说,测试往往是软件和硬件相结合的,既有借助于“正确”的软件<BR> 来测试硬件,也有借助于“正确”的硬件来测试软件。由于软件设计人员和硬件设计人员<BR> 的技术隔膜,二者常常在出现问题后相互指责,难以界定是软件还是硬件问题。对于嵌入<BR> 式系统的软件设计人员<BR> 来说,必须对硬件有足够的了解。这一点,和通用计算平台上的软件设计是不同的;反之<BR> ,硬件人员也必须能够编写一些测试软件,以证明其设计的正确性。</P><P> 1 开发阶段的调制方法</P><P> 1.1 RAM版本的目标系统调试</P><P> 通过ICE(In-Circuit-Emulate)来调试目标板是开发人员最常用的手段。在产品开发初<BR> 期,由于各种软件和硬件问题很多,通过仿真器并结合逻辑分析仪、示波器等硬件信号测<BR> 试工具能够很好地发现问题。</P><P> 在仿真器环境下,通过仿真器的监控软件来控制用户软件的运行,使用断点、单步跟踪和<BR> 查看变量、CPU寄存器、存储器的数值等手段来查找问题。由于仿真器的软件和硬件需要<BR> 一定的CPU资源,用户软件在仿真器环境下运行和脱离仿真器后独立运行是有区别的。好<BR> 的仿真器能够尽量减小这<BR> 种区别。常见的仿真器从技术上区分有:单CPU仿真器、双CPU仿真器和ROM仿真器。</P><P> 在仿真器环境下,程序一般是在仿真器的RAM存储器中运行的,所以这种阶段也称为“RA<BR> M版本的目标系统调试”。</P><P> 1.2 ROM版本的目标系统调试</P><P> 在仿真器环境下,目标板运行调试正确后,一般的做法是将应用程序写入目标板的非易失<BR> 性存储器中,让目标板单独运行。在很多情况下,目标板系统往往不能运行或者运行结果<BR> 和仿真器环境下不一致。而没有连接仿真器,无法观察各种软件状态,给分析问题造成一<BR> 定困难。在目标板上设<BR> 计指示电路有助于发现问题;在电路板上增加1个LED是最简单也是很有效的方法。对于复<BR> 杂系统,可以设计1个数码管显示输出接口,或者设计1个调试用串口,将调试信息发送到<BR> PC机上显示。</P><P> 在使用PC机作为显示输出设备时,一般的做法是使用Winodws自带的超级终端软件,无需<BR> 另外编制程序。和前二种方法相比,该方法的接口信号是双向的,调试者可以通过PC机输<BR> 入信息到目标板中,设定显示信息的类别。这一点,对于复杂系统的调试是很有价值的,<BR> CISCO公司的很多路由器<BR> 产品就使用这种方法来维护和调试。</P><P> 2 生产阶段的测试方法</P><P> 生产阶段的测试只是对硬件电路或者系统进行测试。测试目的是为了对产品或者部件进行<BR> 分检,找出有缺陷的产品。测试内容包括:</P><P> *裸板测试——检查未安装元器件的电路板上的开路和短路缺陷;</P><P> *成品生产缺陷分析——检查已安装元器件的电路板上焊点的短路和开路缺陷;</P><P> *成品电气性能测试——认证每个单元器件的上电运作;</P><P> *产品功能测试——认证电路模块的功能。</P><P> 生产测试和开发阶段的硬件测试不同,需要测试方法快速、能成批测试,易于在制造生产<BR> 线上安装。在生产的不同阶段使用的测试工具和技术也不相同。目前常用的测试工具和技<BR> 术有:人工视觉检查(MVI)、在线测试(ICT)、自动光学测试(AOI)、自动X射线测试<BR> (AXI)。其中人工视 <BR> 醪馐裕∕VI)只能用于小批量试制产品。</P><P> 在线测试(ICT)是最常用的一种线路板测试方法:使用专门的针床与已焊接好的线路板<BR> 上的元器件接触,通过针床在线路板上施加微小电压来测试线路通断、元件是否正确安装<BR> 。由于需要为特定电路板设计专用夹具,适合于单一品种民用型家电线路板极大规模生产<BR> 的测试;缺点是在高密 <BR> 鹊腟MT线路板测试困难。目前的替代解决办法是使用光学方法测试(如AOI,AXI),或者<BR> 使用边界扫描技术(即基于IEEE1394标准的JTAG测试接口)测试。后者需要IC或者线路板<BR> 支持此技术。</P><P> 功能测试是生产过程的最后阶段使用,测试线路板或者系统的功能指标,一般的功能测试<BR> 需要设计专用测试设备和测试软件。</P><P> 3 现场测试技术</P><P> 现场测试分为三种情况:一种是在线测试,测试设备不停止运行;一种是停机测试,被测<BR> 试设备停止运行;第三种为脱机测试,将被测部件从运行现场取出,放到专用的测试装备<BR> 上进行测试。从测试技术角度上说,后二者更容易进行各种测试;对于复杂系统来说,往<BR> 往故障和问题需要在设<BR> 备运行时才能发现和定位,必须进行在线测试。究竟采取哪种方式进行现场测试,取决于<BR> 故障状况和实际应用是否允许立即停机。</P><P> 开发阶段产品和成熟产品的现场测试要求也不同:前者测试目的主要是发现设计中的问题<BR> ,由产品开发人员进行;后者侧重于发现使用中的问题和失效的部件,目的是更换部件,<BR> 由产品使用人员进行。(但测试方法和步骤也有可能是设计人员制定的。)</P><P> 现场测试和试验室测试的最大区别就是测试设备难以安装和连接:线路板封闭在机箱中,<BR> 测试信号线很难引入,即使设备外壳上留有测试插座,测试信号线也需要很长,传统的在<BR> 线仿真器在现场测试中无法使用。另一方面,现场往往没有实验室里的各种测试仪器和设<BR> 备,因此,必须有更好<BR> 的方法和手段来完成测试。</P><P> 嵌入式处理器中目前有很多芯片具有类似Motorola公司683XX系列处理器的BDM调试接<BR> 口(详见第5部分)。这种接口是串行的,处理器内部固化了调试微码,为现场测试 <BR> 带来了方便。对于不具备这种接口的嵌入式计算系统,在系统设计时将关键信号点引出到<BR> 一个测试接口插座上,通过该插座可输入测试激励信号和观察输出信号;对于软件测试,<BR> 可使用前文中所述的ROM板测试方法,外接显示部件来观察程序运行情况。</P><P> 软件现场调试的另外一个要求是程序应能够现场下载,以便在发现问题后能够修改软件。<BR> 现场在线下载程序的方法有两种:一种是使用具有ISP功能的处理(如Philips公司的P89<BR> C51RD系列MCU等),另一种方案是将软件设计成两部分,一部分是应用功能软件,另一部<BR> 分是完成前者下载到系 <BR> 持械南略赝ㄐ湃砑N蘼勰闹址椒ǎ略氐闹骰荘C机。如果需要达到远程调试和下<BR> 载的目的,则要使用后一种方案。例如,在Echelon公司的Lonwork现场总线产品中,每个<BR> 节点中的程序均可以通过网络下载,这种功能为多节点网络系统的现场调试带来了极大方<BR> 便。</P><P> 4 可测试性设计</P><P> 在产品开发初期,产品测试的目的是验证产品设计的正确性,而可测试性部件的存在则能<BR> 加快测试速度,缩短产品开发周期;在生产阶段,通过测试来剔除有缺陷的产品和部件;<BR> 在使用阶段,测试则用于故障定位,找出失效的部件并更换或者维修。可见,产品的测试<BR> 在产品生命周期各阶段<BR> 均有十分重要的作用。可测试性设计应该在产品设计初期就加以考虑,结合测试在不同阶<BR> 段的作用来设计测试模块和接口。</P><P> 产品的可测试性设计要考虑的问题有:测试的目的、测试部件的位置、测试部件的基本要<BR> 素、内置测试部件与外部测试设备仪器之间的电气和机械连接,添加测试部件对被测模块<BR> 功能和性能的影响、测试部件的成本以及何时使用测试功能等。</P><P> 如前所述,测试在产品不同阶段是有差别的。在产品开发阶段,很多参数需要定量和详细<BR> 地进行测试,以验证产品在各种不同情况下是否能正常工作;测试参数,测试点较多,可<BR> 以方便地连接各种外部测试仪器,也不需要考虑添加测试部件所带来的附加成本。在产品<BR> 生产和使用阶段,测试<BR> 的节点和参数数量也相对减少,测试一般是定性的,无需借助于外部设备的自测试,成本<BR> 因素也必须考虑。</P><P> 测试部件一般位于被测部件的接口和边界位置上,如图上所示,用于产品控制被测部件的<BR> 激励信号和采样被测部件的输出信号。测试部件一般由测试信号源、信号传输通道、测试<BR> 观察装置等组成。测试部件可以完全包含在被测部件中,也可部分位于外部(如外接信号<BR> 源和示波器等)。对于<BR> 自动测试,测试部件还包括被测部件的预期输出存储部件比较部分。</P><P> 在一个系统中,如何划分模块,确定测试位置(即模块的边界)是关系到可测试性设计是<BR> 否合理的首要问题。模块间最小相关原则和模块内最小相似原则是两个重要依据:前者保<BR> 证测试可以独立进行,不需要很多其它模块的配合;后者可以使测试能正确反映被测模块<BR> 的大部分工况,不至于<BR> 漏测很多工作状态。</P><P> 很多情况下,从被测模块的边界直接引出信号有困难,测试信号需要经过其它模块引入到<BR> 被测模块上。如果作为信号路径的模块对信号特征没有改变,则称这种测试路径是透明的<BR> ,路径模块必须能在旁路模式和正常工作模式之间切换,实现起来有局限性。对于硬件来<BR> 说,最简单的透明路径<BR> 是使用跳线。</P><P> 对于简单嵌入式系统来说,测试一般包括上电自测试和人为测试。后者在故障出现时进行<BR> 。对于复杂系统来说,还包括定时自动测试,比如在大型程控交换机和飞机机载电子设备<BR> 的运行过程中,均定时进行自检。</P><P> 可测试性设计还应考虑测试功能所使用对象的不同。产品设计人员、产品使用人员和产品<BR> 维护人员对测试内容的要求是同的,需要进行分层次的可测试性设计。</P><P> 对于硬件和系统的可测试性设计已有IEEE1149.1/4/5等标准可以借鉴,对于单纯的软件测<BR> 试,目前尚无具体和统一的标准,只有诸如代码格式分析、白盒测试、黑盒测试、覆盖测<BR> 试等测试方法。软件测试的途径有两个。一是在源代码中增加大量测试代码,使用条件编<BR> 译指令来控制形成调试<BR> 、测试和最终发布等不同版本。调测版本的代码规模要比最终的发布版本大很多,在问题<BR> 解决后,一般将临时性测试代码通过编译开关屏蔽。另外一个软件测试途径是使用专用的<BR> 测试软件(如法国Telelogic公司的LOGISCOPE测试工具),这些测试软件能完成诸如覆盖<BR> 测试、代码格式分析等<BR> 功能,但均是针对特定的语言和操作系统环境,使用上一些限制。</P><P> 还需要说明的就是“可观测”设计的概念。可观测性和可测试性不同,不需要加入激励信<BR> 号,只观察系统运行中某些内部状态,比如软件中某个重要变量的数值变化,硬件电路中<BR> 某个IC引脚的信号电平等。在设计中,应该保留这些观察接口,以便需要时用它来判断和<BR> 分析系统的问题。一个<BR> 可测试的系统,一定是可观测的,反之则不然。设计可测试性系统的目的是为了以后修改<BR> 和改进设计,而使系统具有可观测性则是为了维护系统,判断哪个是出故障的部件,以便<BR> 更换。可测试性设计一般用于新产品,而可观测性设计用于成熟产品。当然,在结构、安<BR> 装条件和成本允许的情<BR> 况下,成熟产品也应具有可测试性。实际上,由于处理器技术和芯片的日新月异,已经不<BR> 存在真正意义上的成熟产品了。</P><P> 在一类产品中的可测试性设计应该具有一致性,例如,用红色LED表示电源状态,所有电<BR> 路板均应采用红色LED,点亮的频率也应该一致。作为企业,应制定相关的测试接口标准<BR> ,并且这些标准应符合行业习惯或者行业标准。</P><P> 5 测试和调试接口标准</P><P> 测试和调试接口标准:JTAG和BDM。</P><P> 5.1 背景调试模式</P><P> 在使用传统的ICE来调试时,使用ICE中的CPU来取代目标板中的CPU,目标板和ICE之间使<BR> 用多芯扁平电缆来连接,而ICE在使用时一般还需要缩主机(一般来PC)来连接。</P><P> 在一些高端微处理器内部已经包含了用于调试的微码,调试时仿真器软件和目标板上的C<BR> PU的调试微码通信,目标板 <BR> 上的CPU无需取出。由于软件调试指令无需经过一段扁平电缆来控制目标板,避免了高频<BR> 操作限制、交流和直流的不匹配以及调试线缆的电阻影响等问题。这种调试模式在Motor<BR> ola公司产品68300系列中被称为背景调试模式BDM(Background Debug <BR> Mode)。在仿真器和目标之间使用8芯(或者10芯)的BDM接口来连接,其他公司的嵌入式<BR> 处理器也有类似功能,不过叫法不同,例如AMD公司在其X86微处理器上提供“AMDebug”<BR> 的调试接口。</P><P> <BR> 实际上,BDM相当于将ICE仿真器软件和硬件内置在处理器,这使得我们直接使用PC机的并<BR> 口来调试软件,不再需要ICE硬件,大大节约了汽油发成本。一些调试器供应商也提供这<BR> 种软件产品(如XRAY)。对于用户来说,为了调试一些特定问题,可以直接使用BDM命令<BR> 来调试目标系统,以弥补<BR> 商业调试软件的不足。</P><P> BDM接口有8根信号线,也有为10根信号线的,如图2所示。调试软件通过4脚使CPU进入背<BR> 景调试模式,调试命令的串行信号则8通过脚输入,同时4脚输入信号步时钟,而CPU中的微<BR> 码在执行命令后会在10脚输出调试结果指示信号。可见,BDM接口引线由并口和PC机相连<BR> ,调试命令则是通过串行<BR> 方式输入的。</P><P> 目前在CPU内置的调试接口和微码方面,各厂家尚无统一标准。处理器厂家、工具开发公<BR> 司和仪器制造商曾于1998年组成了Nexus 5001 Forum(Nexus 5001论坛),成员包括Motor<BR> ola、Infineon <BR> Technologies、日立、ETAS和惠普公司等,正致力于制定一个统一的片上通用调试接口。<BR> 这方面的进一步情况可查阅<img align=absmiddle src=pic/url.gif border=0><a target=_blank href=http://www.nexus-standard.org/> http://www.nexus-standard.org/</a>网站。</P><P> 5.2 边界扫描测试技术和JTAG接口</P><P> 边界扫描测试技术(Boundary-Scan Test <BR> Architecture)属于一种可测试性设计。其基本思想是在芯片引脚和芯片内部逻辑之间(<BR> 即芯片边界位置)增加串行连接的边界扫描测试单元,实现对芯片引脚状态的设定和读取<BR> ,使芯片引脚状态具有可控性和可观测性。</P><P> 边界扫描测试技术最初由各大半导体公司(Philips、IBM、Intel等)成立的联全测试行<BR> 动小组JTAG(Join Test Action <BR> Group)于1988年提出,1990年被IEEE规定为电子产品可测试性设计的标准(IEEE1149.1<BR> /2/3)。目前,该标准已被一些大规模集成电路所采用(如DSP、CPU、FPGA等),而访问<BR> 边界扫描测试电路的接口信号定义标准被称为JTAG接口,很多嵌入式处理器内置了这种测<BR> 试接口。在Cygnal公司 <BR> 腃8051F000系列单片机中和一些FPGA芯片中,JTAG接口不仅能用于测试,也是器件的编程<BR> 接口。</P><P> IEEE1149.1标准支持以下3种测试功能:</P><P> *内部测试——IC内部的逻辑测试;</P><P> *外部测试——IC间相互连接的测试;</P><P> *取样测试——IC正常运行时的数据取样测试。</P><P> 图3给出了具有2个芯片的系统的边界扫描测试原理。</P><P> 图3中,TCK为测试同步时钟输入,TMS为测试模式选中输入,TDI为测试数据输入,TDO为<BR> 测试数据输出,由测试移位寄存器产品。图3中的小方框表示位于芯片外围的边界扫描测<BR> 试逻辑单元,芯片每个引脚信号经过边界扫描单元和内部的功能单元相连接。</P><P> 目前,边界扫描技术的应用主要在数字IC的测试上,这种设计思想也可用于模拟系统、板<BR> 级测试甚至系统测试上。IEEE也制定了和IEEE1149.1相类似的标准IEEE P1149.4(数模混<BR> 合信号测试总线标准)、IEEE 1149.5(电路板测试和维护总线标准)。
|
|
状 态:
离线
公司简介
产品目录
|
|
公司名称:
|
中华工控网
|
联 系 人: |
客服中心
|
电 话: |
0755-26546361
|
传 真: |
0755-26585268 |
地 址: |
深圳市南山区创业路现代城华庭1栋6A |
邮 编: |
518054 |
主 页: |
|
|
|
|
|