曲明成,崔乃剛,吳翔虎,陶永超
(1.哈爾濱工業(yè)大學 計算機科學與技術學院,哈爾濱150001; 2.哈爾濱工業(yè)大學 航空宇航科學與技術博士后流動站,哈爾濱 150001)
嵌入式軟件虛擬化測試技術標準框架研究
曲明成1,2,崔乃剛2,吳翔虎1,陶永超1
(1.哈爾濱工業(yè)大學 計算機科學與技術學院,哈爾濱150001; 2.哈爾濱工業(yè)大學 航空宇航科學與技術博士后流動站,哈爾濱 150001)
針對嵌入式系統(tǒng)硬件平臺采用純軟件仿真并對嵌入式軟件進行功能級測試的相關研究存在較多不足,缺乏整體、統(tǒng)一、靈活、標準的仿真部件間接口,致使不同體系、類型的處理器仿真核與各類外設間較難進行快速、直接的整合與交互、導致缺乏系統(tǒng)級可配置能力、各類仿真核與調(diào)試器(GDB)間不能進行直接、有效地互聯(lián)和交互,從而無法達到可定制、組件化的系統(tǒng)級仿真及虛擬測試環(huán)境快速搭建目標. 基于組件化思想,提出一套處理器仿真、外設仿真和調(diào)試器(GDB)三者間可進行直接、快速交互的標準結構、標準接口和基本處理邏輯,優(yōu)化和刪減了GDB層次,擴充了新功能,使之在運行時可動態(tài)加載、支持多種仿真處理器體系. 研發(fā)了虛擬測試系統(tǒng),驗證了所提方法、結構、接口的有效性和正確性,與其他同類技術、項目進行了綜合能力比較. 結果表明本文所提方法、技術具有較多優(yōu)勢.
嵌入式軟件測試,虛擬目標機,虛擬測試系統(tǒng)
嵌入式系統(tǒng)廣泛應用于航空航天、工業(yè)過程控制、機器人、消費類電子等眾多領域. 嵌入式系統(tǒng)多采用專用計算機系統(tǒng), 這導致了相應嵌入式軟件在開發(fā)工具、測試手段、故障模擬與分析等方面都具有較大的難度,而硬件的研制速度滯后在一定程度上制約了軟件的研制,從而導致整個嵌入式系統(tǒng)開發(fā)周期延長. 嵌入式系統(tǒng)多具有強實時性、系統(tǒng)的計算較多地依賴外部各類傳感器數(shù)據(jù)、復雜的分布式系統(tǒng)間要進行具有特定時序和信息特征的交互、可靠性安全性要求較高、硬件錯誤和故障容易引起較大的破壞、特定外部場景數(shù)據(jù)、異?;蝈e誤特征較難觸發(fā)和模擬等特點,使嵌入式軟件的調(diào)試和測試過程更加困難.
近年來針對嵌入式系統(tǒng)硬件的純軟件仿真技術(虛擬系統(tǒng)技術)得到了長足的發(fā)展. 該技術采用純軟件仿真目標嵌入式系統(tǒng)的硬件(處理器、存儲、總線和外設),并可以對系統(tǒng)外信息輸入和輸出進行模擬,同時輔以上層IDE和相應工具鏈支撐,形成功能強大的仿真測試環(huán)境. 這項技術在嵌入式軟件的開發(fā)、調(diào)試、測試、故障模擬、錯誤分析、理論驗證等方面都得到了廣泛的應用,也為嵌入式系統(tǒng)的軟硬件協(xié)同開發(fā)提供了一種較好的解決途徑[1-5].
針對嵌入式系統(tǒng)的硬件仿真主要包括處理器仿真和設備仿真兩個部分. 而處理器仿真(仿真核)技術又可以分為三類:指令級、周期級、時序級仿真. 指令級仿真可以給出系統(tǒng)狀態(tài)的精確行為;周期級仿真可以給出每一周期的處理器精確行為;時序級仿真可以給出在一周期內(nèi)準確時間出現(xiàn)的信號.
從國內(nèi)外研究的現(xiàn)狀來看,有很多團體或組織機構根據(jù)不同的應用領域?qū)θN仿真類型展開了研究,并取得了一定進展. 較有影響的主要有如表1所示的幾種.
表1 嵌入式硬件系統(tǒng)軟件仿真項目
QEMU雖然能夠模擬較多類型的體系結構,但是由于其初衷不是為虛擬測試系統(tǒng)所設計,其結構并非基于可配置組件思想,因此針對一個特定的目標系統(tǒng)很難進行直接、快速地配置搭建;同時在其仿真處理器(仿真核)、仿真外設與GDB間缺乏統(tǒng)一和標準的結構、接口設計,導致無法動態(tài)支持多種處理器體系;再次,由于其與GDB間采用基于MI的通信接口,而并未對GDB進行深層優(yōu)化,導致針對嵌入式測試領域的場景、故障、異常用例模型的構建、注入和觸發(fā)管理功能無法得到有效支持;最后由于其仿真核只是對體系結構的模擬,對嵌入式軟件測試過程中的匯編、高級程序分支和語句覆蓋率記錄與分析無法提供支撐. 而Bochs與其他ARM系列仿真模擬器只是針對特定處理器體系進行的仿真,對多處理器體系本身就不支持,更不具備仿真核與外設的靈活配置能力. Virtutech Simics是風河公司推出的商業(yè)化仿真模擬器,可以支持多種處理器和體系,但是每款體系的模擬器都是集成編譯好的軟件單元,不能進行目標系統(tǒng)的靈活配置、定制,用戶需要按需購買和實用,接口和標準無法獲知.
基于軟件仿真技術來構建嵌入式軟件虛擬測試環(huán)境,需要具備三部分基本功能,即目標系統(tǒng)仿真單元、調(diào)試器和可視化調(diào)試工具. 前兩部分合稱為虛擬測試系統(tǒng),三者合稱為虛擬測試環(huán)境. 由于嵌入式計算機系統(tǒng)硬件構成專有、多樣,因此為嵌入式軟件提供測試與驗證服務的虛擬測試系統(tǒng)需要具備靈活、標準化、可配置特性,支持故障與異常、特定場景用例的注入與觸發(fā)、覆蓋率分析、閉環(huán)與分布式仿真等綜合能力. 而單純關注于任何一個部分都不能較好地達到上述目標. 本文基于組件思想,對仿真核、外設、GDB三者體系及交互的結構、標準、接口進行了深入研究與綜合優(yōu)化設計,提出一套標準、方法、結構和接口,對GDB體系進行了改造、優(yōu)化與完善,在實際的課題中使用和驗證了所提方法、標準的標準性、正確性和有效性.
定義1 虛擬處理器(仿真核). 采用純軟件仿真技術對特定體系處理器進行仿真,包括取指、譯碼、執(zhí)行過程,以及處理器核心寄存器配置和邏輯響應.
定義2 虛擬設備(仿真外設). 對嵌入式目標機中的物理外設進行純軟件仿真,包括基本輸入輸出過程、寄存器及相應位邏輯.
定義3 嵌入式虛擬目標機(虛擬目標機). 采用軟件仿真技術,對嵌入式系統(tǒng)硬件的CPU、總線、外設進行仿真,使基于真實硬件編寫的程序所對應的二進制映像可以在其上直接運行,稱這套純軟件仿真的目標機為虛擬目標機.
定義4 嵌入式軟件虛擬測試系統(tǒng)(虛擬測試系統(tǒng)). 將調(diào)試器軟件與虛擬目標機進行有效整合,可以對二進制映像文件進行調(diào)試、綜合分析的軟件系統(tǒng).
定義5 嵌入式軟件虛擬測試可視化集成環(huán)境(虛擬測試環(huán)境). 將可視化調(diào)試環(huán)境以及各類測試手段和方法與虛擬測試系統(tǒng)進行整合,構成可視化虛擬測試環(huán)境.
定義6 閉環(huán)測試. 在一個虛擬測試系統(tǒng)中,虛擬設備具備解析執(zhí)行外部腳本或用例模型的能力,從而為嵌入式軟件的測試提供交互式仿真數(shù)據(jù).
定義7 覆蓋率分析. 基于虛擬測試系統(tǒng),在軟件執(zhí)行過程中記錄指令執(zhí)行信息,根據(jù)編譯信息反推出匯編和高級程序所走的每條語句和分支信息,進一步計算出分支和語句覆蓋率信息.
嵌入式系統(tǒng)多基于專有計算機系統(tǒng),處理器體系、外設的構成多樣且復雜,因此一個虛擬測試系統(tǒng)所需要具備的最典型特征是: 1)多體系支持和目標機可靈活配置,同時由于嵌入式系統(tǒng)的外部輸入的復雜特性; 2)能夠有效模擬場景和故障的用例觸發(fā)形成閉環(huán)測試也十分重要,為了能夠有效分析程序的執(zhí)行結果; 3)能夠記錄程序執(zhí)行過程中的數(shù)據(jù)和語句信息十分必要. 顯然能力1)需要在虛擬目標機層次解決,而2),3)是指令執(zhí)行之外的特征,因此需要在調(diào)試器層面解決.
3.1 虛擬處理器基本功能接口
虛擬處理器在一個虛擬測試系統(tǒng)實例中充當核心的角色,它決定了測試目標環(huán)境的硬件體系結構,主要完成測試代碼指令的譯碼與模擬執(zhí)行操作,提供整體模擬環(huán)境的基本運行支持. 本文通過對各種處理器硬件結構的抽象設計,提出一套虛擬處理器組件標準功能接口. 通過該接口,虛擬目標機配置時可以無需了解組件體系結構與實現(xiàn)細節(jié),透明地加載虛擬處理器組件,并通過對該接口的調(diào)用,來操作虛擬處理器組件的運行以及相關行為.
虛擬處理器基本功能接口包括:1)初始化虛擬核,2)仿真核復位,3斷點操作,4)事件操作,5)中斷觸發(fā),6)錯誤回調(diào).
虛擬處理器組件導出的標準接口可分為兩部分:虛擬執(zhí)行接口與調(diào)試功能接口. 系統(tǒng)(GDB模塊)通過對不同接口的調(diào)用,來控制虛擬處理器組件不同的行為.
虛擬執(zhí)行接口包括通過GDB調(diào)用虛擬核的各功能接口實現(xiàn). 接口功能包括:1)初始化虛擬處理器,當GDB加載完虛擬處理器對其進行初始化;2)復位虛擬處理器,向虛擬處理器注入錯誤信息,啟動虛擬處理器運行,暫停虛擬處理器運行,在虛擬處理器執(zhí)行過程中,產(chǎn)生外部中斷時,停止虛擬處理器運行.
調(diào)試功能接口包括通過GDB調(diào)用虛擬核的各功能接口實現(xiàn). 接口功能包括:1)另虛擬處理器執(zhí)行若干條匯編語句;2)獲取虛擬處理器寄存器或地址空間數(shù)據(jù);3)設置處理器寄存器或地址空間數(shù)據(jù);4)在處理器調(diào)試執(zhí)行過程中增加/刪除斷點;5)獲取虛擬處理器當前執(zhí)行指令PC值;6)向虛擬處理增加內(nèi)核事件;7)獲取虛擬處理器運行周期數(shù);8)獲取虛擬處理器配置主頻;9)獲取虛擬處理器執(zhí)行狀態(tài);10)獲取虛擬處理器指令執(zhí)行歷史.
虛擬測試系統(tǒng)通過上述接口保準和調(diào)用關系,可完成對虛擬處理器組件的加載、啟動、暫停、設置調(diào)試信息等基本操作.
3.2 虛擬處理器標準功能構成及交互邏輯
為了能夠滿足復雜嵌入式軟件調(diào)試、測試和驗證等目標,設計出如下的虛擬處理器組件的功能構成及交互關系. 虛擬處理器組件應包含如圖1所示功能集合和調(diào)用與依賴關系.
圖1 虛擬處理器組件的功能模塊組成
1)虛擬執(zhí)行控制單元. 該單元主要完成對指令執(zhí)行的管理,以及取指、譯碼與模擬執(zhí)行的操作. 其中,指令執(zhí)行管理是指管理處理器模擬執(zhí)行狀態(tài),包括確定應模擬執(zhí)行多少條指令,何時應該暫停模擬執(zhí)行等;指令的取指與譯碼則是指在內(nèi)存設備中取得要執(zhí)行的指令,并將其譯碼,判斷指令類別與操作數(shù);指令的模擬執(zhí)行則是根據(jù)指令類別與操作數(shù),執(zhí)行指令的功能,可能包括對寄存器組或內(nèi)存數(shù)據(jù)的操作等等. 除此之外,在模擬執(zhí)行一條指令之后,還需要對虛擬處理器的其他功能模塊進行驅(qū)動執(zhí)行,具體見其他單元設計.
2)斷點管理單元. 該單元主要對虛擬處理器內(nèi)的斷點調(diào)試操作進行支持,對用戶設置的斷點進行記錄與管理,并在代碼段中進行斷點指令的替換操作. 當處理器虛擬執(zhí)行至斷點指令處時,則處理器暫停虛擬執(zhí)行,并返回暫停狀態(tài),供用戶進行數(shù)據(jù)獲取等調(diào)試操作.
3)內(nèi)核事件管理單元. 該單元對虛擬處理器的內(nèi)部事件進行管理,包括地址觸發(fā)、時間觸發(fā)兩種形式的事件隊列,當處理器虛擬執(zhí)行完一條指令之后對兩個事件隊列進行響應時,如果當前狀態(tài)滿足觸發(fā)條件則對特定的事件進行處理,執(zhí)行特定功能. 該單元主要是為了系統(tǒng)的故障注入、數(shù)據(jù)采集等操作提供基本的支持.
4)中斷響應管理. 該模塊為處理器響應中斷提供能力. 當處理器虛擬執(zhí)行完一條指令之后,則會查詢當前是否有中斷信號產(chǎn)生,是否需要響應. 如果需要,則會跳轉(zhuǎn)至異常向量表中斷入口繼續(xù)執(zhí)行.
5)代碼執(zhí)行歷史記錄模塊. 該模塊主要是對虛擬處理器執(zhí)行過的代碼進行執(zhí)行次數(shù)、跳轉(zhuǎn)情況等數(shù)據(jù)的記錄,并通過接口導出代碼執(zhí)行歷史文件,供系統(tǒng)進行覆蓋率分析,最終生成覆蓋率分析報告.
3.3 虛擬外設標準結構與接口
在一個虛擬測試系統(tǒng)實例中,虛擬設備與虛擬處理器組件相“連接”,為處理器提供外圍設備支持,完成系統(tǒng)級虛擬目標機環(huán)境的搭建.
虛擬設備組件與虛擬處理器組件一樣,其實現(xiàn)必須滿足標準接口功能,包括:1)設備注冊,2)設備啟停,3)設備復位與退出,4)設備中斷,5)設備的讀寫.
虛擬設備組件接口函數(shù)也可以分為2類:1)設備管理接口;2)設備執(zhí)行訪問接口. 其中,管理接口是在設備向系統(tǒng)(GDB模塊)進行設備注冊、接受初始化等操作時使用;訪問接口則是在虛擬處理器模擬執(zhí)行時對設備進行訪問時使用.
GDB分為5個層次:I/O抽象層、控制層、功能層、目標抽象層和仿真目標層,如圖2所示. 其中: I/O抽象層主要處理GDB的命令循環(huán)等信息交互的操作;控制層主要進行命令解析、表達式分析、信息提取等操作;功能層則是對具體命令的響應處理,包含大量的處理函數(shù)以及相應結構;目標抽象層則是對可執(zhí)行文件進行符號解析等操作;最底層的仿真目標層則是對可執(zhí)行程序進行仿真執(zhí)行,產(chǎn)生結果.
圖2 GDB原始結構
GDB支持的目標結構非常局限,編譯一次只能支持一種體系結構,并且只具備指令集虛擬執(zhí)行的功能,能力非常有限. 為了達到GDB能夠無差別的加載ARM/SPARC /DSP 等多種體系虛擬處理器目標,對GDB進行優(yōu)化、改造和完善,即將其仿真目標層替換為目標仿真內(nèi)核.
在保留其調(diào)試能力的基礎上,對GDB的功能進行了極大的優(yōu)化擴充,添加GDB組件管理模塊,用來對系統(tǒng)實例的各個虛擬設備進行加載與管理. 對GDB的層次結構進行了重新設計與實現(xiàn),使其滿足標準性. 標準性的改造主要包括: 1)保留I/O抽象層與控制層.
2)對功能層進行多種體系結構支持的優(yōu)化.
3)在功能層中,增加系統(tǒng)虛擬處理器、虛擬設備組件管理,并通過對設備配置信息的獲取與管理生成通信結構.
4)在功能層中,增加系統(tǒng)輔助功能支持.
5)對目標抽象層中的文件解析功能進行擴充使其支持常見的可執(zhí)行文件結構,如ELF、COFF等.
6)對目標抽象層中的處理器硬件抽象結構進行更全面的抽象設計,最終提出可滿足不同體系結構處理器的虛擬處理器標準接口,并通過該接口加載不同的虛擬處理器組件.
7)將虛擬目標層全部剔除,更改為本系統(tǒng)中虛擬測試系統(tǒng)實例的加載,完成虛擬測試系統(tǒng)實例的模擬執(zhí)行.
標準性改造后的GDB結構如圖3所示. 通過對GDB與虛擬處理器標準性的設計,可以達到GDB支持的虛擬處理器體系結構無關性的目標. 只要是按照統(tǒng)一接口要求實現(xiàn)的仿真器均可以與GDB進行鏈接、通信,進而構成完整的仿真、調(diào)試虛擬測試系統(tǒng).
圖3 支持虛擬驗證系統(tǒng)的GDB結構
對于處理器標準的接口函數(shù)設計虛擬處理器標準接口設計一節(jié)已經(jīng)給出. 同樣,為了能夠使不同種類的虛擬處理器可以一致的加載各種類型的虛擬設備,在虛擬處理器與虛擬設備中,也同樣需要實現(xiàn)統(tǒng)一的接口,標準接口函數(shù)設計如表2所示.
GDB根據(jù)用戶的選擇進行相應的仿真核DLL以及仿真外設DLL的加載,形成完整的仿真器,提供仿真運行、源碼調(diào)試的環(huán)境. 此外,仿真核需要與GDB一同協(xié)調(diào)完成一些仿真器相關的調(diào)試命令操作,還需要完成一些GDB之前不支持的功能,如外部中斷的響應.
表2 仿真核DLL與仿真外設DLL的標準接口定義
Tab.2 Interface definitions between simulation processor and peripheral DLLs
接口函數(shù)定義接口說明IntSIMP_Init根據(jù)傳入?yún)?shù)初始化虛擬核.IntSIMP_BlockConfig仿真核復位例程IntSIMP_InterruptConfig啟動線程執(zhí)行程序voidDLL_EXPORTSIMP_CPURe-set單步執(zhí)行IntSIMP_CPURead暫停執(zhí)行IntSIMP_CPUWrite獲得指定寄存器的值intSIMP_UnLoadDLL設置指定寄存器的值IntSIMC_ReadMem獲取指定地址段值IntSIMC_WriteMem設置指定地址段值
4.2 GDB與虛擬處理器線程控制
如果將GDB自身作為一個獨立進程且是單線程執(zhí)行,那么當虛擬測試系統(tǒng)(虛擬處理器+GDB)運行時其不能響應外部的操作(中斷、命令). 因此,將虛擬處理器程序作為一個單獨的線程來實現(xiàn),而這種由DLL提供虛擬處理器的形式,正好給雙線程機制提供了基礎.
一個虛擬測試系統(tǒng)進程中包括GDB與虛擬處理器兩個線程,二者通信過程設計如圖4所示. 由圖4可知,將GDB與虛擬處理器DLL作為兩個線程,不僅可以使信息更新更快捷,還可以在虛擬處理器運行時,GDB系統(tǒng)可以響應外部中斷信號以及調(diào)試人員的命令.
具體過程為:當GDB調(diào)用統(tǒng)一接口中的函數(shù)Void SIMC_Run(void)時,仿真核將會啟動線程執(zhí)行仿真,啟動線程后,仿真核導出接口函數(shù)依然會等待外部的調(diào)用. 當有中斷信號來時,就可以第一時間進行中斷響應.
圖4 GDB線程與虛擬處理器線程交互邏輯設計
Fig.4 Interactive logic between GDB and virtual processor threads
與線程操作有關的算法設計:
算法1 創(chuàng)建線程,啟動仿真核.
Bool SIMC_Run(void)
{
設置仿真核初始狀態(tài);
If(仿真線程未創(chuàng)建)
{
設置為連續(xù)執(zhí)行;
創(chuàng)建線程,CreateThread (……ARMul_
DoProg……);
}
根據(jù)創(chuàng)建情況返回值(失敗、正常);
}
算法2 設置仿真核單步執(zhí)行.
Bool SIMC_Step(void)
{
設置為單步執(zhí)行;
If(仿真線程未創(chuàng)建)
創(chuàng)建線程,CreateThread (……ARMul_
DoProg……);
根據(jù)創(chuàng)建情況返回值;
}
算法3 仿真線程執(zhí)行.
DWORD WINAPI ARMul_DoProg (void * ptr)
{
while(1)
{
執(zhí)行信息的獲??;
while(仿真核狀態(tài)!=退出)
{
判斷是連續(xù)運行,還是單步運行;
啟動仿真核;
獲取仿真核狀態(tài);
}
獲取由信號量保護的標志變量,判斷接
下來的操作;
}
}
5.1 系統(tǒng)結構
構建了一個基于本文所提方法、標準構建的虛擬測試系統(tǒng)和虛擬測試環(huán)境,包括標準化組件庫、GDB及虛擬目標機管理、虛擬目標機配置、可視化調(diào)試界面、測試支撐功能管理等5個主要部分. 前兩者是構建虛擬測試環(huán)境的核心和基礎,只要二者提供對外的調(diào)用和管理接口,測試環(huán)境的功能可以根據(jù)實際需要進行靈活開發(fā)和定制. 采用實際項目驗證本文所提方法的正確性和有效性. 驗證軟件系統(tǒng)構建于Sparc V7處理器(ERC 32芯片),外設包括CAN總線、1553B總線、422總線,每種總線均采用主從模式與外部分系統(tǒng)進行數(shù)據(jù)交互.
根據(jù)本文提出的方法對處理器、外設仿真調(diào)用接口進行了標準化結構和接口設計并封裝為DLL組件,設計了相應的描述XML文檔,使二者以組件形式構成可靈活配置和加載整合的虛擬目標機組件庫. 對GDB的邏輯層次進行了重新設計、去掉了虛擬目標層、擴充和刪減了其他層次,使GDB可以對標準化的虛擬目標機進行直接加載運行和靈活調(diào)度,打破了傳統(tǒng)的一次GDB改造和編譯只能支持一種體系處理器的限制.
GDB除了CLI(Commnad Line Interface)命令外,還提供MI (Machine Interface)命令接口. 驗證項目也是基于MI構建了圖形化調(diào)試界面,并將仿真數(shù)據(jù)注入和動態(tài)結果獲取、覆蓋率分析和虛擬目標機配置和解析等功能一并整合到前端界面工具中,從而構成完整的虛擬測試環(huán)境.
5.2 綜合比較
5.2.1 能力比較
表3列出了本文提出的技術與其他一些虛擬目標機和虛擬測試系統(tǒng)在多處理器支持、虛擬設備支持、虛擬目標機可靈活配置生成以及其他測試功能支持方面的綜合比較. 給出了處理器仿真核的統(tǒng)一調(diào)用接口、處理器與外設的統(tǒng)一訪問接口以及GDB與外設與仿真核間的統(tǒng)一接口,并對仿真核和外設進行組件化標準定義,達到了虛擬目標機可配置以及多種處理器體系支持的目標. 同時由于改造了GDB接口,使之具備能夠有效管理外設和虛擬核,達到了閉環(huán)測試、用例模擬、數(shù)據(jù)采集和覆蓋率分析的嵌入式軟件重要測試能力.
表3 與其他工具綜合能力比較
注:設備仿真支持指總線、串口、數(shù)模轉(zhuǎn)換器等滿足特定功能需求的外部設備,而非如內(nèi)存、定時器等仿真必需設備.
5.2.2 結果分析
定義了處理器虛擬功能集合、交互邏輯及標準化接口;外設標準化接口;以及虛擬和與GDB間的交互邏輯與標準化接口,從而能夠支持表3中的各種能力,具體解釋如表4所示.
表4 比較結果分析
本文以構建可靈活配置、可定制、具備強大嵌入式軟件仿真調(diào)試能力的標準化虛擬測試系統(tǒng)為目標,以組件化為基礎,以虛擬處理器、外設和調(diào)試器的功能、體系、邏輯和接口的標準化為核心思想,分析設計了虛擬處理器的基礎性、必要性功能構成以及與調(diào)試器和虛擬設備間的執(zhí)行、調(diào)試接口及函數(shù)構成,以及彼此間的交互邏輯. 設計了虛擬外設的結構構成,構建虛擬處理器對虛擬設備間調(diào)用方法、數(shù)據(jù)交互過程. 為了滿足虛擬驗證系統(tǒng)可配置、多處理器體系的靈活支持,充分分析了GDB結構、接口,優(yōu)化、改造和豐富了GDB調(diào)試器,使其可以不經(jīng)過源代碼重新編譯前提下,運行時動態(tài)加載特定虛擬處理器和相應虛擬外設,并具備故障注入、常用用力觸發(fā)、運行時數(shù)據(jù)記錄存儲等多種核心能力.
通過構建出標準化的虛擬測試系統(tǒng)規(guī)范,能夠使不同階段、不同來源的虛擬處理器和外設組件進行直接、快速、有效地整合和互聯(lián),實現(xiàn)虛擬目標機、虛擬測試系統(tǒng)、虛擬測試環(huán)境的快速搭建,從而提升虛擬測試的效率,降低研發(fā)成本.
[1] 郭向英, 張西超, 趙雷. 應用虛擬測試技術提升航天嵌入式軟件可信性[J]. 質(zhì)量與可靠性, 2014 (1): 55-59.
GUO Xiangying , ZHANG Xichao, ZHAO Lei. Application of virtual test technology to enhance the credibility of the aerospace embedded software[J]. Quality and Reliability. 2014 (1): 55-59.
[2] 蘆彩林, 丁剛毅. 嵌入式軟件全數(shù)字仿真測試環(huán)境設計[J]. 計算機仿真, 2007, 24(1): 295-297.
LU Cailin, DING Gangyi. Design of full digital simulation test environment for embedded software[J]. Computer Simulation, 2007, 24(1): 295-297. DOI: 1006-9348(2007)01-0295-03.
[3] AARNO D, ENGBLOM J. Software and system development using virtual platforms: full-system simulation with wind river simics[M]. San Francisco: Morgan Kaufmann, 2014.
[4] 葉常春. 嵌入式虛擬化技術[J]. 計算機工程與科學, 2012, 34(3): 41-45.
YE Changchun. The embedded virtualization technology[J]. Computer Engineering & Science, 2012, 34(3): 41-45, DOI: 1007-130X(2012)03-0041-05.
[5] MUTTER F, GAREIS S, SCHATZ B, et al. Model-driven in-the-loop validation: simulation-based testing of UAV software using virtual environments[C]//Engineering of Computer Based Systems (ECBS), 2011 18th IEEE International Conference and Workshops on. IEEE, 2011: 269-275.
[6] BECKER M, BALDIN D, KUZNIK C, et al. XEMU: an efficient QEMU based binary mutation testing framework for embedded software[C]//Proceedings of the Tenth ACM International Conference on Embedded Software. New York: ACM, 2012: 33-42.
[7] 李毅, 徐萍, 萬寒. 基于 QEMU 實現(xiàn)的處理器類故障模擬與注入方法研究[J]. 計算機工程與科學, 2014, 36(1): 19-27.
LI Yi, XU Ping, WAN Han. Research on a QEMU-based processor fault simulation and injection method[J]. Computer Engineering & Science[J]. , 2014, 36(1): 19-27, DOI: 1007-130X(2014)01-0019-09.[8] 肖榮榮. 基于 Bochs的X86小核前端時序模擬器的設計及優(yōu)化[M]. 北京:北京郵電大學, 2012.
XIAO Rongrong. Design and optimization based on bochs for the front-end architecture of X86 single coreprocessor[M]. Beijing University of Posts, 2012.
[9] LEE Y R, CHO S Y, LEE J B. The design a virtual prototyping based on ARMulator[C]// Fourth Annual ACIS International Conference on Computer and Information Science. Jeju Island: IEEE, 2005: 387-390.
[10]MAGNUSSON P S, CHRISTENSSON M, ESKILSON J, et al. Simics: a full system simulation platform[J]. Computer, 2002, 35(2): 50-58.
[11]SATRIA H, WIBOWO B, KWON J B, et al. VDEES: a virtual development environment for embedded software using open source software[J]. IEEE Transactions on Consumer Electronics, 2009, 55(2): 959-966.
[12]GHANEM A K, EL-MAHDY A H, EL-SALAM I A. A cycle-accurate micro-architecture simulation framework for embedded processors[C]//The 2006 International Conference on Computer Engineering and Systems. IEEE, 2006: 71-76.
(編輯 王小唯 苗秀芝)
Research on general framework of virtual testing for embedded software
QU Mingcheng1,2, CUI Naigang2, WU Xianghu1, TAO Yongchao1
(1. School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China; 2.Aerospace Science and Technology Postdoctoral Workstation, Harbin Institute of Technology, Harbin 150001, China)
In recent years, lots of fruitful results have been achieved in the aspects of simulation technology for embedded hardware and virtual testing for embedded software. However, there are some shortcomings in the previous achievements. For example, there are no overall, unified, flexible and general interfaces among the generic components, so it results that different architecture or different type of simulation processors cannot interact and integrate with simulation devices directly, and result that system-level customization capabilities are lack. Based on component, a set of general structures, standard interfaces, processing logics for virtual processors, virtual peripherals and debugger are proposed. We did some optimizations and deletions, added some new features in GDB, so that GDB can dynamically load at runtime to support multiple processor architectures. A virtual testing system is developed, by it the validity and correctness of the proposed method, structure, interfaces are verified. The proposed methods and technologies have more advantages compared with other similar technologies or projects.
embedded software testing; virtual target machine; virtual test system
10.11918/j.issn.0367-6234.201505075
2015-05-18
國家自然科學基金(61402131);中國博士后科學基金(2014M551245);黑龍江省博士后科學基金(LBH-Z13105);中央高?;究蒲袠I(yè)務費專項資金(HIT.NSRIF.201651); 中國博士后基金(2016T90293)
曲明成(1980—),男,博士/博士后,講師; 崔乃剛(1965—),男,教授,博士生導師
曲明成,qumingcheng@hit.edu.cn
TP337
A
0367-6234(2017)05-0049-07