關于仿真器的嵌入式測試平臺相關軟件比較論文
關于仿真器的嵌入式測試平臺相關軟件比較論文
仿真器是指以某一系統(tǒng)復現(xiàn)另一系統(tǒng)的功能。與計算機模擬系統(tǒng)(Computer Simulation)的區(qū)別在于,仿真器致力于模仿系統(tǒng)的外在表現(xiàn)、行為,而不是模擬系統(tǒng)的抽象模型。以下是學習啦小編今天為大家精心準備的:關于仿真器的嵌入式測試平臺相關軟件比較相關論文。內(nèi)容僅供閱讀與參考!
關于仿真器的嵌入式測試平臺相關軟件比較全文如下:
1 純硬件形式
常見的有在線仿真器和邏輯分析儀。在線仿真器可以完全仿真目標芯片的行為,準確度高,運行速度快,但工藝設計復雜,價格昂貴。邏輯分析儀通過監(jiān)控和采樣總線數(shù)據(jù)執(zhí)行測試,完備性受限于采樣頻率,而提高采樣頻率則會大幅提高成本?;谟布臏y試工具通常用于計算機硬件的設計和測試,很少用于嵌入式軟件的測試。
2 純軟件形式
包括插樁和軟件仿真兩種典型方法。插樁向被測程序的特定位置插入探針,據(jù)此獲得程序的運行信息。優(yōu)點是實現(xiàn)簡單,缺點是改變了被測程序,無法得到被測程序的精確執(zhí)行軌跡和執(zhí)行時間。軟件仿真通過構建目標機的虛擬仿真環(huán)境,在宿主機上加載待測程序執(zhí)行測試(目標機指嵌入式軟件的運行環(huán)境,宿主機指嵌入式軟件的開發(fā)環(huán)境,下同)。優(yōu)點是可獲得待測程序的精確執(zhí)行軌跡,缺點是速度較慢。
3 軟硬結合形式
綜合了純硬件和純軟件形式的特點,代表工具是 CodeTEST。測試環(huán)境接近于真實環(huán)境,準確性較高。缺點是硬件依賴性強,靈活性及可移植性差,成本昂貴。
理論上講,嵌入式軟件測試應在目標機進行,畢竟軟件最終運行在目標機上。但嵌入式系統(tǒng)多采用軟硬件協(xié)同開發(fā),在軟件開發(fā)過程中,目標機環(huán)境很有限,甚至不可用,無法滿足軟件測試的需要。此外,由于目標機的專用性,目標機下的測試工具比宿主機下的同類工具往往昂貴得多??紤]到上述因素,應將盡可能多的測試工作放在宿主機進行。但由于體系結構的差異,目標機軟件一般不能在宿主機直接運行,這就需要建立目標機的仿真環(huán)境,即通過軟件仿真進行測試。
軟件仿真是一種經(jīng)濟靈活的測試策略,可在沒有目標機硬件的情況下測試,準確性高,可以獲取精確的運行時間,能靈活控制程序的運行狀態(tài)。采用軟件仿真測試也可以避免將程序燒錄到目標機 ROM 造成的測試困難,降低開發(fā)成本。
3.1 當前嵌入式測試工具的不足
不少嵌入式測試工具采用軟件仿真測試。傳統(tǒng)仿真工具的測試流程是:編譯獲得被測程序的可執(zhí)行程序,加載到仿真器運行,獲得測試結果。這些工具對集成測試和系統(tǒng)測試支持較好,對單元測試的支持不佳,看一個具體例子。
通過例 1 可得到以下結論:單元測試時很多模塊尚未編寫完畢,若采用傳統(tǒng)的嵌入式軟件測試方法,需要編寫大量的樁函數(shù),工作量大。
測試者需熟悉嵌入式軟件的開發(fā)語言,這樣才能編寫樁函數(shù)。軟件開發(fā)者通常會參與單元測試,這類人員可滿足要求。但為提高軟件質(zhì)量,一般需安排專門的測試人員測試。嵌入式開發(fā)通常采用匯編等底層語言,種類繁多且較難學習,對測試者要求較高。修改樁函數(shù)和外部變量后,需重新編譯生成可執(zhí)行程序,重新加載到仿真器測試。每做一點修改,均需重復上述步驟,測試過程繁瑣。測試的針對性不強,只能加載整個可執(zhí)行程序測試,無法針對特定的關注單元測試。
以航天某院為例,盡管購置了CodeTEST、Logiscope等昂貴的測試工具,但上述測試問題仍非常突出,其它工具也普遍存在類似的局限性。
本文介紹了一種新的嵌入式軟件測試方法,可以彌補上述不足。其特色和創(chuàng)新體現(xiàn)在三方面:
1) 通過自行構建鏈接器,而不采用缺省的鏈接器完成鏈接,生成“內(nèi)存映像”(此處的“內(nèi)存映像”與可執(zhí)行程序類似,但并不完全一致,本文采用該術語以區(qū)分二者),可在程序代碼不完備的情況下執(zhí)行測試,能更好地支持單元測試。
2) 構建軟件仿真器,加載內(nèi)存映像測試。除具備傳統(tǒng)仿真測試的優(yōu)點外,還增加了交互式腳
本處理能力,運行過程中可直接修改樁函數(shù)和變量,無需頻繁地編譯、加載,測試更加便捷。普通測試人員可以通過高級腳本語言編寫測試用例,無需精通嵌入式平臺的專用開發(fā)語言。
3) 能對指定的關注單元進行測試,支持設定源代碼斷點,支持設定仿真的起止范圍,測試更有針對性,測試效率較高。
2 基于仿真器的嵌入式測試平臺
1) 編譯被測程序生成目標文件(x86 平臺的.obj 文件就屬于典型的目標文件)和鏈接描述文件(link description file,后文簡稱 LDF 文件)。
2)利用自行構建的鏈接器分析目標文件和庫文件,提取符號表、數(shù)據(jù)段、代碼段、可重定位段、行號信息等,按照 LDF 文件的說明進行鏈接,生成內(nèi)存映像、總符號表和行號信息表。
3) 將內(nèi)存映像加載到仿真器測試。測試過程中,可以修改內(nèi)存變量、寄存器值、樁函數(shù)等。結合測試用例注入,可實現(xiàn)單元測試和動態(tài)測試。
3.2 鏈接器構造
鏈接器根據(jù) LDF 文件的說明,提取并拼裝目標文件中的各個段,得到內(nèi)存映像、符號表和行號信息表(圖 3)。其中,內(nèi)存映像和可執(zhí)行程序功能類似;符號表定義了各個符號(包括函數(shù)、變量、標號等)的名稱、地址、文件、作用域等信息;行號信息定義了源文件中行號與內(nèi)存映像中地址的映射關系。關于行號信息的更多介紹,請參考2.3節(jié)。
目標文件中的未定義符號在鏈接時會以UNDEF 標記,只分析本文件無法解析,需要進一步分析其它文件。如果在所有文件中都沒有找到該符號,該符號就無法解析,使用標準的鏈接器無法鏈接,不能生成可執(zhí)行程序進行仿真測試。
SimAD 自行設計了鏈接器,可以有效控制鏈接過程。對于未定義符號,自動分配特殊的內(nèi)存地址,使得這些符號可以通過“解析”,進而構造可被仿真器執(zhí)行的內(nèi)存映像。這是實現(xiàn)本文測試方法的關鍵所在。這樣的設計思路有以下優(yōu)點:1) 單元測試時很多模塊不完備,可避免使用嵌入式開發(fā)語言編寫大量樁函數(shù)。即使存在未定義符號,也可以正常鏈接,提升了測試效率。
仿真器執(zhí)行時可以檢測到未定義符號,并檢查是否定義了樁函數(shù)或者進行了變量賦值。這樣,就把樁函數(shù)和外部變量的綁定由編譯期調(diào)整到了運行期。這帶來了兩個好處:可通過腳本語言設計樁函數(shù),進行變量賦值,避免了學習嵌入式開發(fā)語言的代價。 可實現(xiàn)交互式的樁函數(shù)聲明和變量賦值,避免了傳統(tǒng)的“修改樁函數(shù)和外部變量→編譯→加載運行”的繁瑣測試流程。
3.3 仿真器實現(xiàn)
仿真器完成對目標機的模擬,其基本特征是行為等價,注重對目標機行為功能的仿真,對內(nèi)部結構的仿真要求不高。重點關注:真實性、全面性、運行速度、通用性和可擴展性等指標。
SimAD 仿真器實現(xiàn)了以下模擬:①譯碼:包括運算指令譯碼,移位指令譯碼,地址寄存器譯碼,通用寄存器譯碼等;②運算模擬:包括加法器模擬、乘法器模擬及移位器模擬;③控制流處理:包括中斷、循環(huán)、跳轉、調(diào)用等;④ 地址產(chǎn)生模擬; 內(nèi)存訪問模擬; ⑤ 模擬:包括外部內(nèi)存方式和串口 DMA 方式;定時器模擬。
在實現(xiàn)功能模擬的同時,仿真器還提供了測試接口和外部交互接口,包括內(nèi)存映像的加載接口、內(nèi)存和寄存器的查看/修改接口、樁函數(shù)的設定/修改接口、數(shù)據(jù)的輸入/
輸出接口等。
對單元測試的良好支持是 SimAD 仿真器的特色之一。單元測試中不可避免地會用到樁函數(shù),仿真器提供了 setstub 樁函數(shù)設置接口。設置樁函數(shù)后,仿真器查詢其內(nèi)存地址,連同函數(shù)名一并保存到樁函數(shù)表中。在運行過程中,仿真器檢查調(diào)用的函數(shù)名是否存在于樁函數(shù)表中,若存在則不執(zhí)行內(nèi)存映像中的函數(shù)代碼,而轉去執(zhí)行測試腳本中設定的樁函數(shù)。為便于理解上述過程,看一下例2。.......
4 SimAD 測試工具介紹
本文方法已在 SimAD 測試工具中實現(xiàn)。該工具目前支持 AD21060 和 AD21020兩類芯片,可實現(xiàn)靜態(tài)分析和動態(tài)測試。已實現(xiàn)的功能包括:集成測試環(huán)境(圖 6)、鏈接器、仿真器、測試腳本解釋執(zhí)行、測試報表生成等。
圖6 SimAD 集成測試環(huán)境對測試腳本的良好支持是 SimAD 的特色。
支持新建和保存測試腳本,雙擊運行測試腳本(圖5 中的右側窗口),批量執(zhí)行測試腳本,從而提高了回歸測試[10]的執(zhí)行效率。SimAD 還提供了控制臺交互窗口,支持在仿真過程中輸入交互式的測試命令,即時控制測試過程。
圖7 交互式執(zhí)行測試命令SimAD 還支持其它測試功能,如語句覆蓋率報表、控制流著色、函數(shù)調(diào)用圖生成等,這些措施對提高測試效果也有裨益。
5 相關系統(tǒng)比較
在嵌入式軟件測試領域,國內(nèi)外使用較多的測試工具是 CodeTEST和 Logiscope。它們與SimAD 的比較見表。
3 種工具中 CodeTEST 功能最強。動態(tài)內(nèi)存分析和性能分析是其主要特點,采用軟硬件結合形式實現(xiàn),準確度較高,缺點是價格昂貴。使用CodeTEST 必須具備目標機硬件,必須生成執(zhí)行程序,對單元測試的支持不佳。
Logiscope 主要用于軟件的質(zhì)量分析和測試,其突出特點是對軟件全生命周期的支持。采用插裝方式測試,對執(zhí)行速度和運行結果會造成一定影響,無法獲得精確的執(zhí)行時間和運行軌跡。
SimAD 通過軟件仿真測試,不依賴目標機硬件,自行構造的鏈接器可處理未定義符號,可通過高級語言腳本編寫測試用例和樁函數(shù),對單元測試的支持較好。.....
6 結 論
目前的嵌入式軟件測試工具對單元測試的支持不佳,本文對此進行了研究和探索,提出了相應的解決思路,相關方法已在 SimAD 測試工具中實現(xiàn),并在航天某院的項目測試中得到實際應用,得到了該院的高度評價。與成熟的嵌入式軟件測試工具相比,SimAD仍有很多地方需要完善。
未來的主要工作包括:完善仿真器和測試框架的接口,方便第三方仿真器接入,以支持更多的嵌入式平臺軟件測試;針對 COFF、PE 等常用目標文件開發(fā)鏈接器,使之能分析鏈接多種平臺的目標文件;增加自動生成測試腳本功能,目前純手工編寫腳本,使用不太方便;增強覆蓋率分析。目前只支持語句覆蓋,需進一步支持判定覆蓋、條件覆蓋等。
參考文獻(References):
[1] 國家安全生產(chǎn)監(jiān)督管理總局.“7 23”甬溫線特別重大鐵路交通事故調(diào)查報告[EB/OL]. 北京: 國家安全生產(chǎn)監(jiān)督管理總局網(wǎng)站, 2011 .
[2] 薛偉. 利用在線仿真器(ICE)設計微機故障自動診斷系統(tǒng)[J]. 小型微型計算機系統(tǒng), 1988, 9(6): 40-44
[3] 師奕兵, 王厚軍. 高速邏輯分析儀產(chǎn)品化設計的關鍵技術[J].儀器儀表學報, 2002, 23(5): 38-40
[4] 李躍飛, 郭君紅, 白成剛, 等. 飛行控制軟件測試中的插樁技術[J]. 北京航空航天大學學報, 2009, 35(5): 580-583
[5] 周慶, 劉斌, 余正偉, 等. 綜合模塊化航電軟件仿真測試環(huán)境
研究[J]. 航空學報, 2012, 33(4): 722-733
[6] Rihar Marjan. www.51lunwen.com/software/ Software Simulator as an Effective Tool for TestingControl Algorithms [J]. Simulation, 1994, 63(1): 6-14