基于jtag調(diào)試方式實現(xiàn)通用型故障注入系統(tǒng)和故障注入方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種故障注入系統(tǒng)和故障注入方法,具體地,涉及一種基于JTAG調(diào)試方式實現(xiàn)通用型故障注入系統(tǒng)和故障注入方法。
【背景技術(shù)】
[0002]現(xiàn)有故障注入方案有三種:硬件故障注入、仿真故障注入和軟件故障注入。其中硬件故障注入用于完成物理級的故障注入,仿真故障注入通過改變邏輯和時間開銷達到故障注入的效果,而軟件故障注入是通過生成軟件級的錯誤,從而造成硬件級的故障?,F(xiàn)有的軟件故障注入方式,是通過外部設(shè)備產(chǎn)生故障信號,將該故障信號注入給被測設(shè)備,或者在被測系統(tǒng)的源代碼中植入故障代碼從而實現(xiàn)軟件故障注入。
【發(fā)明內(nèi)容】
[0003]針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于JTAG調(diào)試方式實現(xiàn)通用型故障注入系統(tǒng)和故障注入方法,其通過被測系統(tǒng)的JTAG接口連接被測系統(tǒng),在不改變目標系統(tǒng)目標代碼,不損壞被測系統(tǒng)硬件的前提下,通過改變被測系統(tǒng)內(nèi)存、寄存器值來模擬硬件故障的產(chǎn)生,從而達到故障注入的目的。
[0004]根據(jù)本發(fā)明的一個方面,提供一種基于JTAG調(diào)試方式實現(xiàn)通用型故障注入系統(tǒng),其特征在于,包括:
[0005]代碼分析模塊:加載被測二進制代碼程序和相關(guān)的符號信息,解析符號信息和被測二進制代碼之間的關(guān)聯(lián)關(guān)系,對被測二進制代碼進行反匯編,分析指令類型,依據(jù)某種策略劃分指令執(zhí)行單元;
[0006]故障執(zhí)行模塊,接收運行控制和分析模塊的指令并根據(jù)指令要求對被測系統(tǒng)進行操作,將操作結(jié)果返回給運行控制和分析模塊;
[0007]故障定義模塊,用于定義故障內(nèi)容,需要定義故障各個階段需要對被測系統(tǒng)進行的操作;
[0008]運行控制和分析模塊,用于控制故障注入的過程和對故障結(jié)果進行分析;
[0009]報告生成模塊,用于將上述各個模塊及故障注入的實際執(zhí)行情況生成報告。
[0010]優(yōu)選地,所述故障執(zhí)行模塊通過網(wǎng)絡(luò)與運行控制和分析模塊連接,通過JTAG數(shù)據(jù)線與被測系統(tǒng)的JTAG接口連接。
[0011]優(yōu)選地,所述故障各個階段包括故障注入前、故障注入時機、故障注入內(nèi)容、故障檢查點、故障檢查對象、故障注入完成后。
[0012]本發(fā)明還提供一種基于JTAG調(diào)試方式實現(xiàn)通用型故障注入方法,其特征在于,包括以下步驟:
[0013]步驟一:加載被測二進制程序和相關(guān)符號信息,對被測程序進行反匯編,分析指令類型并依據(jù)某種策略劃分指令執(zhí)行單元,建立被測程序與符號信息之間的關(guān)聯(lián)關(guān)系;
[0014]步驟二,針對被測程序建立故障事件,定義故障注入各個階段所要進行的操作,設(shè)置故障執(zhí)行前需要做的操作、故障觸發(fā)條件、故障注入內(nèi)容、故障檢查點、故障檢查內(nèi)容等各種操作;
[0015]步驟三:通過仿真器,下載被測程序和相關(guān)配置信息,按照故障各階段的定義執(zhí)行故障注入過程;
[0016]步驟四:根據(jù)仿真器的指令反饋信息,檢測故障觸發(fā)條件是否滿足,若滿足故障注入條件,則執(zhí)行故障注入內(nèi)容的相關(guān)指令,將故障注入到被測設(shè)備中;
[0017]步驟五:檢測故障檢查點是否觸發(fā),當(dāng)滿足故障檢查點的條件后,執(zhí)行故障檢查內(nèi)容的相關(guān)指令,驗證被測設(shè)備和程序,被注入故障后的執(zhí)行結(jié)果是否跟預(yù)期結(jié)果一致;
[0018]步驟六:執(zhí)行故障注入完成后的相關(guān)指令內(nèi)容,結(jié)束一條故障注入事件;
[0019]步驟七:重復(fù)步驟三、步驟四、步驟五、步驟六,直到所有預(yù)定義的每條故障注入事件全部執(zhí)行或由用戶手動停止執(zhí)行;
[0020]步驟八:對執(zhí)行過的故障注入事件進行分析,得出每條故障注入實際執(zhí)行結(jié)果和總體執(zhí)行結(jié)果,根據(jù)用戶設(shè)定和用戶自定義的報告模板,生成故障注入結(jié)果報告。
[0021]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:本發(fā)明不在被測系統(tǒng)中植入程序,不修改被測系統(tǒng)相關(guān)代碼,更真實的反映被測系統(tǒng)在注入故障后的執(zhí)行情況。本發(fā)明的故障執(zhí)行模塊采用具有調(diào)試功能的JTAG接口對被測系統(tǒng)進行故障注入,具有通用性,不會破壞被測系統(tǒng)的硬件環(huán)境。
【附圖說明】
[0022]通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0023]圖1為本發(fā)明基于JTAG調(diào)試方式實現(xiàn)通用型故障注入系統(tǒng)的原理框圖。
【具體實施方式】
[0024]下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領(lǐng)域的技術(shù)人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進。這些都屬于本發(fā)明的保護范圍。
[0025]如圖1所示,本發(fā)明基于JTAG調(diào)試方式實現(xiàn)通用型故障注入系統(tǒng)包括:
[0026]代碼分析模塊:加載被測二進制代碼程序和相關(guān)的符號信息,解析符號信息和被測二進制代碼之間的關(guān)聯(lián)關(guān)系,對被測二進制代碼進行反匯編,分析指令類型,依據(jù)某種策略劃分指令執(zhí)行單元。
[0027]故障執(zhí)行模塊,主要由基于JTAG調(diào)試方式實現(xiàn)的JTAG仿真器構(gòu)成,該模塊通過網(wǎng)絡(luò)與運行控制和分析模塊連接,通過JTAG數(shù)據(jù)線與被測系統(tǒng)的JTAG接口連接。該模塊接收運行控制和分析模塊的指令并根據(jù)指令要求對被測系統(tǒng)進行操作,將操作結(jié)果返回給運行控制和分析模塊。該模塊所處理的指令包括讀寫寄存器、讀寫內(nèi)存、設(shè)置或取消斷點、監(jiān)控被測系統(tǒng)是否處于停止狀態(tài)、驅(qū)動被測系統(tǒng)運行、驅(qū)動被測系統(tǒng)走單步、停止被測系統(tǒng)的運行、復(fù)位被測系統(tǒng)及其它調(diào)試相關(guān)命令。
[0028]故障定義模塊,用于定義故障內(nèi)容,需要定義故障各個階段需要對被測系統(tǒng)進行的操作。這些階段包括:故障注入前、故障注入時機、故障注入內(nèi)容、故障檢查點、故障檢查對象、故障注入完成后。
[0029]故障注入各階段的設(shè)置內(nèi)容包括:(I)故障注入前,用于設(shè)置注入故障前需要對被測系統(tǒng)進行的操作。包括復(fù)位被測系統(tǒng)、下載被測程序、修改程序入口等。(2)故障注入時機,用于設(shè)置注入故障的時間點。包括被測程序運行到某個位置、被測程序觸發(fā)某個斷點、被測程序達到某種覆蓋率、寄存器或某個內(nèi)存值變?yōu)槟硞€指定的值等。(3)故障注入內(nèi)容,用于設(shè)置對被測程序和系統(tǒng)進行修改的一系列操作。包括修改寄存器、修改外設(shè)寄存器、修改內(nèi)存值、修改全局變量值、修改程序指針等。(4)故障檢查點,用于設(shè)置終止被測程序和被測系統(tǒng)運行的終止條件。包括觸發(fā)某個斷點或觸發(fā)某些中斷、運行