專利名稱:可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,用于空間應(yīng)用的單粒子翻轉(zhuǎn)或其他造成程序代碼錯誤的檢錯糾錯。
背景技術(shù):
對抗單粒子翻轉(zhuǎn)的設(shè)計目前主要有兩種方式,一是通過硬件設(shè)計軟件配合對應(yīng)用程序進行EDAC檢錯糾錯或者軟件直接在對單粒子翻轉(zhuǎn)幾乎免疫的高等級器件上運行,二是不依賴于硬件設(shè)計,采用純軟件設(shè)計的方式對應(yīng)用程序進行單粒子翻轉(zhuǎn)的檢錯糾錯。
近年來,從公開刊物及公開渠道上所了解到的國內(nèi)外基于存儲器RAM抗單粒子翻轉(zhuǎn)事件防護設(shè)計情況如下
方案(1)采用檢錯糾錯數(shù)據(jù)編碼對單粒子翻轉(zhuǎn)進行檢測和糾正,如奇偶校驗碼、 循環(huán)冗余檢驗碼、海明碼、R-S碼等。基于這種措施,目前國內(nèi)外主要采取下列兩種方式
a)本身自帶EDAC設(shè)計的CPU芯片。如TSC695芯片、AT697芯片系列等。
b)DSP片外存儲器+FPGA(或ASIC)實現(xiàn)的EDAC校驗。但是它不能對DSP內(nèi)部存儲器空間進行檢錯糾錯處理。
該方案主要實現(xiàn)對片外存儲器的單粒子翻轉(zhuǎn)檢錯糾錯功能,缺點是對處理器內(nèi)部程序存儲器空間不能進行單粒子翻轉(zhuǎn)檢錯糾錯功能。
方案(2)通過結(jié)構(gòu)冗余TMR實現(xiàn)軟件檢錯糾錯。采用三片處理器芯片同時運行相同的程序,由主控計算機通過處理器芯片的選擇口來控制,對地址總線和數(shù)據(jù)進行三選一判決,當(dāng)表決電路檢測出一位錯誤時,糾錯服務(wù)子程序啟動工作,來根據(jù)表決電路和自檢程序識別出的錯誤等級,錯誤類型修復(fù)系統(tǒng)回歸正常。這種方式較好的解決了單粒子翻轉(zhuǎn)問題,但是其缺點是硬件開銷大,需要硬件冗余,同時由于硬件結(jié)構(gòu)復(fù)雜,帶來了一系列可靠性問題。而本文采用純軟件設(shè)計,不需要修改硬件平臺即可實現(xiàn)抗單粒子翻轉(zhuǎn)的功能??蓞⒖嘉墨I:Single Event Upset Characterization of the SMJ320C670IDigital Signal Processor Using Proton Irradiation,David M. Hiemstra,SeniorMember IEEE,Bojan Miladinovic,and Fayez Chayab ;
方案( 程序代碼直接固化在對單粒子翻轉(zhuǎn)幾乎免疫的PROM中運行。但是大多數(shù)數(shù)字信號處理軟件功能性能由于受PROM運行速度限制,無法在PROM中運行,必須在DSP 內(nèi)部RAM中高速運行,而本方法恰恰是解決DSP內(nèi)部RAM的抗單粒子翻轉(zhuǎn)問題。
方案(4)采用應(yīng)用軟件定時刷新方式進行程序抗單粒子翻轉(zhuǎn)。該方案采取軟件定時加載刷新的方式,由于每次都要全部加載軟件,若刷新時間間隔長,則在間隔期間內(nèi)無法實現(xiàn)抗單粒子翻轉(zhuǎn)功能,若刷新太快,則由于頻繁的從PROM中讀取程序?qū)懭隦AM,既影響程序的實時運行又會產(chǎn)生一些可靠性問題。目前星載軟件一般至少是以小時或分鐘的數(shù)量級刷新一次。與該方案比較,本方法是對應(yīng)用程序單粒子翻轉(zhuǎn)檢錯后才從PROM中加載相應(yīng)部分代碼達到糾錯的目的,因此,本方法的糾錯時機優(yōu)于方案G),且方案由于是定時刷新,無法統(tǒng)計單粒子翻轉(zhuǎn)的次數(shù),而本發(fā)明可以統(tǒng)計,為地面下傳豐富的單粒子翻轉(zhuǎn)信息。
方案( 基于部分軟件重構(gòu)的抗單粒子技術(shù)。該方案采取定時加載只讀ROM中的糾錯程序?qū)崿F(xiàn)對應(yīng)用程序進行檢錯糾錯,應(yīng)用程序在運行過程中,進行保護現(xiàn)場后,通過加載糾錯代碼實現(xiàn)對應(yīng)用程序代碼的糾錯檢查,檢查后進行現(xiàn)場恢復(fù),繼續(xù)運行。該方案每次刷新前要從PROM中加載程序,也存在刷新周期的問題,對間隔期間內(nèi)無法實現(xiàn)抗單粒子翻轉(zhuǎn)檢錯糾錯功能,同時由于該糾錯程序是對程序存儲器直接編程實現(xiàn)的,不適用于目前空間大量應(yīng)用的高速信號處理器如DSP 6X系列等。參見專利申請201010527687. 6。
目前尚未在公開文獻中看到利用DMA方式,采用純軟件設(shè)計,利用容錯處理雙冗余技術(shù)對處理器內(nèi)部程序代碼進行全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法。發(fā)明內(nèi)容
本發(fā)明技術(shù)解決問題克服現(xiàn)有技術(shù)的不足,提供了一種可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,實現(xiàn)了對空間應(yīng)用中具有DMA功能的處理器程序存儲器軟件進行全面在線自檢測單粒子翻轉(zhuǎn)錯誤的檢錯糾錯,從而提高了軟件在軌運行的可靠性和安全性。
本發(fā)明技術(shù)解決方案可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特點在于包括存儲器地址鏈接配置、容錯處理參數(shù)生成模塊、容錯處理A模塊和容錯處理B模塊的執(zhí)行,步驟如下
(1)存儲器地址鏈接配置
將存儲器地址分成R0M_A區(qū)、R0M_B,根據(jù)編譯鏈接分別對應(yīng)程序存儲器的RAM_A, RAM_B ;所述R0M_A區(qū)只放置容錯處理B模塊的程序代碼,所述R0M_B區(qū)放置所有應(yīng)用程序的程序代碼,及容錯處理參數(shù)生成模塊和容錯處理A模塊的程序代碼;
(2)容錯處理參數(shù)生成模塊
通過DMA的兩個通道DMAl和DMA2分別將RAM_A,RAM_B的程序代碼搬移到程序代碼對應(yīng)的數(shù)據(jù)區(qū),通過校驗算法動態(tài)生成容錯處理A模塊和容錯處理B模塊所有的校驗參數(shù),并分別對校驗參數(shù)進行冗余存儲。
具有DMA處理器芯片上電或復(fù)位后,在初始化時調(diào)用容錯處理參數(shù)生成函數(shù)動態(tài)生成容錯參數(shù)。該程序在處理器上電或復(fù)位后僅調(diào)用執(zhí)行一次,生成的容錯參數(shù)通過冗余設(shè)計存儲在RAM中;
(3)容錯處理A模塊
容錯處理A用于自主實時監(jiān)測程序存儲器RAM_A區(qū)內(nèi)程序代碼的運行,一旦該程序代碼發(fā)生單粒子翻轉(zhuǎn)錯誤,則記錄所述錯誤信息,并啟動糾錯功能,從R0M_A中讀取程序代碼覆蓋RAM_A區(qū)程序代碼,保證RAM_A區(qū)程序代碼安全健康運行;
(4)容錯處理B模塊
容錯處理B用于自主實時監(jiān)測程序存儲器RAM_B區(qū)內(nèi)程序代碼的運行,一旦該程序代碼發(fā)生單粒子翻轉(zhuǎn)錯誤,則記錄所述錯誤信息,并啟動糾錯功能,從R0M_B中讀取程序代碼覆蓋RAM_B區(qū)程序代碼,保證RAM_B區(qū)程序代碼安全健康運行;
(5)獲取上述步驟(1)程序存儲器R0M_A區(qū)、RAM_A區(qū)的起始地址、程序存儲器 R0M_B區(qū)、RAM_B區(qū)的起始地址,讀取通過編譯鏈接后的生成的MAP表中程序代碼信息,查看 RAM_A區(qū)、RAM_B區(qū)的程序代碼長度,將這些信息作為容錯處理參數(shù)生成模塊、容錯處理A模塊和容錯處理B模塊中的形式參數(shù)予以調(diào)用,從而在線實現(xiàn)自檢測單粒子翻轉(zhuǎn)錯誤。
所述步驟O)的具體實現(xiàn)過程如下
(21)首先啟動DMAl通道,從CPU不可直接讀寫的程序存儲器RAM_B區(qū)中搬移程序代碼到數(shù)據(jù)區(qū);
(22)搬移完成后通過校驗算法動態(tài)生成RAM_B區(qū)搬移程序代碼的校驗參數(shù);
(23)通過冗余存儲方法將校驗參數(shù)存儲在數(shù)據(jù)RAM中;
(24)啟動DMA2通道,從CPU不可直接讀寫的程序存儲器RAM_A區(qū)中搬移程序代碼到數(shù)據(jù)區(qū);
(25)搬移完成后通過校驗算法動態(tài)生成RAM_A區(qū)搬移程序代碼的校驗參數(shù);
(26)通過余存儲方法將校驗和存儲在數(shù)據(jù)RAM中。
所述步驟(3)容錯處理A模塊具體實現(xiàn)過程如下
(31)搬移功能
查看DMAl通道的程序代碼是否滿足程序搬移條件,如果滿足,則設(shè)置DMAl通道的控制器參數(shù),所述控制器參數(shù)包括源地址、目的地址、DMAl通道的主控和副控寄存器設(shè)置, 源地址設(shè)置為RAM_A區(qū)起始地址,目的地址設(shè)置為數(shù)據(jù)區(qū),啟動DMAl通道的主控和副控寄存器進行程序搬移,將程序搬移條件設(shè)置為不可搬移,設(shè)置DMAl通道的程序可修復(fù)條件, 搬移工作由DMAl通道自動完成,搬移完成后源地址區(qū)程序代碼全部拷貝到目的地址數(shù)據(jù)區(qū);
(32)校驗監(jiān)測功能
a.當(dāng)DMAl通道的搬移功能完成后,進行單粒子翻轉(zhuǎn)錯誤的檢錯,通過校驗算法動態(tài)生成搬移程序代碼的校驗參數(shù),所述校驗算法與權(quán)利要求1步驟O)的相一致;
b.對動態(tài)生成的容錯處理A模塊的校驗參數(shù)進行刷新處理,達到冗余存儲的校驗參數(shù)相一致,得到冗余存儲的校驗參數(shù);
c.將b步驟的校驗參數(shù)和a步驟中的校驗參數(shù)相比較,如果不一致,則認定發(fā)生了單粒子翻轉(zhuǎn)錯誤,達到監(jiān)測功能;
(33)糾錯功能
a.上述步驟c中比較結(jié)果不一致,則啟動DMAl通道的源地址設(shè)置為R0M_A區(qū)起始地址,目的地址設(shè)置為RAM_A區(qū)起始地址;設(shè)置DMAl通道的程序不可修復(fù)條件,通過DMAl 通道的主控和副控寄存器設(shè)置啟動DMAl通道的程序代碼搬移,將R0M_A區(qū)存儲的原始的程序代碼加載到RAM,覆蓋原有異常程序代碼,從而完成單粒子翻轉(zhuǎn)錯誤的糾錯;
b.在糾錯完成,設(shè)置DMAl通道為可搬移條件,設(shè)置DMAl通道修復(fù)條件為可修復(fù), 循環(huán)完成對RAM_A區(qū)程序代碼檢的糾錯。
所述步驟(4)容錯處理B模塊具體實現(xiàn)過程如下
(41)搬移功能
查看DMA2通道的程序代碼是否滿足程序搬移條件,如果滿足,則設(shè)置DMA2通道的控制器參數(shù),所述控制器參數(shù)包括源地址、目的地址、DMA2通道的主控和副控寄存器設(shè)置, 源地址設(shè)置為RAM_B區(qū)起始地址,目的地址設(shè)置為數(shù)據(jù)區(qū),啟動DMA2通道的主控和副控寄存器進行程序搬移,將程序搬移條件設(shè)置為不可搬移,設(shè)置DMA2通道的程序可修復(fù)條件, 搬移工作由DMA2通道自動完成,搬移完成后源地址區(qū)程序代碼全部拷貝到目的地址數(shù)據(jù)區(qū);
(42)校驗監(jiān)測功能
a.當(dāng)DMA2通道的搬移功能完成后,進行單粒子翻轉(zhuǎn)錯誤的檢錯,通過校驗算法動態(tài)生成搬移程序代碼的校驗參數(shù),所述校驗算法與權(quán)利要求1步驟O)的相一致;
b.對動態(tài)生成的容錯處理B模塊的校驗參數(shù)進行刷新處理,達到冗余存儲的校驗參數(shù)相一致,得到冗余存儲的校驗參數(shù);
c.將b步驟的校驗參數(shù)和a步驟中的校驗參數(shù)相比較,如果不一致,則認定發(fā)生了單粒子翻轉(zhuǎn)錯誤,達到監(jiān)測功能;
(43)糾錯功能
a.上述步驟c中比較結(jié)果不一致,則啟動DMAl通道的源地址設(shè)置為R0M_B區(qū)起始地址,目的地址設(shè)置為RAM_B區(qū)起始地址;設(shè)置DMA 2通道的程序不可修復(fù)條件,通過DMA2 通道的主控和副控寄存器設(shè)置啟動DMA 2通道的程序代碼搬移,將R0M_B區(qū)存儲的原始的程序代碼加載到RAM,覆蓋原有異常程序代碼,從而完成單粒子翻轉(zhuǎn)錯誤的糾錯;
b.在糾錯完成,設(shè)置DMAl通道為可搬移條件,設(shè)置DMAl通道修復(fù)條件為可修復(fù), 循環(huán)完成對RAM_A區(qū)程序代碼檢的糾錯。
所述步驟O)中的校驗算法為異或和校驗算法,累加和,或CRC校驗法。
所述步驟O)中的冗余存儲為3取2冗余存儲。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于
(1)本發(fā)明主要針對目標是CPU不可直接讀寫的程序存儲器,采用純軟件實現(xiàn)了對該程序存儲器代碼進行檢錯糾錯,主要過程通過DMA方式進行,極少占用CPU時間,目的是在檢錯糾錯的同時能保證程序代碼實時運行。目前尚未在公開文獻中看到利用DMA方式和容錯處理雙冗余技術(shù)對處理器內(nèi)部程序代碼進行全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯情況,因此本發(fā)明具有一定的新穎性和創(chuàng)造性,同時節(jié)省了大量的硬件成本和時間成本, 提高了效率;
(2)現(xiàn)有技術(shù)主要是應(yīng)用軟件定時刷新方式或部分軟件重構(gòu)方式進行抗單粒子翻轉(zhuǎn)設(shè)計。該技術(shù)具有局限性,若間隔期設(shè)置長,在間隔期間內(nèi)無法實現(xiàn)抗單粒子翻轉(zhuǎn)功能; 若間隔期設(shè)置短,則因頻繁加載又會影響程序的實時運行。而本發(fā)明中對程序存儲器單粒子翻轉(zhuǎn)的檢錯糾錯時機由應(yīng)用程序調(diào)用周期決定,因此本發(fā)明糾錯時機優(yōu)于現(xiàn)有技術(shù);
(3)現(xiàn)有技術(shù)通過定時刷新或軟件重構(gòu)進行程序抗單粒子翻轉(zhuǎn),由于存在間隔期, 現(xiàn)有技術(shù)統(tǒng)計空間單粒子翻轉(zhuǎn)次數(shù)準確性低,而本發(fā)明由應(yīng)用程序調(diào)用周期決定,統(tǒng)計單粒子翻轉(zhuǎn)次數(shù)全面,可以為地面下傳豐富的單粒子翻轉(zhuǎn)信息。
圖1為本發(fā)明ROM空間及內(nèi)部存儲器空間映射搬移情況圖2為本發(fā)明的DMA搬移情況圖3為本發(fā)明的容錯處理模塊調(diào)用情況圖4為本發(fā)明的容錯處理參數(shù)動態(tài)生成函數(shù)執(zhí)行情況圖5為本發(fā)明的容錯處理A執(zhí)行流程圖6為本發(fā)明的容錯處理B執(zhí)行流程圖。
具體實施方式
以下通過使用較多的DSP 6X系列處理器來進行具體實施說明。
1、進行存儲器地址鏈接配置
DSP處理器芯片復(fù)位后,根據(jù)存儲器映射關(guān)系,采用ROM加載模式,通過處理器芯片將ROM空間的代碼全部搬移到程序存儲器空間地址上。如
圖1所示。
加載地址分段對應(yīng)情況R0M_B區(qū)放置包括所有應(yīng)用程序的程序代碼,及容錯處理參數(shù)生成模塊和容錯處理A模塊的程序代碼,程序運行時加載在對應(yīng)程序存儲器RAM_B 區(qū),;R0M_A區(qū)放置容錯處理B模塊的程序代碼,程序運行時加載到對應(yīng)程序存儲器RAM_A 區(qū),R0M_B區(qū)和R0M_A區(qū)根據(jù)各自所裝載程序量的大小來確定。
2、容錯處理參數(shù)生成
容錯處理參數(shù)生成模塊在CPU復(fù)位或上電時僅進行一次動態(tài)參數(shù)產(chǎn)生,該設(shè)計使得冗余糾錯程序最大程度的模塊化。容錯處理參數(shù)生成模塊的調(diào)用情況為void xor_ init(UNIT32*pAddl, UNIT32 * pAdd2, UNIT32pPro_lenl, UNIT32 pPro_len2),其中 pAddl 為RAM_A區(qū)起始地址,其中pAdd2為RAM_B區(qū)起始地址,pPro_lenl為RAM_A區(qū)代碼長度、 pPro_len2為RAM_B區(qū)代碼長度,調(diào)用過程如
圖3所示。容錯處理參數(shù)生成模塊執(zhí)行情況如
圖4所示,主要進行以下過程
(1)首先設(shè)置DMAl通道,源地址為RAM_A區(qū)起始地址,目的地址為數(shù)據(jù)區(qū)數(shù)組地址 &xor_ram_data_sig,設(shè)置DMAl主控、副控寄存器,啟動DMAl通道,從CPU不可直接進行讀寫的程序存儲器RAM_A區(qū)中搬移程序代碼到數(shù)據(jù)區(qū);
(2)搬移完成后計算RAM_A區(qū)搬移程序代碼的校驗參數(shù),采用的校驗算法為異或和校驗算法(也可以采用累加和,或CRC校驗法計算校驗參數(shù));
(3)通過3取2冗余存儲方法將校驗參數(shù)存儲在數(shù)據(jù)RAM中Xor_Single_Sum ;
(4)設(shè)置DMA2通道,源地址為RAM_B區(qū)起始地址,目的地址為數(shù)據(jù)區(qū)數(shù)組地址 &xor_ram_data_sig,設(shè)置DMA2主控、副控寄存器,啟動DMA2通道,從CPU不可直接進行讀寫的程序存儲器RAM_B區(qū)中搬移程序代碼到數(shù)據(jù)區(qū);
(5)搬移完成后計算RAM_B區(qū)搬移程序代碼的校驗參數(shù),采用的校驗算法為異或和校驗算法(也可以采用累加和,或CRC校驗法計算校驗參數(shù));
(6)通過3取2冗余存儲方法將校驗參數(shù)存儲在數(shù)據(jù)RAM中Xor_Al l_Sum ;
3、容錯處理A模塊執(zhí)行
應(yīng)用程序代碼周期性調(diào)用容錯處理A模塊,容錯處理A模塊的調(diào)用參數(shù)情況為 void sig_code_To_Ram(UNIT32 * pAddl,UNIT32 pPro_lenl),參數(shù)情況:pAddl 為 RAM_A 區(qū)代碼起始地址、pftx)_lenl為RAM_A區(qū)代碼長度,調(diào)用過程如
圖3所示。容錯處理 A模塊執(zhí)行情況如
圖5所示,功能實現(xiàn)包括程序代碼搬移、校驗監(jiān)測、糾錯,具體實現(xiàn)過程如下
(1)程序代碼搬移
a.查看DMAl通道的程序代碼是否滿足程序搬移條件(設(shè)置OxAA為滿足,且初始化第一次為OxAA),如果滿足,則設(shè)置DMAl通道的控制器參數(shù),源地址設(shè)置為RAM_A區(qū)起始地址,目的地址設(shè)置為數(shù)據(jù)區(qū),啟動DMAl通道的主控和副控寄存器進行程序搬移,將程序搬移條件設(shè)置為不可搬移(設(shè)置為0x0),
b.設(shè)置DMA 1通道的程序可修復(fù)條件(設(shè)置為OxAA),搬移工作由DMAl通道自動完成,搬移完成后源地址區(qū)程序代碼全部拷貝到目的地址數(shù)據(jù)區(qū);
(2)程序代碼校驗監(jiān)測
a.當(dāng)DMAl通道的搬移功能完成后,通過校驗算法動態(tài)生成RAM_Ag搬移程序代碼的校驗參數(shù),采用的校驗算法為異或和校驗算法(也可以采用累加和,或CRC校驗法計算校驗參數(shù)),保證本步驟校驗算法與容錯處理參數(shù)生成時的校驗算法一致;
b.對動態(tài)生成的容錯處理A模塊的校驗參數(shù)Xor_Single_Sum進行刷新處理,達到冗余存儲的校驗參數(shù)相一致,得到冗余存儲的校驗參數(shù);
c.將b步驟的校驗參數(shù)和a步驟中的校驗參數(shù)相比較,如果不一致,則認定發(fā)生了單粒子翻轉(zhuǎn)錯誤,達到監(jiān)測功能;
(3)程序代碼糾錯
a.上述步驟c中比較結(jié)果不一致,則啟動DMAl通道的源地址設(shè)置為R0M_A區(qū)起始地址,目的地址設(shè)置為RAM_A區(qū)起始地址;設(shè)置DMA 1通道的程序不可修復(fù)條件(設(shè)置為 0x0),通過DMAl通道的主控和副控寄存器設(shè)置啟動DMA 1通道的程序代碼搬移,將R0M_A 區(qū)存儲的原始的程序代碼加載到RAM,覆蓋原有異常程序代碼,從而完成單粒子翻轉(zhuǎn)錯誤的糾錯;
b.在糾錯完成,設(shè)置DMAl通道為可搬移條件(設(shè)置為OxAA),設(shè)置DMAl通道修復(fù)條件為可修復(fù)(設(shè)置為OxAA),循環(huán)完成對RAM_A區(qū)程序代碼檢的糾錯。
4、容錯處理B模塊執(zhí)行
應(yīng)用程序代碼周期性調(diào)用容錯處理B模塊,容錯處理B模塊的調(diào)用參數(shù)情況為 void all_code_To_Ram (UNIT32 * pAdd2,UNIT32 pPro_len2),參數(shù)情況pAdd2 為 RAM_B 區(qū)代碼起始地址、pftx)_len2為RAM_B區(qū)代碼長度,調(diào)用過程如
圖3所示。容錯處理 B模塊執(zhí)行情況如
圖6所示,功能實現(xiàn)包括程序代碼搬移、校驗監(jiān)測、糾錯,具體實現(xiàn)過程如下
(1)程序代碼搬移
a.查看DMA2通道的程序代碼是否滿足程序搬移條件(設(shè)置OxAA為滿足,且初始化第一次為OxAA),如果滿足,則設(shè)置DMA2通道的控制器參數(shù),源地址設(shè)置為RAM_B區(qū)起始地址,目的地址設(shè)置為數(shù)據(jù)區(qū),啟動DMA2通道的主控和副控寄存器進行程序搬移,將程序搬移條件設(shè)置為不可搬移(設(shè)置為0x0),
b.設(shè)置DMA 2通道的程序可修復(fù)條件(設(shè)置為OxAA),搬移工作由DMA2通道自動完成,搬移完成后源地址區(qū)程序代碼全部拷貝到目的地址數(shù)據(jù)區(qū);
(2)程序代碼校驗監(jiān)測
a.當(dāng)DMA2通道的搬移功能完成后,通過校驗算法動態(tài)生成搬移程序代碼的校驗參數(shù),采用的校驗算法為異或和校驗算法(也可以采用累加和,或CRC校驗法計算校驗參數(shù)),保證本步驟校驗算法與容錯處理參數(shù)生成時的校驗算法一致;
b.對動態(tài)生成的容錯處理B模塊的校驗參數(shù)Xor_All_Sum進行刷新處理,達到冗余存儲的校驗參數(shù)相一致,得到冗余存儲的校驗參數(shù);
c.將b步驟的校驗參數(shù)和a步驟中的校驗參數(shù)相比較,如果不一致,則認定發(fā)生了單粒子翻轉(zhuǎn)錯誤,達到監(jiān)測功能;
(3)程序代碼糾錯
a.上述步驟c中比較結(jié)果不一致,則啟動DMA2通道的源地址設(shè)置為R0M_B區(qū)起始地址,目的地址設(shè)置為RAM_B區(qū)起始地址;設(shè)置DMA 2通道的程序不可修復(fù)條件(設(shè)置為 0x0),通過DMA2通道的主控和副控寄存器設(shè)置啟動DMA 2通道的程序代碼搬移,將R0M_B 區(qū)存儲的原始的程序代碼加載到RAM,覆蓋原有異常程序代碼,從而完成單粒子翻轉(zhuǎn)錯誤的糾錯;
b.在糾錯完成,設(shè)置DMA2通道為可搬移條件(設(shè)置為OxAA),設(shè)置DMA2通道修復(fù)條件為可修復(fù)(設(shè)置為OxAA),循環(huán)完成對RAM_B區(qū)程序代碼檢的糾錯。
上述內(nèi)容以DSP內(nèi)部RAM代碼區(qū)介紹了對RAM區(qū)單粒子翻轉(zhuǎn)的檢錯、糾錯功能,實際上通過改變參數(shù)輸入,該方法適用于所有RAM區(qū)代碼、數(shù)據(jù)的檢錯糾錯,對數(shù)據(jù)區(qū)常數(shù)的糾錯。對應(yīng)用程序代碼較大的情況,可進行分段糾檢錯,以保證應(yīng)用程序代碼運行的實時性,同時達到對代碼的單粒子翻轉(zhuǎn)檢錯、糾錯的目的。
權(quán)利要求
1.可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特征在于包括存儲器地址鏈接配置、容錯處理參數(shù)生成模塊、容錯處理A模塊和容錯處理B模塊的執(zhí)行,步驟如下(1)存儲器地址鏈接配置將存儲器地址分成R0M_A區(qū)、R0M_B,根據(jù)編譯鏈接分別對應(yīng)程序存儲器的RAM_A,RAM_ B ;所述R0M_A區(qū)只放置容錯處理B模塊的程序代碼,所述R0M_B區(qū)放置所有應(yīng)用程序的程序代碼,及容錯處理參數(shù)生成模塊和容錯處理A模塊的程序代碼;(2)容錯處理參數(shù)生成模塊通過DMA的兩個通道DMAl和DMA2分別將RAM_A,RAM_B的程序代碼搬移到程序代碼對應(yīng)的數(shù)據(jù)區(qū),通過校驗算法動態(tài)生成容錯處理A模塊和容錯處理B模塊所有的校驗參數(shù),并分別對校驗參數(shù)進行冗余存儲;(3)容錯處理A模塊容錯處理A用于自主實時監(jiān)測程序存儲器RAM_A區(qū)內(nèi)程序代碼的運行,一旦該程序代碼發(fā)生單粒子翻轉(zhuǎn)錯誤,則記錄所述錯誤信息,并啟動糾錯功能,從R0M_A中讀取程序代碼覆蓋RAM_A區(qū)程序代碼,保證RAM_A區(qū)程序代碼安全健康運行;(4)容錯處理B模塊容錯處理B用于自主實時監(jiān)測程序存儲器RAM_B區(qū)內(nèi)程序代碼的運行,一旦該程序代碼發(fā)生單粒子翻轉(zhuǎn)錯誤,則記錄所述錯誤信息,并啟動糾錯功能,從R0M_B中讀取程序代碼覆蓋RAM_B區(qū)程序代碼,保證RAM_B區(qū)程序代碼安全健康運行;(5)獲取上述步驟(1)存儲器R0M_A區(qū)、RAM_A區(qū)的起始地址、存儲器R0M_B區(qū)、RAM_B 區(qū)的起始地址,讀取通過編譯鏈接后的生成的MAP表中程序代碼信息,查看RAM_A區(qū)、RAM_ B區(qū)的程序代碼長度,將這些信息作為容錯處理參數(shù)生成模塊、容錯處理A模塊和容錯處理 B模塊中的實參予以調(diào)用,從而全面在線實現(xiàn)整個程序代碼單粒子翻轉(zhuǎn)錯誤的檢錯糾錯。
2.根據(jù)權(quán)利要求1所述的可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特征在于所述步驟O)的具體實現(xiàn)過程如下(21)首先啟動DMAl通道,從CPU不可直接讀寫的程序存儲器RAM_B區(qū)中搬移程序代碼到數(shù)據(jù)區(qū);(22)搬移完成后通過校驗算法動態(tài)生成RAM_B區(qū)搬移程序代碼的校驗參數(shù);(23)通過冗余存儲方法將校驗參數(shù)存儲在數(shù)據(jù)RAM中;(24)啟動DMA2通道,從CPU不可直接讀寫的程序存儲器RAM_A區(qū)中搬移程序代碼到數(shù)據(jù)區(qū);(25)搬移完成后通過校驗算法動態(tài)生成RAM_A區(qū)搬移程序代碼的校驗參數(shù);(26)通過余存儲方法將校驗和存儲在數(shù)據(jù)RAM中。
3.根據(jù)權(quán)利要求1所述的可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特征在于所述步驟(3)容錯處理A模塊具體實現(xiàn)過程如下(31)搬移功能查看DMAl通道的程序代碼是否滿足程序搬移條件,如果滿足,則設(shè)置DMAl通道的控制器參數(shù),所述控制器參數(shù)包括源地址、目的地址、DMAl通道的主控和副控寄存器設(shè)置,源地址設(shè)置為RAM_A區(qū)起始地址,目的地址設(shè)置為數(shù)據(jù)區(qū)已定義的地址,啟動DMAl通道的主控和副控寄存器進行程序搬移,將程序搬移條件設(shè)置為不可搬移,設(shè)置DMA 1通道的程序可修復(fù)條件,搬移工作由DMAl通道自動完成,搬移完成后源地址區(qū)程序代碼全部拷貝到目的地址數(shù)據(jù)區(qū);(32)校驗監(jiān)測功能a.當(dāng)DMAl通道的搬移功能完成后,進行單粒子翻轉(zhuǎn)錯誤的檢錯,通過校驗算法動態(tài)生成搬移程序代碼的校驗參數(shù),所述校驗算法與權(quán)利要求1步驟O)的相一致;b.對動態(tài)生成的容錯處理A模塊的校驗參數(shù)進行刷新處理,達到冗余存儲的校驗參數(shù)相一致,得到冗余存儲的校驗參數(shù);c.將b步驟的校驗參數(shù)和a步驟中的校驗參數(shù)相比較,如果不一致,則認定發(fā)生了單粒子翻轉(zhuǎn)錯誤,達到監(jiān)測功能;(33)糾錯功能a.上述步驟c中比較結(jié)果不一致,則啟動DMAl通道的源地址設(shè)置為R0M_A區(qū)起始地址,目的地址設(shè)置為RAM_A區(qū)起始地址;設(shè)置DMA 1通道的程序不可修復(fù)條件,通過DMAl通道的主控和副控寄存器設(shè)置啟動DMA 1通道的程序代碼搬移,將R0M_A區(qū)存儲的原始的程序代碼加載到RAM,覆蓋原有異常程序代碼,從而完成單粒子翻轉(zhuǎn)錯誤的糾錯;b.在糾錯完成,設(shè)置DMAl通道為可搬移條件,設(shè)置DMAl通道修復(fù)條件為可修復(fù),循環(huán)完成對RAM_A區(qū)程序代碼檢的糾錯。
4.根據(jù)權(quán)利要求1所述的可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特征在于所述步驟(4)容錯處理B模塊具體實現(xiàn)過程如下(41)搬移功能查看DMA2通道的程序代碼是否滿足程序搬移條件,如果滿足,則設(shè)置DMA2通道的控制器參數(shù),所述控制器參數(shù)包括源地址、目的地址、DMA2通道的主控和副控寄存器設(shè)置,源地址設(shè)置為RAM_B區(qū)起始地址,目的地址設(shè)置為數(shù)據(jù)區(qū)已定義的地址,啟動DMA2通道的主控和副控寄存器進行程序搬移,將程序搬移條件設(shè)置為不可搬移,設(shè)置DMA 2通道的程序可修復(fù)條件,搬移工作由DMA2通道自動完成,搬移完成后源地址區(qū)程序代碼全部拷貝到目的地址數(shù)據(jù)區(qū);(42)校驗監(jiān)測功能a.當(dāng)DMA2通道的搬移功能完成后,進行單粒子翻轉(zhuǎn)錯誤的檢錯,通過校驗算法動態(tài)生成搬移程序代碼的校驗參數(shù),所述校驗算法與權(quán)利要求1步驟O)的相一致;b.對動態(tài)生成的容錯處理B模塊的校驗參數(shù)進行刷新處理,達到冗余存儲的校驗參數(shù)相一致,得到冗余存儲的校驗參數(shù);c.將b步驟的校驗參數(shù)和a步驟中的校驗參數(shù)相比較,如果不一致,則認定發(fā)生了單粒子翻轉(zhuǎn)錯誤,達到監(jiān)測功能;(43)糾錯功能a.上述步驟c中比較結(jié)果不一致,則啟動DMAl通道的源地址設(shè)置為R0M_B區(qū)起始地址,目的地址設(shè)置為RAM_B區(qū)起始地址;設(shè)置DMA 2通道的程序不可修復(fù)條件,通過DMA2通道的主控和副控寄存器設(shè)置啟動DMA 2通道的程序代碼搬移,將R0M_B區(qū)存儲的原始的程序代碼加載到RAM,覆蓋原有異常程序代碼,從而完成單粒子翻轉(zhuǎn)錯誤的糾錯;b.在糾錯完成,設(shè)置DMAl通道為可搬移條件,設(shè)置DMAl通道修復(fù)條件為可修復(fù),循環(huán)完成對RAM_A區(qū)程序代碼檢的糾錯。
5.根據(jù)權(quán)利要求1所述的可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特征在于所述步驟O)中的校驗算法為異或和校驗算法,累加和,或CRC校驗法。
6.根據(jù)權(quán)利要求1所述的可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,其特征在于所述步驟O)中的冗余存儲為3取2冗余存儲。
全文摘要
可全面在線自檢測單粒子翻轉(zhuǎn)的軟件容錯方法,包括存儲器地址鏈接配置、容錯處理參數(shù)生成模塊、容錯處理A模塊和容錯處理B模塊的執(zhí)行,DMA分段讀取程序存儲器數(shù)據(jù)通過校驗算法動態(tài)生成容錯處理參數(shù)并進行冗余存儲;容錯處理B模塊用于自主實時監(jiān)測應(yīng)用程序和容錯處理A模塊的運行,容錯處理A用于實時容錯處理B的運行,一旦程序發(fā)生單粒子翻轉(zhuǎn),從ROM加載相應(yīng)代碼段,達到對應(yīng)用程序代碼糾錯的目的,整個實現(xiàn)過程通過DMA方式進行,不占用CPU時間,在糾錯的同時保證程序?qū)崟r運行,提高了軟件在軌運行的可靠性和安全性,同時節(jié)省了大量的硬件成本和時間成本,提高了效率。
文檔編號G06F13/28GK102521062SQ201110387908
公開日2012年6月27日 申請日期2011年11月29日 優(yōu)先權(quán)日2011年11月29日
發(fā)明者吳化軍, 吳國春, 徐麗娜, 林夢園, 王一唯, 鐘興旺, 陶曉霞 申請人:西安空間無線電技術(shù)研究所