关键词: 嵌入式系统;硬件测试;宽带交换机
引言
随着嵌入式系统的发展,迫切需要在嵌入式系统开发阶段对嵌入式系统进行离线测试与分析,以保证系统的软件应用程序、硬件具有兼容性、高可靠性和高可用性,迅速发现并准确定位系统中存在的问题。本文结合上海贝尔阿尔卡特股份有限公司开发的宽带交换系统,讨论离线单板硬件测试方法和系统测试方法。
离线单板硬件测试概述
在宽带交换机系统中,离线测试包括自检测试和一般的离线测试。自检测试是单板初始化完成后为了保证板子的正确运转进行的测试。它主要包括看门狗测试、快速硬件器件测试和下载通路测试。快速硬件测试完成寄存器测试和单板上单个硬件设备测试,其中又包括许多测试项。如果某一测试项测试失败,整个测试就会停止直到看门狗超时重启系统。下载测试是为了保证软件下载功能能正常工作而进行的测试。这项测试主要完成通信接口收发数据测试、中断功能测试。而一般的离线测试是在出厂检验、开发阶段中的检测和维修诊断时对上述的各测试项进行更具体的测试,以定位单板上的出错位置。
看门狗测试
在做任何一项硬件测试之前必须完成看门狗测试。这是因为一项硬件测试失败之后需要重启系统,而硬件测试的失败通常是以看门狗超时为判断条件的。这就需要看门狗在硬件测试时能正常工作。看门狗测试方法是设置并激活一个1秒的看门狗,等待1秒后系统重启。
Flash测试
在Flash中可存放程序,也可以存放数据。在烧录Flash时,可存放预先计算好的checksum值。要测试Flash时,程序重新计算checksum,然后与预先存放的值进行比较。
数据Flash的测试方法有两种。一种是非破坏性的基本测试,主要是checksum测试。另一种是破坏性的扩展测试,包括读写测试和地址/数据总线测试,具体方法与内存测试一致。基本测试可在系统自检时使用,扩展测试可在维修诊断时采用。
内存测试
内存测试可分为三类:
1. 数据总线测试: 将0001循环左移并写入内存,然后读出并比较测试。
2. 内存区测试: 对内存所有存储单元进行读写测试(读写5555H和AAAAH测试)。
3. 地址总线测试:对内存所有存储单元进行地址累加测试。从RAM的基地址起,在每一个存储单元(按照总线宽度)中写入不同的值(递增值),地址递增,直至所有的存储单元都保存不同的内容,然后读出并进行检验。
地址总线测试还可采用快速测试的方法:对0x1地址的内存单元写入地址值0x1,地址值循环左移,依次将相应的地址值写入相应的内存地址,最后检验。
在本文的系统中,自检测试时只包括内存区测试。并且,由于测试时间的限制,只是随机选择内存的一些页面进行读写测试。对于其它的内存测试方法,可以用于出厂检验、开发阶段中的检测和维修诊断。
主控芯片测试
主控芯片测试主要是对主控芯片进行定时器测试、寄存器测试、中断测试和片内RAM测试。寄存器测试是对一些特殊寄存器的功能进行测试,以验证CPU寄存器是否能正常工作。中断测试是人为产生一些硬件中断,检测主控芯片对中断的反应,是否能及时标志中断寄存器的相应标志位。片内内存测试则遵循一般内存测试规则。
PLD/FPGA简单测试
在宽带交换机系统中,较大的FPGA常实现较复杂的功能。在测试时要对相关的功能进行详细的功能测试。而对于其它简单的小型PLD/FPGA则寻求自测的方法,在PLD或FPGA的编制过程中,适当的加入一些自测手段。当主控芯片要测试它们时,设置和读取相应的PLD或FPGA的测试接口,从而获得测试结果。
PCI总线测试
PCI总线常用于连接处理器和各类外设。它提供了一个低时延路径,使处理器能够直接存取任何映射在存储器或I/O地址空间的PCI设备。它还提供一个高带宽路径,允许PCI主设备直接到主存储器存取。测试方法是先测试是否能正确读写PCI配置空间寄存器,然后测试内存映射是否可以在两端正确读写。
嵌入式系统离线测试方法
增量测试模型
在单板测试完成后,系统集成在一起之后有可能仍不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;模块之间的硬件连接不正确也可能造成通信不畅;误差不断积累达到不可接受的程度等等。所以需要通过综合测试来发现各种错误。
如果把所有模块按设计要求一次全部组装起来,然后直接运行系统软件,这称为非增量式集成。这种方法易出现混乱,在改正一个错误时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。增量式集成方法通过测试软件一段一段地扩展,测试的范围一步一步地增大,来逐步定位错误和纠正。根据系统的不同特点可以采用两种增量式集成模型:自底向上集成和自顶向下集成。
宽带机架系统由主控板和其它单板组成,离线系统测试软件采用自顶向下集成的方法。由主控板将各个单板的系统测试程序通过网络下载到目的板,然后主控板通过深度优先策略搜索单板。首先主控板发送消息到直连的单板,如果主控板、单板之间连线正确,且单板硬件及软件工作正常,单板收到消息后将自己的相关信息返回给主控板。接着主控板再通过直连的单板获取下层单板的相关信息,直到获得所有单板的相关信息(位置,单板类型等),然后就可以开始整个系统的综合测试。
综合测试方法
目前大型的嵌入式系统大部分是分布式处理系统,由多个模块协同工作完成复杂的功能,模块之间通过网络互联。一般将整个系统分成3个不同的层次:设备层、系统层和应用层。针对这3个层次,系统的离线综合测试可以通过互通性测试、功能测试和性能测试来进行。
互通性测试
互通性测试包括物理连通性和一致性的测试,确保系统中的各模块之间进行互联时不会出现问题。物理连通性和一致性的测试是最基本的网络系统测试内容,其中主要是线缆测试, 用以查明所测线缆及布线是否符合设计要求和国际标准。在宽带交换机系统中,互通性测试由主控板按照网络连接的层次,依次发送消息给各块PBA单板,等待它们的回复。如果主控板能在规定时间内收到回复,说明从主控板到该单板的网络连线正确。同时,主控板从PBA的回复中也获取了有关单板的相关信息,为下一步的功能测试和性能测试奠定了基础。
功能测试
在整个系统内部的互通性测试完成之后,接着要进行功能测试,目的是检验设备能否完成它应该具备的功能。设备不同,其所要进行的功能测试也相应变化。如果单板硬件工作没有异常,再由主控板启动单板,执行其所具有的特定功能。
性能测试
完成系统设备测试和网络互通性测试之后就可以在系统上加载各种应用。性能测试是综合测试中最高层次的测试内容,主要测试系统对应用的支持水平。性能测试有不同的分类方法。在宽带交换机系统中采用了仿真的方法,在实际的机架环境中,由测试集中的第一块单板主动发送数据包,进行环回测试,主要进行的是数据链路层的测试,包括流量分析、错误数据统计等。
结语
以上介绍了宽带交换机系统中实现单板硬件测试的一些方法和系统离线集成测试模型。在具体的开发中,用这些测试在设计阶段尽早地检查出了设计方面的问题。在维护阶段,这些测试有效地定位了现场发现的问题。这些测试对宽带交换机系统的可靠性起到了非常重要的作用,保证了系统在现场安全稳定的工作。
参考文献
1 PCI Local Bus Specification Revision 2.2 December 18, 1998 Copyright 1992, 1993, 1995, 1998 PCI Special Interest