基于ADS2的嵌入式软件测试仿真程序设计方法研究
2019-06-11张海军
张海军
摘 要:随着嵌入式系统的广泛应用,如何对其进行仿真测试成为当前研究的热点。ADS2是一套用于在嵌入式实时系统设计、原型开发和集成过程中进行仿真和测试的工具。本文首先介绍了ADS2的工作原理,之后详细说明了如何利用SST、TCL、C语言来进行仿真程序的设计,并分析了这些方法的各自特点。
关键词:ADS2;嵌入式软件测试;仿真程序
嵌入式系统测试不同于传统的软件测试,嵌入式系统软件与硬件紧密结合,而各类硬件平台的的巨大差异,不仅在测试技术上带来很大困难,而且测试成本更难以保证。ADS2(Avionics Development System)航空电子设备测试系统是开放的以通用的工业标准为基础的分布式实时系统,主要用于航空和电子系统领域分布式实时系统的测试、开发与集成,它具有硬件仿真模拟、数据采集分析、部件测试等功能。
1 仿真程序实现机制
1.1 硬件结构
ADS2是一套用于在嵌入式实时系统原型设计、集成和测试过程中进行仿真和测试的系统,支持嵌入式系统设计、调试、测试全过程。ADS2提供了devSMART bench工具套件来进行系统配置和管理,可以实现数据可视化、记录、重放、仿真、脚本编辑等操作,devSMART bench拥有友好的图形化界面,具有完全整合的版本控制和打印功能,同时支持Windows和UNIX平台,可以大大减轻测试人员的工作量,提高测试效率。
1.2 CVT(Current Value Table)
CVT是一个分布式的、实时数据库,存储着ADS2内部的各种数据(比如:系统参数、I/O数据、设备控制参数等)以及相关的变量名、缺省值、最大/最小值等数据描述。实时内核提供访问CVT变量的方法,所有工具、I/O设备、外部应用程序之间没有直接的接口,所有ADS2组件的数据交换通过CVT变量进行。
1.3 基于帧的调度和数据交换
ADS2中的各种实时处理(如:输入/输出处理、数据记录、仿真等),由ADS2 scheduler负责调度。ADS2实时处理以帧(Frame)为基本时间单位,在一个帧周期内:设备可以进行一次完整的数据输入和输出;仿真程序可以进行一次输入变量读取、计算和结果输出;可视化工具可以进行一次CVT变量值读取等。
1.4 外部编程接口EXAPI(External Application Interface)
ADS2提供了一套完善的外部编程接口EXAPI(External Application Interface),使外部应用程序能够在ADS2中运行,它支持C、TCL、Python语言和MATRIX、Matlab/Simulink第三方工具。EXAPI提供了一种运行外部仿真和测试程序的机制,它包含一个丰富的函数库,使外部程序可以访问CVT表和进行程序调度,实现部件的仿真、原型开发和测试。
2 仿真程序设计方法
2.1 SST(Signal Simulation Tool)信号仿真工具
ADS2提供SST(Signal Simulation Tool)信号仿真工具,用来产生一些简单的信号源,比如:正余弦、斜坡、脉冲信号等,雖然SST可以通过手工的方式快速定制信号源,但是却不能对信号进行处理,因此在实际使用使用中受到很大限制。SST可以保存为.sst文件,直接载入RTCore执行。
2.2 TCL(Test Control Language)测试控制语言
TCL是ADS2提供的一种解释型脚本语言,由专门的解释器翻译后执行,不能实现硬件的实时控制。TCL解释器可在Unix和Windows工作站上运行,不支持VxWorks实时系统,因此TCL脚本程序只能在被配置为RT_WORKSTATION的工作站上解释执行。TCL脚本程序中可以直接引用CVT变量名进行读写操作,也可直接使用EXAPI的各种函数。由于TCL是ADS2内部支持的编程语言,使用方便、结构清晰,更利于理解,但它要求具备一定的编程经验,比如多线程、异常处理等。TCL脚本程序可利用devScript Editor进行编辑。
2.3 C仿真程序
C仿真程序的编写过程如下:
(1)用the devConfig Configuration Editor工具创建CVT文件,添加仿真程序输入、输出变量的CVT映射变量,以及CVT变量的具体类型。
(2)用the devConfig Configuration Editor工具创建SID文件,说明哪些CVT变量做为仿真程序的输入或输出变量。
(3)编写C仿真程序。注意:程序中不能直接使用CVT变量名,如CVT变量sine::freq要改成sine_xx_freq,这是ADS2编译器默认的一种转换。程序中的输入/出变量类型要和CVT变量类型相匹配。
(4)建立malefile文件。malefile主要有两个功能:第一、生成.h文件,它包含CVT变量sine::freq和输入/出变量sine_xx_freq之间转换的宏定义;第二、指明编译目标文件的格式,如ARCH=PPC目标文件在VxWorks 55系统上执行,ARCH=win32目标文件在Windows XP/2000系统上执行,ARCH=linux目标文件在linux系统上执行等。
(5)用make命令编译源程序,生成可执行程序。Makefile、.c源代码文件必须在同一目录下,最后得到.h头文件和.o或.exe可执行文件。
(6)用the devConfig Configuration Editor工具创建CMP文件,添加SID文件和.o或.exe可执行文件。
(7)创建工程和会话文件,添加所需的可视化工具,运行仿真程序。
C语言应用广泛,功能强大,VxWorks、Windows、Unix、Linux均支持C仿真程序的运行,因此用C编写的仿真程序即可在RTCore上运行又可在WorkStation上运行,只是因为不能直接使用CVT变量而要进行宏定义和仿真接口定义。
3 结语
ADS2为各类嵌入式系统的设计、原型开发和集成提供了一种方便、有效的手段,而其对多种编程语言和工具软件的支持,可以让测试人员在进行仿真程序设计时根据实际需要灵活选择。如何将ADS2有效地应用于武器整备的仿真测试中,这是一件非常有意思的工作,除了本文对仿真程序设计方法的研究之外,更需要结合部队武器装备的使用情况,对ADS2硬件配置、FIBO(Fault Insertion & Breakout System)、虚拟原型、硬件环路(hardware-in-the-loop)、操作环路(man-in-the-loop)等进行深入研究。
参考文献:
[1]ADS2User Reference manual.
[2]ADS2 Modules Catalog.