付強 陳溦
摘要
機載軟件仿真驗證環(huán)境是機載軟件前期驗證過程中非常有效且常用的發(fā)現(xiàn)軟件問題和設(shè)計問題的手段。通過分析接口控制文檔(ICD)對應(yīng)的配置文件,并結(jié)合數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控功能模塊的需求,提出了一種能夠自動生成仿真驗證環(huán)境中數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控的方法,實現(xiàn)了根據(jù)配置文件自動完成應(yīng)用層數(shù)據(jù)和底層網(wǎng)絡(luò)數(shù)據(jù)的雙向轉(zhuǎn)換,并在此功能基礎(chǔ)上生成對應(yīng)的數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控功能模塊,有效地支持了仿真驗證環(huán)境的構(gòu)建。
【關(guān)鍵詞】ICD 數(shù)據(jù)激勵 數(shù)據(jù)監(jiān)控 自動化生成
在機載軟件前期研制過程中,為了能夠發(fā)現(xiàn)軟件設(shè)計和開發(fā)階段存在的問題,經(jīng)常會搭建仿真驗證環(huán)境預(yù)先驗證軟件功能的正確性,為后期基于機載硬件平臺的系統(tǒng)級交聯(lián)試驗提供功能級的保證,并降低系統(tǒng)交聯(lián)過程中功能性問題的驗證成本,提高系統(tǒng)驗證效率。而數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控功能作為仿真驗證環(huán)境的關(guān)鍵功能,為了能夠支持應(yīng)用軟件的功能驗證,往往需要根據(jù)現(xiàn)有的接口控制文檔(ICD)開發(fā)對應(yīng)的數(shù)據(jù)激勵器和數(shù)據(jù)監(jiān)控工具,為仿真驗證環(huán)境的構(gòu)建增加了工作時間。此外,ICD的變更會導(dǎo)致數(shù)據(jù)激勵器和數(shù)據(jù)監(jiān)控工具的更改,也增加了仿真驗證環(huán)境維護(hù)成本。
本文在充分分析現(xiàn)有ICD配置文件的基礎(chǔ)上,提出了一種能夠自動生成仿真驗證環(huán)境中數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控功能模塊的方法。
1 ICD應(yīng)用數(shù)據(jù)自動轉(zhuǎn)換
ICD數(shù)據(jù)與應(yīng)用數(shù)據(jù)轉(zhuǎn)換功能主要實現(xiàn)底層ICD格式數(shù)據(jù)與應(yīng)用數(shù)據(jù)的相互轉(zhuǎn)換,自動完成數(shù)據(jù)塊、信號量、數(shù)據(jù)位域的解析。數(shù)據(jù)激勵模塊中的發(fā)送數(shù)據(jù)轉(zhuǎn)換功能、數(shù)據(jù)監(jiān)控模塊中的接收數(shù)據(jù)轉(zhuǎn)換功能,都需要依賴于該功能庫。如圖1所示。
初始化過程中根據(jù)ICD配置信息,在內(nèi)存中創(chuàng)建對應(yīng)ICD配置的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)定義如圖1所示,ICD列表數(shù)據(jù)結(jié)構(gòu)中,每一條ICD數(shù)據(jù)塊包含標(biāo)識號、ICD的描述信息和待轉(zhuǎn)換類型的描述信息,每個數(shù)據(jù)塊描述包含若干條信號量描述,每條信號量描述包含若干位域描述。如圖2所示,參考機載網(wǎng)絡(luò)中ICD定義的消息塊、信號量、數(shù)據(jù)域的層級定義方式,在對消息塊的解析過程中,創(chuàng)建多級緩存,按照非結(jié)構(gòu)化數(shù)據(jù)格式配置文件中定義的數(shù)據(jù)條目順序,順次解析條目化的數(shù)據(jù)配置信息項,解析過程中同步更新解析完成的數(shù)據(jù)格式緩存區(qū),并在應(yīng)用層內(nèi)存中創(chuàng)建與非結(jié)構(gòu)化數(shù)據(jù)格式配置對應(yīng)的結(jié)構(gòu)化數(shù)據(jù)格式。
ICD數(shù)據(jù)到應(yīng)用數(shù)據(jù)的轉(zhuǎn)換過程:接收到外部消息后,根據(jù)消息塊ID號查找結(jié)構(gòu)表,找出對應(yīng)的ICD描述信息,遍歷解析每一條信號量及對應(yīng)的每一個位域。根據(jù)位域類型信息(浮點型、整型、字符串型),調(diào)用類型對應(yīng)的數(shù)據(jù)處理流程完成數(shù)據(jù)解析,每一條解析后的數(shù)據(jù)都順次填入到待解析應(yīng)用層數(shù)據(jù)塊的內(nèi)存區(qū)域中,完成一條數(shù)據(jù)塊的解析后,將完成解析的內(nèi)存區(qū)域中對應(yīng)的數(shù)據(jù)拷貝給上層應(yīng)用程序。其中ICD定義結(jié)構(gòu)和上層應(yīng)用的數(shù)據(jù)結(jié)構(gòu)是——對應(yīng)的。
應(yīng)用數(shù)據(jù)到ICD數(shù)據(jù)的轉(zhuǎn)換過程:根據(jù)待轉(zhuǎn)換的數(shù)據(jù)塊ID,根據(jù)消息塊ID號查找結(jié)構(gòu)表,找出對應(yīng)的ICD描述信息,遍歷并解析應(yīng)用層數(shù)據(jù)結(jié)構(gòu)中每一條數(shù)據(jù)信息。根據(jù)應(yīng)用層ICD與網(wǎng)絡(luò)層ICD的配置對應(yīng)關(guān)系,按照位域類型(浮點型、整型、字符串型),調(diào)用類型對應(yīng)的數(shù)據(jù)處理流程完成逆向數(shù)據(jù)解析,解析后的數(shù)據(jù)順次填入待解析ICD數(shù)據(jù)塊的內(nèi)存區(qū)域中,完成一條數(shù)據(jù)塊的解析后,將完成解析的內(nèi)存區(qū)域中對應(yīng)的數(shù)據(jù)拷貝給底層通信驅(qū)動,并調(diào)用總線數(shù)據(jù)發(fā)送接口完成消息發(fā)送。
2 數(shù)據(jù)激勵自動生成
數(shù)據(jù)激勵功能模塊作為仿真驗證環(huán)境中的數(shù)據(jù)源,可以向應(yīng)用軟件發(fā)送激勵數(shù)據(jù),驅(qū)動應(yīng)用軟件的測試和驗證。
圖3描述了數(shù)據(jù)激勵功能實現(xiàn)的原理與流程。數(shù)據(jù)激勵功能模塊通過讀取ICD配置文件,自動生成對應(yīng)的數(shù)據(jù)設(shè)置界面,包括對周期型數(shù)據(jù)和事件型數(shù)據(jù)的設(shè)置。對于周期型數(shù)據(jù),能夠設(shè)置發(fā)送周期和是否激活待發(fā)送數(shù)據(jù),開始數(shù)據(jù)發(fā)送后,每條激活的周期型數(shù)據(jù)將按照設(shè)置的發(fā)送周期向目標(biāo)節(jié)點發(fā)送激勵數(shù)據(jù)。對于事件型數(shù)據(jù),通過對應(yīng)的發(fā)送按鈕來觸發(fā)發(fā)送時機,每次發(fā)送一個對應(yīng)的數(shù)據(jù)包。數(shù)據(jù)內(nèi)容采用逐層設(shè)置的方式,分別對應(yīng)數(shù)據(jù)塊、信號量和數(shù)據(jù)位域。完成數(shù)據(jù)激勵設(shè)置后,能夠?qū)?dāng)前的設(shè)置以文件的形式保存為一個副本,并支持后續(xù)以加載的形式恢復(fù)當(dāng)前設(shè)置的數(shù)據(jù)內(nèi)容和參數(shù)信息。數(shù)據(jù)激勵節(jié)點內(nèi)部通過ICD數(shù)據(jù)與應(yīng)用數(shù)據(jù)的轉(zhuǎn)換庫將應(yīng)用數(shù)據(jù)轉(zhuǎn)換為ICD格式的數(shù)據(jù),并通過底層以太網(wǎng)以UDP數(shù)據(jù)包的形式將數(shù)據(jù)發(fā)送到目標(biāo)節(jié)點。封裝的數(shù)據(jù)包格式與仿真驗證環(huán)境中其他節(jié)點間交互采用的通信協(xié)議保持一致。
3 數(shù)據(jù)監(jiān)控功能自動生成
數(shù)據(jù)監(jiān)控功能模塊用于監(jiān)控虛擬化節(jié)點間的數(shù)據(jù)交互,模擬真實目標(biāo)機環(huán)境下的總線監(jiān)控器,包括選擇待監(jiān)控數(shù)據(jù)塊,啟動和停止監(jiān)控操作,歷史數(shù)據(jù)緩存、遍歷和查看。數(shù)據(jù)內(nèi)容采用逐層顯示的方式,分別對應(yīng)數(shù)據(jù)塊、信號量和數(shù)據(jù)位域。
圖4描述了數(shù)據(jù)監(jiān)控節(jié)點實現(xiàn)的原理與流程。底層通過以太網(wǎng)以UDP數(shù)據(jù)包的形式接收,數(shù)據(jù)包格式的解析邏輯與虛擬仿真節(jié)點采用的通信協(xié)議保持一致。數(shù)據(jù)監(jiān)控節(jié)點內(nèi)部通過ICD數(shù)據(jù)與應(yīng)用數(shù)據(jù)的轉(zhuǎn)換庫,根據(jù)需要設(shè)置的待監(jiān)控數(shù)據(jù),將需要監(jiān)控的ICD數(shù)據(jù)轉(zhuǎn)換為應(yīng)用數(shù)據(jù)格式,并存儲在對應(yīng)的數(shù)據(jù)緩存中。顯示界面部分根據(jù)當(dāng)前的顯示視圖驅(qū)動監(jiān)控界面的顯示樣式,以及人工操作選擇的歷史數(shù)據(jù),在對應(yīng)數(shù)據(jù)塊的數(shù)據(jù)位域中顯示數(shù)據(jù)信息。
4 結(jié)束語
本文首先針對接口控制文檔(ICD)對應(yīng)的配置文件格式進(jìn)行分析,并結(jié)合機載軟件仿真驗證環(huán)境中數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控功能模塊的需求,設(shè)計ICD數(shù)據(jù)和應(yīng)用數(shù)據(jù)間的雙向自動轉(zhuǎn)換方法,創(chuàng)建ICD數(shù)據(jù)轉(zhuǎn)換功能庫,并以ICD數(shù)據(jù)轉(zhuǎn)換功能庫為核心子功能,構(gòu)建了數(shù)據(jù)激勵功能模塊和數(shù)據(jù)監(jiān)控功能模塊的自動化生成。通過自動生成機載軟件仿真驗證環(huán)境中數(shù)據(jù)激勵和數(shù)據(jù)監(jiān)控功能模塊,能夠有效降低仿真驗證環(huán)境的開發(fā)工作量和維護(hù)成本。
參考文獻(xiàn)
[1]李驍?shù)ぃ笥婪?,張?綜合模塊化航電系統(tǒng)軟件技術(shù)研究[J].航空計算技術(shù),2013(03).
[2]劉暢,劉斌,蔣崇武.嵌入式軟件仿真測試環(huán)境實時數(shù)據(jù)處理研究[J].計算機工程與設(shè)計,2009(07).
[3]殷永峰,劉斌,王志.基于虛擬機的嵌入式軟件仿真測試環(huán)境[J].沈陽工業(yè)大學(xué)學(xué)報,2011(04).