?

基于全數字仿真的飛控嵌入式軟件測試方法與實現

2023-05-24 14:45張翔彭琿張曉娜劉志浩
無線互聯科技 2023年5期
關鍵詞:故障注入軟件測試

張翔 彭琿 張曉娜 劉志浩

摘要:文章以全數字仿真測試平臺為基礎,針對飛控嵌入式軟件的典型運行環境,提出了飛控嵌入式軟件在動態測試條件下的仿真測試環境構建方法,并以某型號飛控嵌入式軟件為被測軟件,構建了基于嵌入式CPU模擬器的全數字仿真測試環境,設計并實現了飛控軟件外部運行環境的仿真。關鍵詞:仿真環境;飛控軟件;軟件測試;故障注入

中圖分類號:TP311.5文獻標志碼:A

0 引言

飛行控制軟件是飛行器姿態、速度、方向等控制的神經中樞,是飛控計算機系統中最重要的軟件之一。飛控軟件的缺陷可能直接導致重大經濟損失甚至威脅人的生命安全,所以對飛控軟件進行全面充分的測試顯得尤為重要。目前,飛控計算機的系統軟件和硬件都具有很強的耦合性[1]。軟件實現的不同功能絕大多數依賴于計算機系統硬件的結構、輸入輸出端口配置和接口特性。硬件設備研制周期長、可用數量少、測試手段受限,使得軟件研制進度受到了硬件研制進度的嚴重制約,進而導致軟件開發進度拖延、測試不充分[2]。

DSP C6x系列處理器廣泛用于處理飛控軟件指令、通信、控制,是應用較多的典型嵌入式處理器。本文以某型號飛行控制嵌入式軟件為被測軟件樣例,采用全數字仿真模擬技術搭建仿真測試平臺,介紹了基于DSP6x系列CPU模擬器的飛控嵌入式軟件仿真測試方法和實現。

1 飛控嵌入式軟件全數字仿真測試環境構建

1.1 總體架構設計

全數字仿真環境在宿主機上構造嵌入式軟件運行所必需的硬件環境,為嵌入式軟件的運行提供一個精確的數字化硬件環境模型[3]。嵌入式軟件真正運行在目標硬件之前,最大限度地模擬出目標硬件及所有交聯外圍設備,通過模擬界面完成功能的顯示,對嵌入式軟件進行充分全面的測試,以找出軟件缺陷。

飛控嵌入式軟件全數字仿真測試環境基本框架如圖1所示,全數字仿真測試平臺框架由交互界面、測試用例、故障注入、外設建模、覆蓋測試和代碼追蹤等功能模塊組成。嵌入式模擬器由流水線模擬、端口仿真、DSP指令集仿真等模塊構成。

1.2 DSP C6x模擬器的建模與實現

嵌入式CPU的仿真采取基于解釋的指令集仿真策略,仿真運行時需要經過類似于處理器硬件的取指、譯碼、執行的操作過程,實現對指令的仿真[4]。嵌入式DSP C6X處理器采用模塊化的結構設計,每個模塊均采用獨立類的結構進行設計封裝,模塊與模塊之間采用通用、標準化的數字接口。在外設接口仿真模型中,采用統一平臺的開發接口環境,便于系統的集成和一致性[5]。DSP C6x模擬器的架構設計如圖2所示,包括端口仿真、中斷仿真、流水線仿真、指令解析、內存仿真、總線仿真、寄存器仿真和時鐘仿真模塊。在模擬器運行過程中,指令集仿真器循環執行“取指、譯碼、執行”3個步驟[6]。

2 飛控嵌入式軟件外設接口仿真方法

2.1 實現原理

在嵌入式軟件的外部接口中,DSP C6X模擬器與外設接口的訪問通過外部接口寄存器進行。如圖3所示,每個外部接口的寄存器與具體地址空間一一對應,訪問外部接口寄存器實際就是訪問特殊的地址空間,通過地址空間和函數綁定,建立起唯一的外設接口函數,從而實現外部接口的仿真。例如,在外設接口函數1中,唯一對應于端口地址集1的話,則端口地址集1的外部接口則通過外設接口函數1實現。

2.2 外設接口函數實現

在真實硬件環境中,某型號飛控嵌入式軟件運行在處理器型號為DSP C6713的電子設備上,此電子設備能定時采集飛行器飛行速度、姿態等數據,并具備進行數據處理、轉換和通信等功能。該電子設備包括模擬量功能模塊、1553B總線等,主要接口有AD/DA接口、串口等。對其外設接口進行仿真實現,類圖設計如圖4所示。

2.2.1 AD/DA接口

模擬/數字轉化功能模塊包含8路的AD輸入通道和8路的DA輸出通道,其AD/DA接口的設計實現模式為:程序在每一個循環周期內,采集一次AD通道數據,并把采集到的數據通過DA轉化輸出到DA通道。當輸出的DA通道數據小于其門限值時,則輸出的數據為DA轉化后的數值;而當輸出的DA通道數據大于其門限值時,則輸出的數據為門限值。

2.2.2 串口

串口功能模塊包含RS422和RS485兩種協議的串口通道,其串口的設計實現模式為:在程序運行的每個主循環周期內,嵌入式CPU模擬器對串口的數據進行采集,判斷數據格式是否符合串口的數據幀格式。如果數據格式正確,模擬器就對數據進行解析,對數據進行處理與傳輸;反之,如果格式錯誤,就進行錯誤信息的反饋。

2.2.3 1553B總線接口

