文獻(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í)性和可操作性,,從而得到國內(nèi)外的重視,具有良好的發(fā)展前景,。典型的半實(shí)物仿真測(cè)試工具有:德國TechSAT公司的ADS2,,美國Opal-RT公司的RT-LAB,,德國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.