劉 濤,盧 希,馮 飛,王月波
(中國西南電子技術研究所,成都 610036)
隨著航空電子技術的發(fā)展,航電系統(tǒng)架構設計從獨立式設備向高度綜合化、通用化、模塊化方向轉(zhuǎn)變,機載軟件實現(xiàn)的功能在航空領域中占據(jù)非常重要的位置,是影響航空產(chǎn)品安全性和可靠性的主要因素之一,對機載軟件進行充分性測試是保證軟件質(zhì)量的有效手段[1]。由于機載軟件系統(tǒng)的高實時性、內(nèi)存空間有限、I/O 通道較少且開發(fā)工具昂貴、與硬件緊密相關、處理器種類繁多等特性[2],決定了機載軟件測試方法已不能簡單地沿襲傳統(tǒng)的測試方法。
航空電子系統(tǒng)一般由通信、導航、雷達、電子戰(zhàn)等設備構成,實現(xiàn)信息的測量、采集、傳輸、處理、監(jiān)控和顯示功能,并完成飛行控制、導航等任務。目前,航空機載軟件測試環(huán)境主要是全物理實裝測試環(huán)境和半實物仿真測試環(huán)境[3]。全物理實裝測試環(huán)境是指軟件運行在真實目標機上,與其交聯(lián)系統(tǒng)也是真實的物理設備,典型的測試工具有總線監(jiān)視器、示波器、信號源、邏輯分析儀等。全實裝測試環(huán)境的優(yōu)點是軟件運行在真實環(huán)境中,測試結果可信度高,缺點就是實物套量少、成本高。半實物仿真測試環(huán)境是指軟件運行在真實目標機上,而其交聯(lián)系統(tǒng)通過軟件仿真實現(xiàn)。半實物仿真測試環(huán)境一般由上位機、下位機和目標機構成,上位機實現(xiàn)測試過程管理、環(huán)境仿真建模、測試數(shù)據(jù)發(fā)送和結果分析顯示的功能,下位機實現(xiàn)總線驅(qū)動、斷點調(diào)試、日志記錄等功能,目標機運行被測軟件[3-4]。半實物仿真測試環(huán)境是目前最常用的航空機載軟件測試環(huán)境。
全物理實裝測試環(huán)境和半實物仿真測試環(huán)境均基于真實目標機的環(huán)境,主要存在以下問題:一是航空機載項目大多采用軟件和硬件并行開發(fā)的模式,由于實物套量少,機載軟件調(diào)試、驗證時間有限,導致無法盡早、及時地發(fā)現(xiàn)軟件缺陷;二是航空機載軟件較難實現(xiàn)非干預性、全黑盒測試——半實物仿真測試環(huán)境中,機載軟件常采用源代碼插樁等灰盒測試方法獲得軟件執(zhí)行時間和代碼覆蓋率,但插樁技術需要修改源代碼并重新編譯后加載進目標機,代碼膨脹使得所需空間增加,可能導致被測軟件實時性變差,從而影響被測軟件的執(zhí)行結果[5];三是航空機載軟件測試環(huán)境的可控性和通用性較差——機載軟件測試過程中較難實現(xiàn)狀態(tài)保存、恢復及特定場景的設置,較難實時掌握機載軟件內(nèi)部運行行為,不利于及時發(fā)現(xiàn)和定位被測軟件中潛在的缺陷;同時,機載軟件硬件測試環(huán)境大多屬于定制開發(fā)環(huán)境,很難適合其他項目,測試環(huán)境的復用性較差。
隨著計算機硬件性能指標的提高和軟件技術的進步,全數(shù)字仿真技術取得了飛速發(fā)展,國外仿真系統(tǒng)有美國WindRiver公司的Simics和QEMU開源軟件,國內(nèi)有創(chuàng)景公司的iSystem、軒宇公司的VTest等,但支持的處理器架構有限,尤其是國產(chǎn)處理器,且較難自主開發(fā)處理器仿真庫和搭建外圍仿真環(huán)境。
針對以上問題,本文介紹了一種航空機載軟件全數(shù)字仿真測試系統(tǒng),通過軟件的仿真技術,逼真地模擬機載軟件運行的物理硬件環(huán)境,可動態(tài)地運行機載軟件進行調(diào)試和測試活動[6]。該系統(tǒng)已成功應用于多個航空機載軟件類項目。
航空機載軟件全數(shù)字仿真測試系統(tǒng)采用面向?qū)ο蟮脑O計思想,模擬機載航電系統(tǒng)中的各類設備,把要虛擬的目標系統(tǒng)上的所有組件都設計為獨立的模塊,通過手動修改硬件配置文件或通過界面圖形拖拽方式來快速生成硬件配置文件,實例化各個模塊,快速構建虛擬目標系統(tǒng),加載并運行二進制目標程序進行仿真測試。通過分布式實時數(shù)據(jù)分發(fā)服務中間件協(xié)議與戰(zhàn)場仿真系統(tǒng)中的模型仿真系統(tǒng)進行通信,實現(xiàn)信息的測量、采集、傳輸、處理、監(jiān)控和顯示功能,并完成飛行控制、發(fā)動機控制、導航、性能管理等任務[7]。
航空機載軟件全數(shù)字仿真測試系統(tǒng)由仿真核心平臺、仿真工具組件、協(xié)同仿真組件和人機交互組件構成,組成框架如圖1所示。
圖1 航空機載軟件全數(shù)字仿真測試系統(tǒng)組成框架圖
仿真核心平臺用于模擬真實目標系統(tǒng)及外圍環(huán)境,運行嵌入式操作系統(tǒng)或目標二進制程序,通過基于底層虛擬機的動態(tài)二進制翻譯技術,實現(xiàn)將目標匯編碼直接翻譯成X86匯編碼執(zhí)行,大幅度提高仿真系統(tǒng)的運行速度。同時,仿真核心平臺各模塊間通過統(tǒng)一的全局時鐘模塊進行管理,保證了系統(tǒng)在仿真環(huán)境中的實時性。處理器仿真模塊仿真不同航空機載軟件運行平臺(處理器架構)的指令集、中斷等功能,支持ARM、DSP C6k、DSP C28x、DSP C54x、DSP C55x、PowerPC、龍芯、飛騰、國威等[8];外設仿真模塊支持存儲設備、網(wǎng)卡、串口、定時器、中斷控制器、DMA、Flash、LCD、MIL-STD-1553B總線、ARINC429總線、AFDX總線、FC總線、RapidIO總線、1394總線等[9-10]。仿真核心平臺提供航空機載硬件類處理器、內(nèi)存、外設等多種可重用庫,并允許用戶自行開發(fā)可重用庫。
仿真工具組件用于輔助用戶對系統(tǒng)運行進行可執(zhí)行文件解析和加載、調(diào)試分析,將故障注入仿真核心平臺,將可重用庫按照目標系統(tǒng)的連接方式快速搭建虛擬環(huán)境,完成目標碼覆蓋率統(tǒng)計,把調(diào)試信息加到目標文件中,生成可執(zhí)行文件,查看內(nèi)存的長度以及CPU寄存器,查看當前程序的運行數(shù)據(jù),遠程GDB調(diào)試多種編程語言,根據(jù)變量的類型輸出變量的值,顯示動態(tài)數(shù)組的取值,指令單步執(zhí)行和斷點調(diào)試、源碼級調(diào)試等功能。可以讓操作員根據(jù)需要施加信號,實時監(jiān)測信號??梢酝ㄟ^提供了開發(fā)虛擬儀器界面的用戶接口資源文件和各種控制和顯示控件,模擬實際儀器界面。
協(xié)同仿真組件用于搭建分布式嵌入式系統(tǒng),采用DDS分布式實時數(shù)據(jù)分發(fā)通信協(xié)議中間件實現(xiàn)多個節(jié)點(軟件/模型)互聯(lián)[11],通過模型適配層連接Matlab或其他仿真模型,實現(xiàn)外部模型和仿真平臺之間的數(shù)據(jù)通信,包括模型適配、時間同步、數(shù)據(jù)同步、節(jié)點管理、同步工程管理等模塊。協(xié)同仿真的關鍵在于如何使分布在不同的物理機器的仿真系統(tǒng)模塊能夠遵循相同的時間節(jié)拍進行時間同步和數(shù)據(jù)交互[12-13],其關鍵技術為協(xié)同仿真時間同步和數(shù)據(jù)通信機制。
人機交互組件由基于Python或Eclipse IDE 的GUI界面、命令行接口、自動化測試、圖形化硬件環(huán)境建模等模塊組成。通過GUI界面或命令行接口啟動一個工程文件對目標系統(tǒng)進行仿真,該工程目錄主要包括硬件目標系統(tǒng)配置腳本、工程啟動腳本和目標二進制程序(支持elf、coff、bin格式文件的加載)等三個文件。圖形化硬件環(huán)境建模的工程還有gp文件,能夠通過類似畫圖連線的方式進行虛擬目標系統(tǒng)建模,從而自動生成配置腳本文件。人機交互組件提供友好的圖形界面,通過可視化操作完成工程的管理、虛擬目標系統(tǒng)的搭建等操作,大大降低了全數(shù)字仿真系統(tǒng)的使用門檻[14-15]。
基于底層虛擬機的動態(tài)二進制翻譯技術是一種直接翻譯可執(zhí)行二進制源機器代碼的技術,能達到不同類型處理器之間二進制源機器代碼相互移植的目的。該技術是實現(xiàn)航空機載軟件全數(shù)字仿真測試系統(tǒng)的關鍵技術之一。
仿真核心平臺采用目標機器平臺完成動態(tài)二進制翻譯,目標機器平臺包括加載程序的啟動模塊、翻譯系統(tǒng)控制模塊、與翻譯系統(tǒng)控制模塊進行通信的運行環(huán)境仿真模塊、解釋器、動態(tài)翻譯器和本地碼執(zhí)行模塊[16],其技術原理如圖2所示。
圖2 基于底層虛擬機的動態(tài)二進制翻譯技術原理圖
啟動模塊啟動解釋器對源機器代碼解釋執(zhí)行,并根據(jù)需要統(tǒng)計代碼執(zhí)行路徑信息。某源機器代碼的執(zhí)行達到一定熱度,翻譯系統(tǒng)控制模塊啟動動態(tài)翻譯器,對其解釋器輸入的源機器代碼進行解碼、翻譯、編碼,并使用底層虛擬機技術(Low Level Virtual Machine,LLVM)進行優(yōu)化,生成目標機器代碼片段,此后再執(zhí)行到該源機器代碼片段時就不再解釋執(zhí)行,而是通過本地碼執(zhí)行模塊來直接執(zhí)行翻譯生成的目標機器代碼。
運行環(huán)境仿真模塊運行嵌入式操作系統(tǒng)或目標二進制程序,將目標機器平臺輸出的目標匯編碼,輸入翻譯系統(tǒng)控制模塊;翻譯系統(tǒng)控制模塊直接執(zhí)行翻譯成X86匯編碼,并送入動態(tài)翻譯器,利用動態(tài)二進制翻譯技術,根據(jù)源機器代碼片段解碼、翻譯、優(yōu)化編碼,將優(yōu)化編碼輸出的機器代碼片段送入本地執(zhí)行模塊;本地執(zhí)行模塊在翻譯系統(tǒng)控制模塊自身的執(zhí)行和生成目標機器代碼執(zhí)行之間的切換,通過翻譯系統(tǒng)控制模塊送入運行環(huán)境仿真模塊,運行環(huán)境仿真模塊調(diào)用源機器代碼以及信號處理,模擬真實目標系統(tǒng)及外圍環(huán)境[17]。
航空機載軟件全數(shù)字仿真測試系統(tǒng)采用分布式部署方式,通過時間同步服務器提供的接口適配器可以將單一功能分散的設備(節(jié)點)組成多功能綜合系統(tǒng)。
客戶端和服務器端時間同步機制流程如圖3所示,時間同步服務器(服務端)初始化網(wǎng)絡資源并啟動網(wǎng)絡服務,進入循環(huán)主任務,等待客戶端節(jié)點加入??蛻舳斯?jié)點工程被加載并開始運行后,初始化接口適配器,通過接口適配器與服務端建立連接,注冊節(jié)點模型信息并添加端口,初始化當前時間并設置時間步長,同步精度取決于時間步長。調(diào)用等待同步時鐘函數(shù)進行時鐘同步,每個周期的dCurTime 參數(shù)為當前周期的仿真時間,即第一個周期為0,第二個周期為0.001f,第三個周期為0.002f……以此類推。當收到當前仿真工程中所有節(jié)點模型的同步信號后,立即跳出阻塞狀態(tài),將時鐘計時推進到下一個同步周期,并處理下一個周期需要完成的任務。若當前仿真時鐘沒有推進到dCurTime的時間時,系統(tǒng)便會阻塞在該函數(shù)內(nèi)等待對方進行時鐘同步,便能控制系統(tǒng)暫停運行。這種機制保證了整個仿真系統(tǒng)各子節(jié)點時序的一致。
圖3 客戶端和服務器端的時間同步機制流程圖
協(xié)同仿真的多機同步工具開放接口用于客戶端的注冊,通用的調(diào)用流程包括初始化、注冊模型、添加模型端口等步驟,使得不同客戶端之間可以通過端口進行通信,客戶端和服務器端數(shù)據(jù)通信機制流程如圖4所示。首先,客戶端1和客戶端2作為子節(jié)點通過調(diào)用客戶端接口注冊函數(shù)注冊到系統(tǒng)中,并建立與服務端之間的通信鏈路;其次,通過調(diào)用接口適配器添加端口函數(shù)返回客戶端1和客戶端2各自端口的索引ID,并添加相同端口名;最后,根據(jù)索引ID,使用函數(shù)SSTC_SubEngine_WriteData進行數(shù)據(jù)傳輸,接收到數(shù)據(jù)后在各自的回調(diào)函數(shù)中對數(shù)據(jù)進行處理。
圖4 客戶端和服務器端的數(shù)據(jù)通信機制流程圖
某型機載航電系統(tǒng)由通信、導航、識別、音頻等設備構成,實現(xiàn)信息的測量、采集、傳輸、處理、監(jiān)控和顯示功能,并完成飛行控制、導航等任務。音頻設備實現(xiàn)機上成員之間和機外話音通信,由IO模塊、AP模塊和ACP模塊構成,模塊之間RS422通信,IO模塊通過HB6096總線與航電主控設備實現(xiàn)數(shù)據(jù)的采集和處理,接受并響應航電分系統(tǒng)的控制指令。航電主控設備運行在MPC8270之上,IO模塊采用TI公司的TMS320F2812 DSP,AP模塊采用AD公司的雙DSP架構ADSP 21368,ACP模塊采用TI公司的TMS320F2812 DSP。每個虛擬硬件目標系統(tǒng)都使用航空機載軟件全數(shù)字仿真測試系統(tǒng)快速構建,作為一個節(jié)點與時間同步服務器連接,提供統(tǒng)一的仿真時鐘進行多節(jié)點同步仿真;每個目標系統(tǒng)也可接收上位機測試軟件發(fā)送的數(shù)據(jù)指令并解析處理。
以IO模塊為例,TMS320F2812目標系統(tǒng)搭建于高性能計算機上(處理器Intel i7-9700K CPU@3.6 GHz,內(nèi)存16 GB,硬盤512SSD+1 TB機械硬盤,操作系統(tǒng)為Win 7),通過基于LLVM的動態(tài)二進制翻譯技術實現(xiàn)F2812仿真,其設計原理如圖5所示。該系統(tǒng)由F2812處理器核心、內(nèi)存總線和外圍設備組成,dds_control設備用于注冊協(xié)同仿真模型,可通過時間同步和數(shù)據(jù)通信機制與其他目標系統(tǒng)進行同步聯(lián)合仿真,也可接收上位機測試系統(tǒng)發(fā)送的數(shù)據(jù)指令進行解析處理并把數(shù)據(jù)發(fā)送給相應的仿真設備。HB6096設備、串口設備、AD采集設備用于實現(xiàn)ARINC429總線、RS422總線、離散信號等協(xié)議,完成多個目標系統(tǒng)節(jié)點之間的數(shù)據(jù)通信。主控設備MPC8270模塊、AP模塊和ACP模塊的設計原理類似。
圖5 TMS320F2812目標系統(tǒng)設計原理圖
通過該實例,音頻設備軟件全數(shù)字仿真測試系統(tǒng)與全物理實裝測試環(huán)境的試驗對比數(shù)據(jù)見表1。本系統(tǒng)快速搭建了F2812虛擬硬件目標系統(tǒng)能力,指令速度達到30 MIPS(Million Instructions per Second),能正確運行用戶編譯的目標碼程序;提供了AP、ACP、IO等模塊虛擬硬件目標系統(tǒng)集成,以及多種航空數(shù)據(jù)總線的虛擬仿真建模能力,并通過協(xié)同仿真時間同步和數(shù)據(jù)通信機制保證各目標系統(tǒng)運行時序的一致性;其回歸測試效率較音頻設備實裝測試環(huán)境提升了42.8%,尤其在研制過程中需求變更頻繁導致回歸次數(shù)增多時更有效;具備故障記錄能力,可在實驗室條件而非客戶現(xiàn)場完成故障排查和功能驗證。
表1 某音頻設備軟件動態(tài)測試數(shù)據(jù)對比
本文分析了全物理實裝測試環(huán)境和半實物仿真測試環(huán)境的優(yōu)缺點,研究了航空機載軟件運行環(huán)境和全數(shù)字仿真測試技術,設計并實現(xiàn)了一種基于底層虛擬機的動態(tài)二進制翻譯技術、協(xié)同仿真時間同步和數(shù)據(jù)通信機制的航空機載軟件全數(shù)字仿真測試系統(tǒng),提供了航空機載硬件類處理器、內(nèi)存、外設等多種可重用庫,并允許用戶自行開發(fā)可重用庫,實現(xiàn)了航空機載軟件全數(shù)字高速閉環(huán)仿真運行。工程實踐證明,在仿真航空機載軟件運行環(huán)境時,該系統(tǒng)僅需要高性能計算機,具有高擴展性和靈活性的特點,降低了機載硬件設備的依賴性,簡化了測試環(huán)境搭建的復雜度,提高了航空機載軟件測試與驗證效率。