1553B總線接口是滿足1553B協議的一個通道,其設計實現模式為:程序系統啟動時,啟動并讀取配置文件,依據配置文件對1553B總線模塊進行初始化設置。在程序運行的每個主循環周期內,嵌入式CPU模擬器對1553B總線端口進行訪問。如果端口有數據,就采集并接收數據;如果端口沒有數據,就會反饋無數據的信息。

3 基于DSP C6x模擬器的飛控軟件仿真測試與實現

實現對外設接口的仿真后,測試人員就能夠在沒有硬件條件支持的情況下,實現對某型號飛控嵌入式軟件的測試,還能靈活、方便地模擬硬件故障,利用構建的全數字仿真測試環境對被測軟件進行故障注入測試[7]。

3.1 動態測試

在構建的全數字仿真測試環境中運行被測軟件,利用動態測試的方法對飛控軟件接口進行測試[8]。測試過程中共發現某型號飛控嵌入式的軟件缺陷有2個,下面對測試結果進行簡單分析。

3.1.1 內存分配缺陷

在對某型號飛控嵌入式軟件進行多次動態內存分配后,會出現內存分配失敗的情況,導致軟件數據無法及時更新,數據發生錯亂。在使用全數字仿真測試環境中的內存分析工具對被測軟件的動態內存分配過程進行分析后,發現軟件在內存分配的過程中,未及時釋放內存,導致內存溢出。

內存分配軟件缺陷源碼如下:

for (index = 0;index<10;index++)

{

testptr[index] = (int *)malloc(100*sizeof(int));

}

3.1.2 串口數組越界缺陷

在串口數據采集時,如果對串口進行多包數據注入,會導致被測軟件接收數據出現錯誤。通過對被測軟件進行動態測試可發現在串口實現函數中,變量Index達到最大值時,仍然會對UARTRX[Index++]數組進行賦值操作,導致數組索引超出定義的長度,從而產生數組越界錯誤。數組越界軟件缺陷代碼如下。

for(Index = 0;Index

{

UartTemp = read_data(rUARTRX);

UARTRX[Index] = UartTemp;

}

UARTRX[Index++] = '\\0';

3.2 故障注入測試

故障可分為硬件故障、通信故障和軟件故障3種類型,而本文對飛控嵌入式軟件系統的測試以處理器內存故障、串口寄存器故障和數據溢出故障為3種故障類型典型進行說明。

3.2.1 處理器內存故障

內存故障是指處理器中的RAM、ROM、FLASH等內存出現異常,包括內存“寫故障”、內存“讀故障”和FLASH“讀寫故障”。在內存故障模擬中,向指定的內存地址寫入錯誤的數據或者把指定內存空間的數據清空,可以有效地模擬內存故障。

3.2.2 串口寄存器通信故障

寄存器故障是處理器的寄存器值發生了變化,與正常的值不一致,原因可能是受電磁影響,致使寄存器的數值發生0和1的反轉。在被測軟件運行過程中,通過修改嵌入式模擬器中寄存器的值,可直接實現寄存器故障的模擬。

3.2.3 數據溢出軟件故障

數據溢出故障是指被測軟件在運行過程中,數據產生了溢出。無論是定點數還是浮點數運算,都有可能產生溢出。數據溢出包括數據計算溢出和數據接收存儲溢出。數據計算溢出是指數據運算時,計算結果超出指定數據結果的范圍。數據接收存儲溢出是指接收的數據超過分配的存儲空間時,數據不斷存儲導致覆蓋其他內存段數據的現象。這種情況通常出現在被測軟件中的全局數組或者結構體中。

4 結語

本文基于全數字仿真測試平臺對某型號飛控嵌入式軟件的運行環境進行虛擬化構建,以典型的嵌入式飛控軟件為被測對象,采用動態運行測試和故障注入測試對其進行全面測試。通過測試,本研究找出兩個較為嚴重的軟件缺陷,驗證了基于DSP C6x模擬器的全數字仿真測試環境在飛控嵌入式軟件測試中的靈活性和有效性。

參考文獻

[1]項文成.通用嵌入式虛擬驗證系統中SPARCV8仿真核的設計與實現[D].哈爾濱:哈爾濱工業大學,2016.

[2]王乾宇,朱小冬,王毅剛,等.嵌入式軟件仿真測試環境實時任務調度的研究[J].計算機測量與控制,2012(20):1162-1165.

[3]葉志玲,王向暉.基于CMMI星載嵌入式軟件測試技術研究[J].計算機測量與控制,2013(4):836-838.

[4]肖前遠.航空嵌入式軟件全數字仿真測試技術研究[D].南京:南京航空航天大學,2010.

[5]蘇銀科,李艷雷,周平,等.基于故障注入的實時嵌入式軟件仿真測試技術研究[J].導航定位與授時,2014(3):69-73.

[6]陳佐,張懷相,方景龍.嵌入式軟件自動化測試技術[J].計算機工程與設計,2018(39):3126-3131.

[7]黎暉,石小華,林柯軍,等.工程裝備嵌入式軟件測試環境平臺技術研究[J].計算機測量與控制,2016(24):10-12.

[8]許福,金茂忠,劉輝,等.基于仿真器的嵌入式軟件單元測試方法[J].北京航空航天大學學報,2012(12):1686-1690.

(編輯 王永超)

猜你喜歡
故障注入軟件測試
模擬訓練裝備故障注入系統研究
基于OBE的軟件測試課程教學改革探索
SM4算法前四輪約減輪故障注入分析
面向FPGA的故障注入測試技術研究*
采用修改-回放原理的1553B故障注入方法
EXCEL和VBA實現軟件測試記錄管理
關于軟件測試技術應用與發展趨勢研究
列車MVB總線故障注入研究
一種指令級Linux內核瞬時故障注入方法研究
智能電能表軟件測試技術概述
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合