实时嵌入式产品的测试系统设计
2010-06-25叶永鑫丁晓明
叶永鑫,丁晓明
(北京交通大学,北京 100044)
引 言
嵌入式系统是以应用为中心,以计算机技术为基础,能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。它是先进的计算机技术、半导体技术以及电子技术与各个行业的具体应用相结合的产物。在一些特定领域,它被要求能够实时响应外部的请求并处理相应的计算,最后把结果及时地反馈给用户或者外设。
随着嵌入式应用领域的迅速扩大,人们对嵌入式软件质量提出了更高的要求,如何对日益复杂的嵌入式软件进行快速有效的测试成了目前的关注热点。
1 设计原理
1.1 系统需求
图1 原系统架构
本文采用的被测试嵌入式系统如图1所示,是一套运行有飞行控制软件的嵌入式系统。它需要对飞行的姿态、轨迹做出计算,并通过总线的方式与舵机、发动机、导引头、惯性测量单元进行交互。测试的对象为该嵌入式平台上运行的飞行控制软件,其余的外设由测试系统仿真实现。本文主要讨论测试系统的设计与实现。嵌入式系统所使用的核心器件是DSP芯片,它拥有多种接口,有1路A/D、1路D/A、8路开关量、2路串行422接口、2路串行485接口。通过各种接口的通信完成要求的功能。系统运行后将长时间处于每隔5 ms与外设完成1次交互的状态,其中1次交互包括2次请求收发数据(状态和控制数据)、传输所有开关量、A/D的数据。
图2 测试系统架构
测试系统具体要求如下:首先,由工控机(由测试系统模拟,如图2所示)发送装订参数给嵌入式设备;接着,嵌入式设备根据装订参数进行初始化,并处于等待命令状态;工控机发送开始运行命令给嵌入式设备;嵌入式设备收到开始命令后,进入周期循环状态。
周期循环状态:
①嵌入式系统会向外部1号设备(由测试系统模拟)请求外设1控制数据,外部1号设备需要在2 ms内把数据发送给嵌入式系统。
②嵌入式系统会向外部2号设备(由测试系统模拟)请求外设2控制数据,外部2号设备需要在2 ms内把数据发送给嵌入式系统。
③上位机(由测试系统模拟)需要在发送完外设2的控制数据后的1 ms完成对嵌入式系统相关数据的采集。整个循环周期要求严格控制在5 ms以内。
通信流程如图3所示。
图3 通信流程
1.2 设计思想
设计一套能够符合需求要求的测试系统,对于测试系统有5点要求:第一,能够及时响应DSP以中断方式的数据请求;第二,有足够的性能解析数据,发送数据;第三,拥有良好的人机交互界面;第四,能够管理测试过的用例及结果;第五,能够灵活地增加故障,如通信故障、指令故障、数据故障。
较高实时性的要求使得在设计测试系统时大大增加了系统的复杂度和限制了可用的解决方案。Windows是一种分时操作系统,处理中断的能力不是很稳定,有时候将不能满足嵌入式系统要求的条件。另外,分时操作系统定时器精度差,漂移现象严重,存在隐含的不确定的线程调度机制。但是这里需要Windows操作系统上的一些高级特性,如功能强大的图形化接口(GUI)支持,支持多种开发工具及应用程序,众多廉价的第三方硬件及驱动的支持,丰富的Win32应用程序接口。
RTX(Real-time Extension for Control of Windows),是向Windows平台加入了一个实时扩展子系统(RTSS)。它独立的基于抢占式的RTX线程调度机制允许RTSS线程优先于所有的Windows线程和中断,持续中断响应频率30 k Hz以上,最大IST处理延迟不超过16μs;提供高速准确的实时时间响应,定时器最小周期为100μs,时钟最小分辨率为100 ns。特别适合于飞行模拟器、复杂视频监控系统、视频图像处理、转台、机器人、导弹发射装置、火炮等典型的既有图形又要求实时的控制伺服系统。它是一种基于Windows平台的硬实时解决方案。Windows处理人机接口等通用GUI任务,实时扩展子系统用于进行实时控制和实时的数据采集,它们之间的数据传递机制通过进程间通信的方式,应用共享内存、信号量等机制实现。
综上考虑,给出两种设计方案。
2 设计方案
2.1 Windows+RTX(工控机+接口卡)
Windows+RTX方案如图4所示,此种设计方案软件部分分为3层。
图4 工控机+接口卡结构图
Windows用户界面层。在Windows操作系统上开发部分软件,负责数据库的管理、用例的添加、运行结果的保存,提供一套优秀界面呈现给用户。
RTX逻辑控制层。主要负责用例运行,实时地与被测系统交互,满足被测系统相关数据的请求,保存被测系统发出的状态数据。
外设驱动层。为了满足对系统100%的测试,还需要有测试系统与被测系统之间的通信接口卡。从硬件划分包括1台工控机、2块ISA总线RS422通信卡、2块PCI总线RS485通信卡、1块A/D卡、开关量采集卡、D/A卡。这些硬件板卡通过ISA、PCI总线的方式连接到测试平台里,测试平台管理所有板卡的驱动程序,使其与被测系统形成闭环。
这样,3层的软件结构就能够顺利地运行用例,实现对系统的完整的功能测试。
2.2 Windows+Verilog(工控机+FPGA板卡+接口芯片)
第2套方案使用的是Windows+Verilog,如图5所示。在这种方案中,使用FPGA来管理各个接口,并通过PCI总线与工控机通信。PCI总线能够把各种接口的数据上传到工控机,同时把工控机的数据下载到被测试系统上。
图5 工控机+FPGA板卡+接口芯片结构图
系统也是3层结构,上两层与第1种方案基本一样,但在外设驱动层上不再是从多块板卡之间取数送数,而是单一地与FPGA板卡通过制定好的协议进行通信,而后的接口芯片采集、编码等工作都交给FPGA完成。
3 方案比较
3.1 两种方案优缺点比较
表1详细比较了上述2套方案的优缺点。第2种设计方案中,因为有了FPGA器件,使得原来考虑不周的设计可以只重新配置硬件就得以修改,减少重新制版的周期、经费等一系列不确定因素,达到更广泛的测试目的。
表1 多张板卡与单一板卡比较
3.2 不同操作系统优缺点比较
此外,方案的实行也可以考虑在工控机上直接运行一些实时操作系统,如DOS、VxWorks等等。DOS是单任务实时系统,人机交互界面差,没有网络功能。表2比较了Windows+RTX和VxWorks两种方案的优缺点。
表2 Windows+RTX和 VxWorks比较
4 用例管理软件设计
在软件上层,需要设计出带有数据库的用例管理系统,它需要管理用例的定义、简介、组别、运行时间、过程数据、结果数据,并能够作用例回归测试的用例管理层。用例运行前需要收集用户输入的各种参数,并从相应的文件位置提前把相关数据读取到内存里,提前准备数据。用例运行时,RTX层会有相应的CPU空闲时间,而用例管理层会利用这段时间进行运行状态的显示。用例运行结束后,相应的标志位会被置位,用例管理层读到相应的状态后会主动向RTX层索要运行的各种数据和结果,并把相应的数据存入数据库,写入日志,并呈现到界面上。
结 语
试验证明,上述设计的测试系统在整机联调过程中运行状态良好,符合对系统各个模块功能全面测试的要求。
本文针对目前嵌入式系统测试这一热点问题,提出了1种实时嵌入式软件的测试系统的结构框架,并且按照这个思路实现了对黑盒(功能)测试的测试系统。下一步工作就是开发1个嵌入式软件的通用测试平台,能够同时对多种型号、多种接口的嵌入式系统进行测试。
此方案也适用于视频图像处理、视频监控系统。
[1]康一梅,张永革,李志军,等.嵌入式软件测试[M].北京:机械工业出版社,2008.
[2]朱少民.软件质量保证和管理[M].北京:清华大学出版社,2007.