文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)06-0017-03
軟件測(cè)試是保證軟件質(zhì)量和可靠性的重要手段。但由于嵌入式軟件的嵌入性、實(shí)時(shí)性、反應(yīng)性等特點(diǎn)[1],使其測(cè)試變得非常困難。實(shí)踐證明,仿真測(cè)試是發(fā)現(xiàn)嵌入式軟件缺陷、提高其可靠性的一種非常有效的方法。
嵌入式軟件仿真測(cè)試先后發(fā)展起來三種主要方案:全實(shí)物仿真測(cè)試環(huán)境、全數(shù)字仿真測(cè)試環(huán)境、半實(shí)物仿真測(cè)試環(huán)境[2-3]。半實(shí)物仿真測(cè)試能夠逼真地模擬、組織被測(cè)軟件運(yùn)行所需的真實(shí)物理環(huán)境輸入信號(hào),驅(qū)動(dòng)被測(cè)軟件運(yùn)行,同時(shí)接收被測(cè)軟件的輸出結(jié)果,對(duì)被測(cè)軟件進(jìn)行自動(dòng)、實(shí)時(shí)、非侵入性的閉環(huán)測(cè)試。由于半實(shí)物仿真解決方案能夠較好地兼顧真實(shí)性和可操作性,從而得到國(guó)內(nèi)外的重視,具有良好的發(fā)展前景。典型的半實(shí)物仿真測(cè)試工具有:德國(guó)TechSAT公司的ADS2,美國(guó)Opal-RT公司的RT-LAB,德國(guó)dSPACE公司的dSPACE等。
1 ADS2測(cè)試環(huán)境體系結(jié)構(gòu)
1.1 硬件體系結(jié)構(gòu)
ADS2(Avionics Development System/2nd Generation)硬件包括實(shí)時(shí)主機(jī)、工作站、接線矩陣、故障注入單元FIBO(Fault Insertion & Break-Out Unit)、外部設(shè)備和被測(cè)件等,如圖1所示[4]。
ADS2實(shí)時(shí)主機(jī)為VxWorks實(shí)時(shí)系統(tǒng),底層采用VME總線,通過不同的VME接口轉(zhuǎn)換板實(shí)現(xiàn)CPU板與不同接口之間的連接。接線矩陣用來實(shí)現(xiàn)對(duì)系統(tǒng)I/O信號(hào)的連接和切換;故障注入單元用來模擬實(shí)際系統(tǒng)中信號(hào)可能產(chǎn)生的故障現(xiàn)象;外部設(shè)備是與被測(cè)件交互的真實(shí)設(shè)備,可連接多個(gè);工作站是用戶進(jìn)行測(cè)試管理、配置、執(zhí)行的終端,可以有多個(gè)工作站分別執(zhí)行不同的任務(wù)。
1.2 軟件體系結(jié)構(gòu)
ADS2軟件包括用戶工具套件devSMART bench、實(shí)時(shí)內(nèi)核VxWorks、仿真模型、接口驅(qū)動(dòng)程序等[5],如圖2所示。
用戶工具套件用來實(shí)現(xiàn)測(cè)試場(chǎng)景管理、系統(tǒng)配置、變量觀察和數(shù)據(jù)記錄、腳本編輯、仿真建模等。
用戶開發(fā)接口devExchange提供了一種運(yùn)行仿真模型的機(jī)制,能夠使其運(yùn)行于非實(shí)時(shí)的工作站或?qū)崟r(shí)主機(jī)上。
2 仿真建模實(shí)現(xiàn)原理
仿真建模必須滿足通用化、實(shí)時(shí)性的基本要求[6],才能快速構(gòu)建測(cè)試環(huán)境,有效進(jìn)行嵌入式軟件測(cè)試。
2.1 仿真建模的通用化
嵌入式軟件外部設(shè)備的I/O接口類型和實(shí)現(xiàn)功能差異很大,這就要求在仿真建模時(shí)要有很大的靈活性,能夠支持不同I/O接口類型,快速實(shí)現(xiàn)各種功能算法。
基于CVT(Current Value Table)數(shù)據(jù)庫進(jìn)行內(nèi)部數(shù)據(jù)交換是ADS2仿真建模通用化的核心技術(shù)。CVT是一個(gè)分布式的實(shí)時(shí)數(shù)據(jù)庫,存儲(chǔ)著ADS2內(nèi)部的各種I/O數(shù)據(jù)及其相關(guān)的變量名、缺省值、最大/最小值等數(shù)據(jù)描述。實(shí)時(shí)內(nèi)核提供訪問CVT變量的方法,ADS2內(nèi)部所有被測(cè)件、真實(shí)交聯(lián)設(shè)備、仿真模型、信號(hào)仿真工具、數(shù)據(jù)顯示記錄工具等之間沒有直接的接口,均以CVT為核心進(jìn)行數(shù)據(jù)交換,如圖3所示。其中,仿真模型、信號(hào)仿真工具中的輸入輸出數(shù)據(jù)與CVT變量之間的對(duì)應(yīng)關(guān)系在仿真接口文檔中進(jìn)行配置;被測(cè)件、真實(shí)交聯(lián)設(shè)備的I/O接口數(shù)據(jù)與CVT變量之間的對(duì)應(yīng)關(guān)系在硬件接口映像文件中進(jìn)行設(shè)置;數(shù)據(jù)顯示記錄工具直接訪問CVT變量。
ADS2仿真建模的通用性主要體現(xiàn)在以下幾方面:
(1)支持多種I/O接口類型。ADS2支持接口控制文檔ICD(Interface Control Document)數(shù)據(jù)庫,可根據(jù)每個(gè)交聯(lián)設(shè)備的ICD配置相應(yīng)的IOM文件,支持多種I/O接口類型,如數(shù)字I/O、模擬I/O、RS-232、RS-422、ARINC429、MIL-STD-1553、CAN以及非標(biāo)信號(hào)等。
(2)以CVT數(shù)據(jù)庫為核心進(jìn)行數(shù)據(jù)交換,使硬件I/O接口與仿真模型算法有效隔離,這樣在仿真建模時(shí)不需要關(guān)心硬件接口類型,而專注于軟件功能算法的實(shí)現(xiàn)。
(3)利用MATRIX、Matlab/Simulink等第三方工具,能夠?qū)崿F(xiàn)復(fù)雜算法的仿真模型。
(4)在測(cè)試中,只需修改配置文件,就可實(shí)現(xiàn)真實(shí)交聯(lián)設(shè)備與仿真模型之間的切換,快速構(gòu)建各種測(cè)試場(chǎng)景。
ADS2在仿真建模通用化方面存在不足之處:仿真模型一旦開發(fā)、編譯完成之后,仿真參數(shù)值不能修改,而在實(shí)際測(cè)試中,經(jīng)常需要輸入不同參數(shù)值的多個(gè)用例進(jìn)行測(cè)試,頻繁地編譯仿真模型很不方便。
2.2 仿真建模的實(shí)時(shí)性
對(duì)于嵌入式軟件測(cè)試,仿真模型的實(shí)時(shí)性是最關(guān)鍵的問題之一。影響仿真模型實(shí)時(shí)性的主要因素有以下幾點(diǎn):
(1)操作系統(tǒng)
ADS2實(shí)時(shí)主機(jī)采用VxWorks嵌入式操作系統(tǒng)。VxWorks具有良好的可靠性和卓越的實(shí)時(shí)性,保證了能在限定的時(shí)間內(nèi)執(zhí)行完仿真計(jì)算,并能及時(shí)對(duì)任務(wù)進(jìn)行調(diào)度和響應(yīng)外部事件。
(2)調(diào)度策略
ADS2調(diào)度策略采用時(shí)間驅(qū)動(dòng)模型,VxWorks實(shí)時(shí)內(nèi)核以幀為基本時(shí)間單位,對(duì)各任務(wù)進(jìn)行統(tǒng)一調(diào)度。在一個(gè)幀周期內(nèi):I/O設(shè)備可以進(jìn)行一次完整的數(shù)據(jù)輸入或輸出;仿真模型可以進(jìn)行一次輸入變量讀取、計(jì)算和結(jié)果輸出;可視化工具可以進(jìn)行一次CVT變量值讀取等。
(3)仿真周期
ADS2每一個(gè)仿真幀中包含許多基本幀,基本幀的幀速度、幀數(shù)等可由用戶設(shè)定。仿真程序既可在實(shí)時(shí)內(nèi)核上運(yùn)行也可在工作站上運(yùn)行,運(yùn)行于工作站的非實(shí)時(shí)仿真程序采用環(huán)路連接(TCP/IP),運(yùn)行于實(shí)時(shí)主機(jī)的實(shí)時(shí)仿真程序采用直接連接(VME、共享內(nèi)存、反射內(nèi)存)。直接連接方式下,可以支持很短的幀間隔,典型間隔時(shí)間為5 ms,最小可為1 ms。
3 仿真建模方法研究
對(duì)嵌入式軟件進(jìn)行仿真測(cè)試時(shí),通常需要兩種類型的仿真模型:數(shù)據(jù)源模型和交聯(lián)設(shè)備模型[7]。數(shù)據(jù)源模型為被測(cè)軟件的正常運(yùn)行提供所需的激勵(lì)信號(hào)數(shù)據(jù),建模時(shí)要重點(diǎn)考慮激勵(lì)信號(hào)的數(shù)據(jù)類型、時(shí)序控制等;而交聯(lián)設(shè)備模型是對(duì)與被測(cè)件有數(shù)據(jù)交互關(guān)系的外部設(shè)備進(jìn)行建模,建模時(shí)要重點(diǎn)考慮交聯(lián)設(shè)備功能的內(nèi)部算法實(shí)現(xiàn)。
3.1 數(shù)據(jù)源模型建模方法
ADS2提供的信號(hào)仿真工具SST(Signal Simulation Tool)擁有良好的圖形化編輯界面,可以圖形定義測(cè)試時(shí)序,使用方便、直觀,能夠用來快速編輯、產(chǎn)生多種類型的信號(hào)源數(shù)據(jù),如正余弦、斜坡、脈沖信號(hào)和用戶自定義波形等,并可檢查預(yù)期行為。
3.2 交聯(lián)設(shè)備模型建模方法
交聯(lián)設(shè)備模型重點(diǎn)在于功能算法的實(shí)現(xiàn),ADS2提供了2種方法。
3.2.1 手工編寫仿真模型
針對(duì)不同功能的交聯(lián)設(shè)備仿真測(cè)試,ADS2提供了用戶開發(fā)接口devExchange用來連接外部仿真模型。devExchange提供了一種運(yùn)行仿真程序的機(jī)制,用戶可以采用C、Fortran、Ada等編程語言進(jìn)行仿真模型的編寫。
手工編寫仿真模型的過程如下:
(1)創(chuàng)建測(cè)試場(chǎng)景工程文件;
(2)配置基本幀數(shù)、幀速度等系統(tǒng)參數(shù);
(3)利用配置管理工具創(chuàng)建CVT文件,添加需要的CVT變量;
(4)硬件接口連接,在I/O映射文檔中,將接口數(shù)據(jù)映射到輸入和輸出CVT變量;
(5)利用配置管理工具創(chuàng)建仿真接口定義SID文件,建立CVT變量與仿真模型中輸入或輸出變量的對(duì)應(yīng)關(guān)系;
(6)按照ADS2格式編寫仿真模型源代碼,模型中使用的仿真輸入或輸出變量要與SID文件中定義的一致;
(7)編輯malefile文件,指明編譯目標(biāo)文件的格式,如:ARCH=PPC表示在VxWorks 55系統(tǒng)上執(zhí)行,ARCH=win32表示在Windows XP/2000系統(tǒng)上執(zhí)行等;
(8)利用make命令編譯仿真模型源代碼,生成目標(biāo)程序;
(9)添加SID文件和目標(biāo)程序文件;
(10)設(shè)計(jì)并添加數(shù)據(jù)顯示記錄組件,如數(shù)據(jù)觀察面板、數(shù)據(jù)記錄器等;
(11)執(zhí)行測(cè)試場(chǎng)景。
3.2.2 第三方仿真建模工具實(shí)現(xiàn)
ADS2提供的用戶開發(fā)接口devExchange也支持MATRIX、Matlab/Simulink等第三方建模工具,實(shí)現(xiàn)復(fù)雜算法仿真模型的快速開發(fā)。
利用Matlab進(jìn)行ADS2實(shí)時(shí)仿真模型開發(fā)的基本方法為:利用Simulink以及控制、通信、魯棒等工具箱進(jìn)行仿真模型開發(fā)[8];設(shè)置RTW(Real-Time Workshop)編譯參數(shù),系統(tǒng)目標(biāo)文件選擇為“Generic Real-Time Target”,“template makefile”為ADS2專用的grt_ads2_vxworks.tmf;編譯生成目標(biāo)程序。
4 ADS2仿真測(cè)試實(shí)例
利用ADS2構(gòu)建半實(shí)物仿真測(cè)試環(huán)境,對(duì)某型DSP處理板進(jìn)行了測(cè)試,測(cè)試環(huán)境如圖4所示。DSP程序從ADC接口讀取輸入波形數(shù)據(jù),經(jīng)過處理后將結(jié)果數(shù)據(jù)從DAC接口輸出;DSP程序通過RS232接口從控制臺(tái)仿真器接收工作模式等控制命令。
測(cè)試時(shí),在工作站上設(shè)計(jì)數(shù)據(jù)面板和數(shù)據(jù)記錄器查看、記錄輸入數(shù)據(jù)和輸出數(shù)據(jù),判斷程序功能實(shí)現(xiàn)是否正確;利用c語言編寫仿真模型產(chǎn)生輸入波形數(shù)據(jù),仿真模型編譯生成目標(biāo)程序后載入ADS2主機(jī)實(shí)時(shí)運(yùn)行,它能夠根據(jù)測(cè)試數(shù)據(jù)面板中手工輸入的波形時(shí)間間隔參數(shù)產(chǎn)生不同的輸入波形;編寫能夠產(chǎn)生大數(shù)據(jù)量的仿真模型,對(duì)程序處理速度性能指標(biāo)進(jìn)行測(cè)試;利用仿真模型產(chǎn)生各種異常輸入數(shù)據(jù),對(duì)程序接口的冗錯(cuò)能力進(jìn)行測(cè)試。
測(cè)試中發(fā)現(xiàn),被測(cè)軟件存在功能實(shí)現(xiàn)與設(shè)計(jì)需求不一致、對(duì)一些異常輸入未進(jìn)行冗錯(cuò)處理而導(dǎo)致程序崩潰等問題,經(jīng)回歸測(cè)試所有發(fā)現(xiàn)問題均關(guān)閉,有效提高了軟件的質(zhì)量和可靠性。
本文采用半實(shí)物仿真技術(shù),將被測(cè)軟件的外部設(shè)備數(shù)字化來進(jìn)行嵌入式軟件測(cè)試,不需要消耗時(shí)間和精力去連接、調(diào)試真實(shí)設(shè)備,避免了設(shè)備在測(cè)試使用中的損耗和意外損壞,降低了測(cè)試成本,加快了測(cè)試環(huán)境構(gòu)建過程。另外,采用仿真模型不但可以進(jìn)行長(zhǎng)時(shí)間連續(xù)測(cè)試,而且可以仿真某些特殊的故障現(xiàn)象、危險(xiǎn)條件、超負(fù)荷狀態(tài)等,有效拓寬了軟件測(cè)試范圍。ADS2能夠滿足嵌入式軟件仿真測(cè)試的通用化、實(shí)時(shí)性要求,有效支持?jǐn)?shù)據(jù)源、交聯(lián)設(shè)備等多種仿真模型的設(shè)計(jì)開發(fā),為嵌入式軟件測(cè)試提供了一種方便、有效的手段。
參考文獻(xiàn)
[1] 孫昌愛,靳若明,劉超,等.實(shí)時(shí)嵌入式軟件的測(cè)試技術(shù)[J].小型微型計(jì)算機(jī)系統(tǒng),2000,21(9):920-940.
[2] 康一梅,張永革.嵌入式軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2008.
[3] 蔡建平.嵌入式軟件測(cè)試實(shí)用技術(shù)[M].北京:清華大學(xué)出版社,2010.
[4] TechSAT GmbH.ADS2模塊目錄(B3版)[Z].2002.
[5] TechSAT GmbH.ADS2用戶參考手冊(cè)(C1版)[Z].2003.
[6] 張虹,阮鐮,劉斌.嵌入式軟件測(cè)試中的仿真建模方法研究[J].測(cè)控技術(shù),2002,21(3):37-38,42.
[7] 蔣崇武,楊順昆,劉斌.面向嵌入式軟件測(cè)試的仿真建模[J].計(jì)算機(jī)工程,2008,34(4):87-89.
[8] 卓金武.MATLAB在數(shù)學(xué)建模中的應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2011.