專利名稱:一種嵌入式系統(tǒng)上電自檢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種安全(Safety)領(lǐng)域內(nèi)設(shè)備上電自檢及故障隔離方法,尤其是涉及一種嵌入式系統(tǒng)上電自檢方法。
背景技術(shù):
隨著科技的發(fā)展,人們越來越依賴各種智能電子設(shè)備,而其中一些直接涉及人身安全,如軌道交通運(yùn)控系統(tǒng)、飛機(jī)的飛行控制系統(tǒng)、汽車的電子控制系統(tǒng)等關(guān)鍵電子系統(tǒng),如何確保這些電子系統(tǒng)安全可靠,成為必須解決的問題。在傳統(tǒng)的嵌入式設(shè)備中,通常上電自檢只是對內(nèi)存或特定硬件進(jìn)行檢測,并沒有考慮其它部件存在故障對系統(tǒng)的影響,尤其是安全相關(guān)的電子設(shè)備。通常傳統(tǒng)的上電自檢方法采用簡單的方法,并沒有考慮檢測覆蓋率,也就是說,它只對某一類型的故障檢測有效,檢測結(jié)果并不能完全代表設(shè)備的運(yùn)行狀態(tài)。
發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種可靠、有效、故障檢測覆蓋率高的嵌入式系統(tǒng)上電自檢方法。本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):一種嵌入式系統(tǒng)上電自檢方法,該方法包括以下步驟:I)系統(tǒng)上電,對CPU寄存器進(jìn)行檢測,判斷CPU寄存器是否存在故障,若是,則進(jìn)行故障處理,若否,則執(zhí)行步驟2);2)采用交叉走位法對內(nèi)存進(jìn)行檢測,判斷內(nèi)存是否存在故障,若是,則進(jìn)行故障處理,若否,則執(zhí)行步驟3);3)對系統(tǒng)使用到的指令進(jìn)行分類,分別對各類別指令進(jìn)行測試,并將測試結(jié)果與預(yù)期測試結(jié)果向量進(jìn)行比對,判斷所有指令是否均通過測試,若是,則執(zhí)行步驟4),若否,則進(jìn)行故障處理;4)對即將加載的操作系統(tǒng)文件及應(yīng)用程序和數(shù)據(jù)進(jìn)行ROM完整性檢測,判斷需要加載的文件是否完整,若是,則退出檢測,若否,則進(jìn)入錯誤處理。所述的CPU寄存器包括通用寄存器、特殊寄存器和I/O接口寄存器。所述的交叉走位法的具體過程如下:測試內(nèi)存數(shù)據(jù)總線,在指定地址處將數(shù)據(jù)逐位移位賦值,測試內(nèi)存數(shù)據(jù)總線操作是否正確;測試地址總線,將特定數(shù)據(jù)放入不同的地址處,測試內(nèi)存地址總線是否正確;對整個內(nèi)存進(jìn)行數(shù)據(jù)及地址的遞增及遞減操作,在每次操作結(jié)束后,對操作結(jié)果進(jìn)行驗(yàn)證,如通過則執(zhí)行步驟3),否則直接返回錯誤結(jié)果。所述的指令的類別包括加、減、乘、除、移位、加載及存儲。所述的ROM完整性檢測采用的方法為基于MD5碼的文件完整性檢測方法。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):1、本發(fā)明考慮了嵌入式系統(tǒng)的關(guān)鍵部件(CPU、內(nèi)存、FLASH)失效問題以及拷貝過程中關(guān)鍵文件和數(shù)據(jù)損壞問題,采用的檢測方法診斷覆蓋率高,適用范圍廣(可推廣至各種ARM、X86嵌入式系統(tǒng)中);2、本發(fā)明的關(guān)鍵測試代碼可采用匯編語言開發(fā),執(zhí)行效率高,無需更改現(xiàn)有硬件設(shè)計(jì),而且該方法實(shí)現(xiàn)成本較低;3、診斷中發(fā)現(xiàn)了故障及時處理,將系統(tǒng)掛起。
圖1為本發(fā)明的流程示意圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。本實(shí)施例以本發(fā)明技術(shù)方案為前提進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。實(shí)施例如圖1所示,一種嵌入式系統(tǒng)上電自檢方法,該方法包括以下步驟:I)系統(tǒng)上電,在初始化階段對CPU寄存器進(jìn)行檢測,判斷CPU寄存器是否存在故障,若是,則進(jìn)行故障處理,若否,則執(zhí)行步驟2);2)采用交叉走位法對內(nèi)存進(jìn)行檢測,判斷內(nèi)存是否存在故障,若是,則進(jìn)行故障處理,若否,則系統(tǒng)會進(jìn)行其它外設(shè)的初始化工作(初始化驅(qū)動、加載驅(qū)動設(shè)備程序、發(fā)現(xiàn)設(shè)備等操作),如FLASH控制器,然后執(zhí)行步驟3);3)對系統(tǒng)使用到的指令進(jìn)行分類,分別對各類別指令進(jìn)行測試,并將測試結(jié)果與預(yù)期測試結(jié)果向量進(jìn)行比對,判斷所有指令是否均通過測試,若是,則執(zhí)行步驟4),若否,則進(jìn)行故障處理;4)當(dāng)文件系統(tǒng)組件可用時,在BootLoad程序加載操作系統(tǒng)前,對即將加載的關(guān)鍵文件(包括操作系統(tǒng)文件、應(yīng)用程序及數(shù)據(jù))進(jìn)行ROM完整性檢測,根據(jù)預(yù)存的MD5標(biāo)記值對文件進(jìn)行MD5比對運(yùn)算,判斷需要加載的文件是否完整,若是,則退出檢測,上電自檢流程結(jié)束,若否,則進(jìn)入錯誤處理。本方法中的故障處理(錯誤處理)均為根據(jù)實(shí)際故障采用現(xiàn)有的有效方法進(jìn)行處理,包括啟動備用設(shè)備、重啟或重新安裝等。為提高自檢執(zhí)行效率,該自檢方法關(guān)鍵自檢代碼全部采用匯編語言編寫;為提高開機(jī)內(nèi)存檢測速度,該部分代碼是在內(nèi)存中運(yùn)行,而非傳統(tǒng)的在閃存中或BIOS中運(yùn)行。本方法對嵌入式系統(tǒng)中典型的關(guān)鍵部件采用了高覆蓋率檢測方法,一旦發(fā)現(xiàn)故障,,程序立即進(jìn)入死循環(huán),直接將系統(tǒng)掛起,確保系統(tǒng)運(yùn)行安全。上述嵌入式系統(tǒng)上電自檢方法具體由以下幾個子方法組成:1、CPU寄存器檢測方法通常在嵌入式系統(tǒng)中,系統(tǒng)上電時的CPU寄存器存取模式為管理模式。在管理模式下,可以讀寫大部分寄存器,包括通用寄存器、特殊寄存器、I/O接口寄存器。由于在管理模式或用戶模式下均可對通用寄存器進(jìn)行操作,因此對通用寄存器除進(jìn)行走位測試外,還應(yīng)進(jìn)行通用寄存器間故障耦合的測試,在此過程中,一旦發(fā)現(xiàn)寄存器錯誤,立即跳轉(zhuǎn)至錯誤處理部分,并返回測試結(jié)果,由BootLoad主程序根據(jù)錯誤結(jié)果進(jìn)行錯誤處理。通常特殊寄存器,I/O接口寄存器在初始化過程中已被配置,因此在測試過程中應(yīng)用通用寄存器保留配置值,通過測試后恢復(fù)配置值。對特殊寄存器,I/O接口寄存器的測試采用走位測試法。該部分代碼全部采用匯編語言編寫。2、內(nèi)存測試方法通常嵌入式系統(tǒng)在開發(fā)時考慮通用應(yīng)用開發(fā),因此內(nèi)存配置一般余量較大,在上電自檢時只檢測操作系統(tǒng)和應(yīng)用所用到的內(nèi)存空間。對內(nèi)存測試采用的是“交叉走位法”,具體過程如下:首先測試內(nèi)存數(shù)據(jù)總線,在特定地址處將數(shù)據(jù)逐位移位賦值,測試內(nèi)存數(shù)據(jù)總線操作是否正確;接下來測試地址總線,將特定數(shù)據(jù)放入不同的地址處,測試內(nèi)存地址總線是否正確;最后對整個內(nèi)存進(jìn)行數(shù)據(jù)及地址的遞增及遞減操作,在每次操作結(jié)束后,對操作結(jié)果進(jìn)行驗(yàn)證,如通過則進(jìn)入下一步操作,否則直接返回錯誤結(jié)果。內(nèi)存測試代碼可采用C語言開發(fā),函數(shù)接口調(diào)用則采用匯編語言。由于上電初始化開始階段,通常代碼執(zhí)行是在FLASH中,眾所周知,內(nèi)存存取比FLASH快,而內(nèi)存測試是個耗時操作,如果測試代碼在FLASH中運(yùn)行,則上電初始化時間對于實(shí)時應(yīng)用來說過于漫長,因此必須將內(nèi)存測試代碼從FLASH中放入操作系統(tǒng)及應(yīng)用不用的內(nèi)存空間中,具體實(shí)現(xiàn)方法如下:在內(nèi)存測試代碼末中加入一個空函數(shù),通過計(jì)算空函數(shù)與內(nèi)存測試函數(shù)對應(yīng)的地址差得到內(nèi)存測試代碼段大小,將內(nèi)存測試代碼從當(dāng)前內(nèi)存測試函數(shù)地址處拷入特定的內(nèi)存空間中(操作系統(tǒng)及應(yīng)用不用的內(nèi)存空間),然后跳轉(zhuǎn)至內(nèi)存中的函數(shù)入口處。由于其它代碼仍要在FLASH中運(yùn)行,因此在跳轉(zhuǎn)過程中修改函數(shù)返回地址為調(diào)用跳轉(zhuǎn)指令后的下一條指令地址。3、匯編指令測試方法依據(jù)POWERPC指令列表及應(yīng)用可能用到的指令,將指令分成以下幾類:加、減、乘、除、移位、加載及存儲,按照EN50129標(biāo)準(zhǔn)要求準(zhǔn)備了一組高覆蓋率測試數(shù)據(jù)源,對這些指令進(jìn)行測試,測試結(jié)果與預(yù)期的測試向量表進(jìn)行比對,若,如果一致,則所有指令測試通過,則判定指令測試通過,反之若有任何一條指令測試不通過,則判定未通過測試,程序進(jìn)入錯誤處理。匯編指令測試代碼全部用匯編語言編寫,函數(shù)接口調(diào)用則采用C語言。4、ROM完糖件檢測在上電過程中,對即將加載的操作系統(tǒng)文件及應(yīng)用程序、數(shù)據(jù)進(jìn)行MD5碼完整性檢測。若操作系統(tǒng)文件及應(yīng)用程序、數(shù)據(jù)與預(yù)期MD5值一致,表示該文件在拷貝及存放時未被破壞,數(shù)據(jù)是完整的。反之則進(jìn)表示文件不完整,程序進(jìn)入錯誤處理。
權(quán)利要求
1.一種嵌入式系統(tǒng)上電自檢方法,其特征在于,該方法包括以下步驟: 1)系統(tǒng)上電,對CPU寄存器進(jìn)行檢測,判斷CPU寄存器是否存在故障,若是,則進(jìn)行故障處理,若否,則執(zhí)行步驟2); 2)采用交叉走位法對內(nèi)存進(jìn)行檢測,判斷內(nèi)存是否存在故障,若是,則進(jìn)行故障處理,若否,則執(zhí)行步驟3); 3)對系統(tǒng)使用到的指令進(jìn)行分類,分別對各類別指令進(jìn)行測試,并將測試結(jié)果與預(yù)期測試結(jié)果向量進(jìn)行比對,判斷所有指令是否均通過測試,若是,則執(zhí)行步驟4),若否,則進(jìn)行故障處理; 4)對即將加載的操作系統(tǒng)文件及應(yīng)用程序和數(shù)據(jù)進(jìn)行ROM完整性檢測,判斷需要加載的文件是否完整,若是,則退出檢測,若否,則進(jìn)入錯誤處理。
2.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)上電自檢方法,其特征在于,所述的CPU寄存器包括通用寄存器、特殊寄存器和I/O接口寄存器。
3.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)上電自檢方法,其特征在于,所述的交叉走位法的具體過程如下: 測試內(nèi)存數(shù)據(jù)總線,在指定地址處將數(shù)據(jù)逐位移位賦值,測試內(nèi)存數(shù)據(jù)總線操作是否正確; 測試地址總線,將特定數(shù)據(jù)放入不同的地址處,測試內(nèi)存地址總線是否正確; 對整個內(nèi)存進(jìn)行數(shù)據(jù)及地址的遞增及遞減操作,在每次操作結(jié)束后,對操作結(jié)果進(jìn)行驗(yàn)證,如通過則執(zhí)行步驟3),否則直接返回錯誤結(jié)果。
4.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)上電自檢方法,其特征在于,所述的指令的類別包括加、減、乘、除、移位、加載及存儲。
5.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)上電自檢方法,其特征在于,所述的ROM完整性檢測采用的方法為基于MD5碼的文件完整性檢測方法。
全文摘要
本發(fā)明涉及一種嵌入式系統(tǒng)上電自檢方法,該方法包括以下步驟1)系統(tǒng)上電,對CPU寄存器進(jìn)行檢測;2)采用交叉走位法對內(nèi)存進(jìn)行檢測,判斷內(nèi)存是否存在故障;3)對系統(tǒng)使用到的指令進(jìn)行分類,分別對各類別指令進(jìn)行測試,并將測試結(jié)果與預(yù)期測試結(jié)果向量進(jìn)行比對,判斷所有指令是否均通過測試,若是,則執(zhí)行步驟4),若否,則進(jìn)行故障處理;4)對即將加載的操作系統(tǒng)文件及應(yīng)用程序和數(shù)據(jù)進(jìn)行ROM完整性檢測,判斷需要加載的文件是否完整,若是,則退出檢測,若否,則進(jìn)入錯誤處理。與現(xiàn)有技術(shù)相比,本發(fā)明具有可靠、有效、故障檢測覆蓋率高等優(yōu)點(diǎn)。
文檔編號G06F11/22GK103176875SQ20131008857
公開日2013年6月26日 申請日期2013年3月19日 優(yōu)先權(quán)日2013年3月19日
發(fā)明者孫軍峰, 王瀾, 耿進(jìn)龍, 崔丹, 張磊, 徐軍, 汪明新 申請人:卡斯柯信號有限公司