• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式系統(tǒng)故障注入技術(shù)研究

      2022-04-12 04:09:22劉憲忠趙昶宇
      科技與創(chuàng)新 2022年7期
      關(guān)鍵詞:故障注入測系統(tǒng)嵌入式

      劉憲忠,趙昶宇

      (1.海軍裝備部駐天津地區(qū)第二軍事代表室,天津 300308;2.天津津航計(jì)算技術(shù)研究所,天津 300308)

      由于嵌入式系統(tǒng)需要軟件和硬件協(xié)同工作,因此,嵌入式系統(tǒng)的測試難度比傳統(tǒng)的純軟件測試要高得多。對于嵌入式系統(tǒng)來說,測試難度最大同時也是最容易出問題的部位在于對異常和故障的測試。這其中不僅包括軟件異常,還包括硬件故障,這些異常和故障通常在測試時很難被測試覆蓋到,這就會給嵌入式系統(tǒng)測試帶來不確定的隱患因素。

      為了消除嵌入式系統(tǒng)測試中不穩(wěn)定的隱患因素,進(jìn)一步提高測試的覆蓋性,尤其是提高對軟件異常和硬件故障處理的測試覆蓋性,可以采用故障注入的方法來模擬真實(shí)的軟件異常和硬件故障情況。在嵌入式系統(tǒng)中通過硬件或者軟件的手段,對被測試對象“注入”提前設(shè)計(jì)好的異常和故障測試用例,通過運(yùn)行這些測試用例來測試和評估被測試軟件代碼的容錯性和異常處理能力。

      本文對故障注入的原理進(jìn)行了闡述,并列舉了幾種常用的基于故障注入測試方法。采用了故障注入的方法對嵌入式系統(tǒng)進(jìn)行測試,能夠極大地提高測試效率和測試覆蓋率,從而有效提高系統(tǒng)可靠性。

      1 故障注入原理

      故障注入是指向被測試系統(tǒng)注入某些特定的故障樣本或用例,使得被測系統(tǒng)產(chǎn)生預(yù)期的故障現(xiàn)象的過程,它是驗(yàn)證被測系統(tǒng)測試性水平的關(guān)鍵技術(shù)。

      故障注入技術(shù)主要用于進(jìn)行系統(tǒng)可靠性驗(yàn)證,它根據(jù)建立的故障注入模型,通常采用人為的向待測系統(tǒng)輸入故障信息,加速待測系統(tǒng)故障或失效,并通過觀察和分析待測系統(tǒng)對輸入故障信息的反饋結(jié)果,對待測系統(tǒng)進(jìn)行定量和定性的驗(yàn)證和評價(jià)[1]。

      故障注入技術(shù)的驗(yàn)證過程通常需要依賴整個系統(tǒng)的原理、功能、特性,F(xiàn)MEA和FMECA的結(jié)果,領(lǐng)域?qū)<业南嚓P(guān)經(jīng)驗(yàn)以及以往故障率數(shù)據(jù)等信息。在進(jìn)行故障注入時,首先需要執(zhí)行故障注入者選擇故障模型,然后基于選擇的故障模型對被測試系統(tǒng)執(zhí)行故障注入活動,通過運(yùn)行工作負(fù)載的目標(biāo)系統(tǒng),獲取系統(tǒng)的運(yùn)行狀態(tài),并對被測系統(tǒng)的反饋結(jié)果進(jìn)行驗(yàn)證評估。故障注入的原理如圖1所示。

      圖1 故障注入原理

      1.1 輸入和目標(biāo)系統(tǒng)

      嵌入式系統(tǒng)故障注入的輸入包括整個系統(tǒng)的原理、功能、特性,F(xiàn)MEA和FMECA的結(jié)果,領(lǐng)域?qū)<业南嚓P(guān)經(jīng)驗(yàn)以及以往故障率數(shù)據(jù)等信息。執(zhí)行故障注入的測試人員不僅要提供故障注入模型和注入結(jié)果分析的度量,還要采取措施保證每次故障注入過程的完整。運(yùn)行工作負(fù)載的目標(biāo)系統(tǒng)可以是系統(tǒng)模擬模型,也可以是真實(shí)系統(tǒng)原型。

      1.2 選擇故障模型

      選擇故障模型的主要功能是確定產(chǎn)生故障的屬性,并將選擇的故障模型作為“執(zhí)行故障注入”環(huán)節(jié)的輸入。如果被選中的故障模型能夠最大限度覆蓋真實(shí)系統(tǒng)運(yùn)行時的故障,則被測系統(tǒng)的反饋結(jié)果就會越精確。

      故障模型的建立通常與目標(biāo)系統(tǒng)類型、故障注入方式以及驗(yàn)證評估的結(jié)果相關(guān)。其中,硬件故障模型的屬性分為故障類型、故障發(fā)生時間、故障持續(xù)時間以及故障位置等,故障發(fā)生時間可以根據(jù)給定的分布或者按照工作負(fù)載的運(yùn)行狀態(tài)確定,故障持續(xù)時間包括瞬時、間歇和永久3種,故障位置與目標(biāo)系統(tǒng)有關(guān)。軟件故障模型的建立主要依賴于專家的經(jīng)驗(yàn)和測試結(jié)果,軟件故障注入用于測試被測系統(tǒng)的容錯機(jī)制。

      由于測試是無止境的,因此必須采取策略從龐大的故障測試用例中選取一個測試子集完成故障注入,一般采用多級抽樣、分層抽樣或者典型抽樣的方法來進(jìn)行故障測試用例的篩選。

      1.3 執(zhí)行故障注入

      在當(dāng)前步驟中需要將上一步驟中選擇的故障模型轉(zhuǎn)變?yōu)榭勺⑷氲墓收闲问?,并選擇適當(dāng)?shù)姆椒▽⒐收霞⑷肽繕?biāo)系統(tǒng)中。故障注入方法的選擇與目標(biāo)系統(tǒng)的類型密切相關(guān),若目標(biāo)系統(tǒng)是系統(tǒng)模擬模型,可針對目標(biāo)系統(tǒng)模擬層次的不同選用不同級別的注入方法,這種模擬注入的方式能夠測試到真實(shí)系統(tǒng)原型無法覆蓋的內(nèi)部功能,實(shí)現(xiàn)對被測系統(tǒng)的精確注入監(jiān)控。若目標(biāo)系統(tǒng)是真實(shí)系統(tǒng)原型,可采取基于軟硬件的物理故障注入方法,用來評估系統(tǒng)原型的可信性和驗(yàn)證被測系統(tǒng)的容錯性。

      1.4 獲取系統(tǒng)狀態(tài)和驗(yàn)證評估結(jié)果

      獲取系統(tǒng)狀態(tài)和驗(yàn)證評估結(jié)果是一次完整的故障注入活動中向測試人員提供被測系統(tǒng)反饋結(jié)果的最后步驟。在該步驟中需要測試人員判斷是否終止驗(yàn)證評估,其判斷依據(jù)包括是否滿足置信區(qū)間、測試得到的概率分布是否穩(wěn)定以及測試參數(shù)是否超過設(shè)定閾值等。若終止驗(yàn)證評估,則需驗(yàn)證評估分析所有的測試結(jié)果,反饋被測系統(tǒng)測試結(jié)果。通常采用概率統(tǒng)計(jì)的方法進(jìn)行測試結(jié)果的驗(yàn)證評估和分析。

      2 故障注入技術(shù)分類

      按照故障注入方法的不同將故障注入技術(shù)分為基于硬件的故障注入、基于模擬的故障注入和基于軟件的故障注入。故障注入技術(shù)分類如圖2所示。

      圖2 故障注入技術(shù)分類圖

      基于硬件的故障注入是指在被測系統(tǒng)的硬件中加入額外的硬件電路。該方法適用于對某些原型系統(tǒng)的可信性進(jìn)行研究?;谟布收献⑷氲奈恢脤⒃摲椒ǚ譃榻佑|式和非接觸式2種。接觸式故障注入方法可采取直接與被測系統(tǒng)電路的引腳相連接的方式,或是在被測系統(tǒng)芯片內(nèi)部植入對應(yīng)的故障模塊。該方法的優(yōu)點(diǎn)在于無需對被測系統(tǒng)進(jìn)行修改和建模驗(yàn)證,即可實(shí)現(xiàn)對被測系統(tǒng)的永久性故障注入。缺點(diǎn)是容易造成系統(tǒng)硬件損壞,增加了硬件設(shè)計(jì)的結(jié)構(gòu)復(fù)雜性和芯片設(shè)計(jì)難度。非接觸式故障注入方法中故障注入器和被測系統(tǒng)之間沒有物理連接,因此,它無法準(zhǔn)確把握故障注入的時間和位置。

      基于模擬的故障注入是指在被測系統(tǒng)開發(fā)設(shè)計(jì)階段通過建立解析和模擬模型來獲取被測系統(tǒng)中大多數(shù)可信性度量信息,通常在功能級別測試系統(tǒng)的各種性能是否滿足要求。模擬模型可實(shí)現(xiàn)對被測系統(tǒng)的細(xì)節(jié)設(shè)計(jì)的模擬,這樣便于對注入故障進(jìn)行精確監(jiān)控。基于功能級別的模擬故障注入可將故障注入到被測系統(tǒng)的CPU、通信部件、存儲部件或軟件模塊上,因此,需要對被注入的部件或模塊分別建立不同的故障模型。該方法一般應(yīng)用于系統(tǒng)早期設(shè)計(jì)階段,能夠較好地模擬內(nèi)存Bit位翻轉(zhuǎn)和硬件寄存器故障,缺點(diǎn)是建模難度和工作量較大,且容易產(chǎn)生“組合爆炸”問題。

      基于軟件的故障注入是指在無需額外硬件設(shè)備輔助的情況下,通過設(shè)置程序指令或修改被測系統(tǒng)的內(nèi)存來模擬被測系統(tǒng)CPU、內(nèi)存、寄存器或網(wǎng)絡(luò)硬件故障,通過在軟件編譯前調(diào)整軟件結(jié)構(gòu)或是運(yùn)行時改變程序變量或狀態(tài)來模擬系統(tǒng)軟件故障[2]。該方法可以在被測系統(tǒng)的操作系統(tǒng)中設(shè)計(jì)故障注入層,或者直接將故障注入到應(yīng)用程序中,它既能模擬部分硬件故障,也能設(shè)計(jì)軟件方面的故障。該方法的最大優(yōu)點(diǎn)是故障注入成本低,易于實(shí)現(xiàn),并且不會破壞被測系統(tǒng)的硬件環(huán)境。但是也存在著缺點(diǎn),比如只能對軟件能夠訪問的位置或部件進(jìn)行故障注入,有時會改變被測系統(tǒng)原始軟件結(jié)構(gòu),干擾被測系統(tǒng)軟件運(yùn)行,還有就是時間精度和分辨率較小,導(dǎo)致無法準(zhǔn)確捕捉到異常和錯誤情況等。根據(jù)故障注入的時機(jī)將將基于軟件的故障注入方法分為編譯時故障注入和運(yùn)行時故障注入2種。編譯時故障注入是指在被測系統(tǒng)的程序目標(biāo)碼被加載執(zhí)行前,將軟件故障注入到程序源代碼中以模擬被測系統(tǒng)軟硬件故障。它需修改被測系統(tǒng)的軟件源代碼,當(dāng)被測系統(tǒng)的軟件運(yùn)行后,則不會受到外界干擾,缺點(diǎn)是無法實(shí)現(xiàn)故障的實(shí)時模擬。運(yùn)行時故障是指當(dāng)被測系統(tǒng)中的軟件運(yùn)行后,采用特定方式將故障注入被測系統(tǒng)中。它無需修改被測系統(tǒng)的軟件源代碼,可以實(shí)時模擬軟硬件故障,缺點(diǎn)是無法模擬永久性故障。

      本文重點(diǎn)闡述基于軟件的故障注入方法及其在工程中的實(shí)際應(yīng)用。

      3 嵌入式系統(tǒng)故障注入方法

      嵌入式系統(tǒng)中常用的基于軟件的故障注入方法有修改軟件源程序法、基于開發(fā)環(huán)境故障注入、設(shè)備驅(qū)動故障注入和其他故障注入方法。

      3.1 修改軟件源程序?qū)崿F(xiàn)故障注入

      通過修改軟件源程序進(jìn)行故障注入是目前最常用的注入故障方法。這種方法的最大優(yōu)點(diǎn)是無需借助外部資源和測試工具,同時也無需在軟件源程序中設(shè)置斷點(diǎn),只需修改源程序中進(jìn)入并執(zhí)行異常處理的判斷條件,即可實(shí)現(xiàn)對故障的靈活注入[3]。但是該方法也存在以下不足。

      對嵌入式系統(tǒng)進(jìn)行故障注入時,需要軟件測試人員和軟件設(shè)計(jì)人員同時在場,軟件測試人員需在軟件設(shè)計(jì)人員的指導(dǎo)下完成源程序修改和故障注入工作。該方法在處理和時序相關(guān)的故障注入時,需要對源程序進(jìn)行較大的改動,極有可能在改動源程序時產(chǎn)生新的系統(tǒng)故障?;诓煌墓收献⑷肽J?,需要修改并生成多個版本的軟件源程序,增加了軟件版本管理的工作量和復(fù)雜程度。

      3.2 基于開發(fā)環(huán)境的故障注入方法

      在嵌入式系統(tǒng)軟件的編碼和調(diào)試階段,通?;谲浖_發(fā)環(huán)境對系統(tǒng)進(jìn)行故障注入。在開發(fā)環(huán)境中通過設(shè)置調(diào)試斷點(diǎn)的方式,或者在開發(fā)環(huán)境和目標(biāo)機(jī)之間建立網(wǎng)絡(luò)連接的方式來修改嵌入式系統(tǒng)軟件內(nèi)存或者寄存器狀態(tài)。該方法最大的優(yōu)點(diǎn)是無需修改嵌入式軟件源程序,在進(jìn)行故障注入時可以極大地減少軟件設(shè)計(jì)人員的占用率。該方法也存在以下的局限性和不足。

      該方法在利用通用的軟件開發(fā)環(huán)境對具有同步功能的嵌入式余度系統(tǒng)進(jìn)行故障注入時,具有較大的局限性。通過開發(fā)環(huán)境進(jìn)行系統(tǒng)故障注入,通常不能保證故障注入的連續(xù)執(zhí)行,而且無法處理多線程或者中斷程序的故障注入。由于該方法不能對目標(biāo)機(jī)進(jìn)行連續(xù)故障注入測試,因此,采用該方法得到的故障注入結(jié)果不能夠真實(shí)反映嵌入式系統(tǒng)在實(shí)際工作時對故障的反饋狀態(tài)。

      3.3 基于驅(qū)動的故障注入方法

      當(dāng)嵌入式系統(tǒng)軟件包含底層驅(qū)動模塊軟件時,通??赏ㄟ^底層驅(qū)動模塊軟件向嵌入式系統(tǒng)應(yīng)用層軟件注入故障。該方法需要在底層驅(qū)動模塊軟件中預(yù)留故障注入測試接口,通過故障注入工具向底層驅(qū)動模塊軟件中注入故障。該方法最大的優(yōu)點(diǎn)是無需改動嵌入式系統(tǒng)應(yīng)用層軟件源程序,也不會對被測試嵌入式系統(tǒng)應(yīng)用層軟件的工作負(fù)載產(chǎn)生影響,該方法生成的故障更加接近真實(shí)硬件產(chǎn)生的故障。該方法最大的不足是由于需要在底層驅(qū)動模塊軟件中預(yù)留故障注入測試接口,在對系統(tǒng)進(jìn)行故障注入前需要投入較大工作量[4]。

      3.4 其他故障注入方法

      其他的故障注入方法包括超時觸發(fā)法、異?;蛳葳逵|發(fā)法和代碼插入觸發(fā)法等。

      超時觸發(fā)法。該方法采用硬件或者軟件定時器觸發(fā)故障注入。該定時器預(yù)先設(shè)定好定時時間,當(dāng)定時時間到后產(chǎn)生中斷信號,在中斷處理程序中激活故障注入。該方法無需修改被測系統(tǒng)的軟件源代碼或者工作負(fù)載。由于定時時間可以任意設(shè)定,因此,該方法可能會對被測試的嵌入式系統(tǒng)產(chǎn)生不可預(yù)知的故障影響和行為,尤其適用于模擬瞬時故障或者間隔式硬件故障。

      異?;蛳葳逵|發(fā)法。該方法采用硬件異?;蛘哕浖葳鍋碛|發(fā)故障注入。與超時觸發(fā)方法不同,它不用設(shè)置定時器就能利用硬件異?;蜍浖葳逶谌我鈺r間或條件下實(shí)施故障注入。當(dāng)發(fā)生硬件異常或是執(zhí)行軟件陷阱時,調(diào)用中斷服務(wù)程序激活故障注入。

      代碼插入觸發(fā)法。該方法是在被測系統(tǒng)運(yùn)行時,在不改變被測系統(tǒng)原始軟件源代碼的情況下,在原始軟件源代碼的某條特定代碼之前動態(tài)的插入新的指令并執(zhí)行故障注入。這些動態(tài)插入的新指令作為被測系統(tǒng)軟件源代碼的一部分。通常情況下,被測系統(tǒng)是在特定的工作模式下采用代碼插入觸發(fā)法執(zhí)行故障注入,在被測系統(tǒng)正常的工作模式下一般不采用這種方法[5]。

      4 結(jié)束語

      本文闡述的基于軟件的故障注入方法具有對硬件資源依賴較少,簡單易用,并且具有良好的可擴(kuò)展性,可在系統(tǒng)設(shè)計(jì)的任何階段采用該方法來測試系統(tǒng)中的未知故障,并提高系統(tǒng)的健壯性和可靠性。

      隨著計(jì)算機(jī)技術(shù)在嵌入式系統(tǒng)中的不斷發(fā)展和廣泛應(yīng)用,尤其是在航空和航天等安全關(guān)鍵技術(shù)領(lǐng)域的深入推廣,人們對嵌入式系統(tǒng)的可靠性提出了越來越高的要求。目前國內(nèi)嵌入式系統(tǒng)的故障注入技術(shù)仍處于不斷探索和發(fā)展過程中,尤其在一些軍用領(lǐng)域還沒有通用的故障注入設(shè)備,無法高效完成裝備的測試性驗(yàn)證試驗(yàn)。所以完善和優(yōu)化故障注入方法,研究通用的故障注入設(shè)備,將成為所有科研人員的努力方向。

      猜你喜歡
      故障注入測系統(tǒng)嵌入式
      模擬訓(xùn)練裝備故障注入系統(tǒng)研究
      SM4算法前四輪約減輪故障注入分析
      采用修改-回放原理的1553B故障注入方法
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      列車MVB總線故障注入研究
      防洪非工程措施設(shè)計(jì)實(shí)例——嘉興市水文巡測系統(tǒng)項(xiàng)目設(shè)計(jì)
      電快速瞬變脈沖群對核測系統(tǒng)的影響及對策
      基于廣域量測系統(tǒng)的電力系統(tǒng)綜合負(fù)荷辨識模型的研究
      電測與儀表(2015年8期)2015-04-09 11:50:12
      三維標(biāo)測系統(tǒng)指導(dǎo)下射頻消融治療房顫的護(hù)理觀察
      琼海市| 正阳县| 鄢陵县| 新巴尔虎左旗| 响水县| 龙陵县| 东宁县| 鹤庆县| 探索| 武平县| 荥经县| 托里县| 玛纳斯县| 建平县| 慈利县| 梁河县| 买车| 米林县| 博乐市| 四会市| 东兰县| 天柱县| 合作市| 阳原县| 东台市| 社会| 新民市| 吕梁市| 任丘市| 堆龙德庆县| 江北区| 四川省| 蓬莱市| 营口市| 巩留县| 洪江市| 肇源县| 阿勒泰市| 信丰县| 积石山| 重庆市|