張海軍
摘 要:隨著嵌入式系統(tǒng)的廣泛應(yīng)用,如何對其進行仿真測試成為當(dāng)前研究的熱點。ADS2是一套用于在嵌入式實時系統(tǒng)設(shè)計、原型開發(fā)和集成過程中進行仿真和測試的工具。本文首先介紹了ADS2的工作原理,之后詳細說明了如何利用SST、TCL、C語言來進行仿真程序的設(shè)計,并分析了這些方法的各自特點。
關(guān)鍵詞:ADS2;嵌入式軟件測試;仿真程序
嵌入式系統(tǒng)測試不同于傳統(tǒng)的軟件測試,嵌入式系統(tǒng)軟件與硬件緊密結(jié)合,而各類硬件平臺的的巨大差異,不僅在測試技術(shù)上帶來很大困難,而且測試成本更難以保證。ADS2(Avionics Development System)航空電子設(shè)備測試系統(tǒng)是開放的以通用的工業(yè)標準為基礎(chǔ)的分布式實時系統(tǒng),主要用于航空和電子系統(tǒng)領(lǐng)域分布式實時系統(tǒng)的測試、開發(fā)與集成,它具有硬件仿真模擬、數(shù)據(jù)采集分析、部件測試等功能。
1 仿真程序?qū)崿F(xiàn)機制
1.1 硬件結(jié)構(gòu)
ADS2是一套用于在嵌入式實時系統(tǒng)原型設(shè)計、集成和測試過程中進行仿真和測試的系統(tǒng),支持嵌入式系統(tǒng)設(shè)計、調(diào)試、測試全過程。ADS2提供了devSMART bench工具套件來進行系統(tǒng)配置和管理,可以實現(xiàn)數(shù)據(jù)可視化、記錄、重放、仿真、腳本編輯等操作,devSMART bench擁有友好的圖形化界面,具有完全整合的版本控制和打印功能,同時支持Windows和UNIX平臺,可以大大減輕測試人員的工作量,提高測試效率。
1.2 CVT(Current Value Table)
CVT是一個分布式的、實時數(shù)據(jù)庫,存儲著ADS2內(nèi)部的各種數(shù)據(jù)(比如:系統(tǒng)參數(shù)、I/O數(shù)據(jù)、設(shè)備控制參數(shù)等)以及相關(guān)的變量名、缺省值、最大/最小值等數(shù)據(jù)描述。實時內(nèi)核提供訪問CVT變量的方法,所有工具、I/O設(shè)備、外部應(yīng)用程序之間沒有直接的接口,所有ADS2組件的數(shù)據(jù)交換通過CVT變量進行。
1.3 基于幀的調(diào)度和數(shù)據(jù)交換
ADS2中的各種實時處理(如:輸入/輸出處理、數(shù)據(jù)記錄、仿真等),由ADS2 scheduler負責(zé)調(diào)度。ADS2實時處理以幀(Frame)為基本時間單位,在一個幀周期內(nèi):設(shè)備可以進行一次完整的數(shù)據(jù)輸入和輸出;仿真程序可以進行一次輸入變量讀取、計算和結(jié)果輸出;可視化工具可以進行一次CVT變量值讀取等。
1.4 外部編程接口EXAPI(External Application Interface)
ADS2提供了一套完善的外部編程接口EXAPI(External Application Interface),使外部應(yīng)用程序能夠在ADS2中運行,它支持C、TCL、Python語言和MATRIX、Matlab/Simulink第三方工具。EXAPI提供了一種運行外部仿真和測試程序的機制,它包含一個豐富的函數(shù)庫,使外部程序可以訪問CVT表和進行程序調(diào)度,實現(xiàn)部件的仿真、原型開發(fā)和測試。
2 仿真程序設(shè)計方法
2.1 SST(Signal Simulation Tool)信號仿真工具
ADS2提供SST(Signal Simulation Tool)信號仿真工具,用來產(chǎn)生一些簡單的信號源,比如:正余弦、斜坡、脈沖信號等,雖然SST可以通過手工的方式快速定制信號源,但是卻不能對信號進行處理,因此在實際使用使用中受到很大限制。SST可以保存為.sst文件,直接載入RTCore執(zhí)行。
2.2 TCL(Test Control Language)測試控制語言
TCL是ADS2提供的一種解釋型腳本語言,由專門的解釋器翻譯后執(zhí)行,不能實現(xiàn)硬件的實時控制。TCL解釋器可在Unix和Windows工作站上運行,不支持VxWorks實時系統(tǒng),因此TCL腳本程序只能在被配置為RT_WORKSTATION的工作站上解釋執(zhí)行。TCL腳本程序中可以直接引用CVT變量名進行讀寫操作,也可直接使用EXAPI的各種函數(shù)。由于TCL是ADS2內(nèi)部支持的編程語言,使用方便、結(jié)構(gòu)清晰,更利于理解,但它要求具備一定的編程經(jīng)驗,比如多線程、異常處理等。TCL腳本程序可利用devScript Editor進行編輯。
2.3 C仿真程序
C仿真程序的編寫過程如下:
(1)用the devConfig Configuration Editor工具創(chuàng)建CVT文件,添加仿真程序輸入、輸出變量的CVT映射變量,以及CVT變量的具體類型。
(2)用the devConfig Configuration Editor工具創(chuàng)建SID文件,說明哪些CVT變量做為仿真程序的輸入或輸出變量。
(3)編寫C仿真程序。注意:程序中不能直接使用CVT變量名,如CVT變量sine::freq要改成sine_xx_freq,這是ADS2編譯器默認的一種轉(zhuǎn)換。程序中的輸入/出變量類型要和CVT變量類型相匹配。
(4)建立malefile文件。malefile主要有兩個功能:第一、生成.h文件,它包含CVT變量sine::freq和輸入/出變量sine_xx_freq之間轉(zhuǎn)換的宏定義;第二、指明編譯目標文件的格式,如ARCH=PPC目標文件在VxWorks 55系統(tǒng)上執(zhí)行,ARCH=win32目標文件在Windows XP/2000系統(tǒng)上執(zhí)行,ARCH=linux目標文件在linux系統(tǒng)上執(zhí)行等。
(5)用make命令編譯源程序,生成可執(zhí)行程序。Makefile、.c源代碼文件必須在同一目錄下,最后得到.h頭文件和.o或.exe可執(zhí)行文件。
(6)用the devConfig Configuration Editor工具創(chuàng)建CMP文件,添加SID文件和.o或.exe可執(zhí)行文件。
(7)創(chuàng)建工程和會話文件,添加所需的可視化工具,運行仿真程序。
C語言應(yīng)用廣泛,功能強大,VxWorks、Windows、Unix、Linux均支持C仿真程序的運行,因此用C編寫的仿真程序即可在RTCore上運行又可在WorkStation上運行,只是因為不能直接使用CVT變量而要進行宏定義和仿真接口定義。
3 結(jié)語
ADS2為各類嵌入式系統(tǒng)的設(shè)計、原型開發(fā)和集成提供了一種方便、有效的手段,而其對多種編程語言和工具軟件的支持,可以讓測試人員在進行仿真程序設(shè)計時根據(jù)實際需要靈活選擇。如何將ADS2有效地應(yīng)用于武器整備的仿真測試中,這是一件非常有意思的工作,除了本文對仿真程序設(shè)計方法的研究之外,更需要結(jié)合部隊武器裝備的使用情況,對ADS2硬件配置、FIBO(Fault Insertion & Breakout System)、虛擬原型、硬件環(huán)路(hardware-in-the-loop)、操作環(huán)路(man-in-the-loop)等進行深入研究。
參考文獻:
[1]ADS2User Reference manual.
[2]ADS2 Modules Catalog.