專(zhuān)利名稱(chēng):嵌入式系統(tǒng)故障診斷方法和設(shè)有故障診斷的嵌入式系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)及其故障診斷方法。
背景技術(shù):
目前公知的技術(shù)中,嵌入式系統(tǒng)由CPU系統(tǒng)以及運(yùn)行在其上的軟件構(gòu)成,軟件可能存在bug,在運(yùn)行過(guò)程中有崩潰的可能?,F(xiàn)有技術(shù)中,軟件崩潰后必須重新啟動(dòng),重新啟動(dòng)前可能不能輸出調(diào)試信息,也就無(wú)法獲取系統(tǒng)運(yùn)行狀態(tài)和數(shù)據(jù);而重新啟動(dòng)后,須重新加載程序和數(shù)據(jù),這個(gè)過(guò)程又會(huì)破壞系統(tǒng)崩潰前的現(xiàn)場(chǎng),因此無(wú)法有效地分析和診斷系統(tǒng)故障。
發(fā)明內(nèi)容
本發(fā)明的目的之一在于提供一種在嵌入式系統(tǒng)的軟件崩潰后診斷和分析故障發(fā) 生原因的嵌入式系統(tǒng)的故障診斷方法。本發(fā)明的目的之二在于提供一種在嵌入式系統(tǒng)的軟件崩潰后診斷和分析故障發(fā)生原因的設(shè)有故障診斷的嵌入式系統(tǒng)。本發(fā)明的目的之一可以這樣實(shí)現(xiàn),設(shè)計(jì)一種嵌入式系統(tǒng)的故障診斷方法,包括以下步驟A、在嵌入式系統(tǒng)中設(shè)置一故障診斷系統(tǒng),故障診斷系統(tǒng)的存儲(chǔ)區(qū)域與主系統(tǒng)的存儲(chǔ)區(qū)域分離;B、在主系統(tǒng)運(yùn)行過(guò)程中發(fā)生錯(cuò)誤導(dǎo)致系統(tǒng)崩潰,主系統(tǒng)不再響應(yīng)或者不能正確地響應(yīng)用戶操作時(shí),啟動(dòng)診斷系統(tǒng),由診斷系統(tǒng)讀取主系統(tǒng)故障現(xiàn)場(chǎng)數(shù)據(jù)和分析故障數(shù)據(jù)。本發(fā)明的目的之二可以這樣實(shí)現(xiàn),設(shè)計(jì)一種設(shè)有故障診斷的嵌入式系統(tǒng),包括至少一個(gè)處理器;主系統(tǒng)模塊,包括應(yīng)用該嵌入式系統(tǒng)所需的業(yè)務(wù)功能模塊,用于實(shí)現(xiàn)包含嵌入式系統(tǒng)的產(chǎn)品所需要的業(yè)務(wù)功能;存儲(chǔ)器,用于存儲(chǔ)運(yùn)行數(shù)據(jù);引導(dǎo)加載模塊,用于引導(dǎo)加載啟動(dòng)主系統(tǒng);通訊端口,用于系統(tǒng)通過(guò)通訊端口輸入輸出數(shù)據(jù);復(fù)位按鈕,用于系統(tǒng)重新運(yùn)行的啟動(dòng);故障診斷模塊,用于故障診斷;故障診斷按鈕,用于啟動(dòng)故障診斷模塊,故障診斷按鈕連接至處理器;存儲(chǔ)器分為兩部分,一部分用于運(yùn)行主系統(tǒng),另一部分用于運(yùn)行故障診斷系統(tǒng),兩部分相互不重疊。本發(fā)明使得用戶在嵌入式系統(tǒng)運(yùn)行過(guò)程中如果發(fā)生主系統(tǒng)崩潰故障,能夠讀取和分析故障現(xiàn)場(chǎng)數(shù)據(jù),提高整個(gè)系統(tǒng)的可維護(hù)性和可診斷性。
圖I是本發(fā)明較佳實(shí)施例的構(gòu)成示意圖;圖2是本發(fā)明較佳實(shí)施例的啟動(dòng)流程圖;圖3是本發(fā)明較佳實(shí)施例的診斷運(yùn)行流程圖。
具體實(shí)施例方式以下結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。如圖2所示,一種嵌入式系統(tǒng)的故障診斷方法,其特征在于包括以下步驟A、在嵌入式系統(tǒng)中設(shè)置一故障診斷系統(tǒng),故障診斷系統(tǒng)的存儲(chǔ)區(qū)域與主系統(tǒng)的存儲(chǔ)區(qū)域分離; B、在主系統(tǒng)運(yùn)行過(guò)程中發(fā)生錯(cuò)誤導(dǎo)致系統(tǒng)崩潰,主系統(tǒng)不再響應(yīng)或者不能正確地響應(yīng)用戶操作時(shí),啟動(dòng)診斷系統(tǒng),由診斷系統(tǒng)讀取主系統(tǒng)故障現(xiàn)場(chǎng)數(shù)據(jù)和分析故障數(shù)據(jù)。如圖2、圖3所示,設(shè)置一故障診斷按鈕,按下故障診斷按鈕啟動(dòng)故障診斷系統(tǒng),故障診斷系統(tǒng)運(yùn)行后,初始化通訊端口,讀取主系統(tǒng)符號(hào)表,讀取主系統(tǒng)運(yùn)行區(qū)的故障現(xiàn)場(chǎng)數(shù)據(jù),加以分析并能通過(guò)系統(tǒng)的通信端口輸出。如果在沒(méi)有按下故障診斷按鈕的情況下按復(fù)位按鈕,引導(dǎo)加載模塊(bootloader)將加載主系統(tǒng)并執(zhí)行,故障診斷系統(tǒng)不加載到內(nèi)存,因此故障診斷程序完全不干擾主系統(tǒng)運(yùn)行。如果按下故障診斷按鈕后按復(fù)位鍵,系統(tǒng)將只加載故障診斷系統(tǒng)運(yùn)行,由于設(shè)計(jì)時(shí)確保故障診斷系統(tǒng)和主系統(tǒng)使用不同的存儲(chǔ)區(qū),故加載故障診斷系統(tǒng)不會(huì)破壞主系統(tǒng)發(fā)生故障后的現(xiàn)場(chǎng)數(shù)據(jù)。如圖I所示,一種設(shè)有故障診斷系統(tǒng)的嵌入式系統(tǒng),包括系統(tǒng)至少設(shè)置一個(gè)處理器11 ;主系統(tǒng)模塊18,包括應(yīng)用該嵌入式系統(tǒng)所需的業(yè)務(wù)功能模塊,用于實(shí)現(xiàn)包含嵌入式系統(tǒng)的產(chǎn)品所需要的業(yè)務(wù)功能;存儲(chǔ)器14,用于存儲(chǔ)運(yùn)行數(shù)據(jù);引導(dǎo)加載模塊16,用于引導(dǎo)加載啟動(dòng)主系統(tǒng);通訊端口 17,用于系統(tǒng)通過(guò)通訊端口輸入輸出數(shù)據(jù);復(fù)位按鈕12,用于系統(tǒng)重新運(yùn)行的啟動(dòng);故障診斷模塊19,用于故障診斷,包括數(shù)據(jù)讀取子模塊191、數(shù)據(jù)分析子模塊192,數(shù)據(jù)讀取子模塊191用于主系統(tǒng)現(xiàn)場(chǎng)數(shù)據(jù)的讀取,數(shù)據(jù)分析子模塊192用于對(duì)讀取的主系統(tǒng)現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行分析;故障診斷按鈕13,用于啟動(dòng)故障診斷模塊,故障診斷按鈕連接至處理器;系統(tǒng)運(yùn)行過(guò)程中按下故障診斷按鈕,系統(tǒng)將不做反應(yīng),如果在復(fù)位過(guò)程中按住此按鈕,系統(tǒng)將進(jìn)入故障診斷狀態(tài),否則運(yùn)行主系統(tǒng);存儲(chǔ)器14分為兩部分,一部分141用于運(yùn)行主系統(tǒng),另一部分142用于運(yùn)行故障診斷系統(tǒng),兩部分相互不重疊。這兩部分內(nèi)存地址互不重疊。一個(gè)設(shè)有故障診斷系統(tǒng)的嵌入式系統(tǒng),由主系統(tǒng)實(shí)現(xiàn)包含嵌入式系統(tǒng)的產(chǎn)品所需要的業(yè)務(wù)功能,故障診斷系統(tǒng)與主系統(tǒng)使用不同的存儲(chǔ)區(qū)域。如果在主系統(tǒng)運(yùn)行過(guò)程中,因故發(fā)生致命錯(cuò)誤導(dǎo)致系統(tǒng)崩潰,系統(tǒng)不再響應(yīng)或者不能正確地響應(yīng)用戶操作,用戶將無(wú)法正確地獲取故障現(xiàn)場(chǎng)數(shù)據(jù),無(wú)法分析故障發(fā)生的原因。此時(shí),可以立即啟動(dòng)診斷系統(tǒng),由診斷系統(tǒng)讀取和分析故障數(shù)據(jù)。由于故障診斷系統(tǒng)和主系統(tǒng)所使用的存儲(chǔ)區(qū)域不同,所以啟動(dòng)故障診斷系統(tǒng)不會(huì)破壞主系統(tǒng)的運(yùn)行現(xiàn)場(chǎng)數(shù)據(jù)。在嵌入式系統(tǒng)中增加一個(gè)故障診斷按鈕13,系統(tǒng)復(fù)位后,首先運(yùn)行引導(dǎo)加載模塊(boot loader )16, boot loader 16運(yùn)行后,首先判斷故障診斷按鈕13是否按下,如果按下,則啟動(dòng)故障診斷系統(tǒng),否則啟動(dòng)主系統(tǒng)。系統(tǒng)的內(nèi)存14劃分為兩部分,一部分142用于故障診斷,另一部分141用于運(yùn)行主系統(tǒng),兩者互相不 重疊。主系統(tǒng)運(yùn)行過(guò)程中,故障診斷系統(tǒng)不加載到內(nèi)存,杜絕故障診斷系統(tǒng)意外運(yùn)行導(dǎo)致干擾主系統(tǒng)運(yùn)行的問(wèn)題。故障診斷系統(tǒng)運(yùn)行后,將讀取主系統(tǒng)運(yùn)行區(qū)的數(shù)據(jù),加以分析并能通過(guò)系統(tǒng)的通信端口 17輸出。分析結(jié)束后,復(fù)位系統(tǒng),主系統(tǒng)即可恢復(fù)運(yùn)行。故障診斷系統(tǒng)加載后,可以通過(guò)文件系統(tǒng)或者其他方式獲取主系統(tǒng)的符號(hào)表,符號(hào)表和現(xiàn)場(chǎng)數(shù)據(jù)相結(jié)合,實(shí)現(xiàn)進(jìn)一步的診斷功能,能夠解析故障發(fā)生各個(gè)變量的值,反映代碼區(qū)是否被改寫(xiě),有沒(méi)有發(fā)生棧和緩沖區(qū)溢出等信息。這些信息,可以協(xié)助工程師診斷和定位故障,為進(jìn)一步解決問(wèn)題提供非常關(guān)鍵的幫助。
權(quán)利要求
1.一種嵌入式系統(tǒng)故障診斷方法,其特征在于包括以下步驟 A、在嵌入式系統(tǒng)中設(shè)置一故障診斷系統(tǒng),故障診斷系統(tǒng)的存儲(chǔ)區(qū)域與主系統(tǒng)的存儲(chǔ)區(qū)域分離; B、在主系統(tǒng)運(yùn)行過(guò)程中發(fā)生錯(cuò)誤導(dǎo)致系統(tǒng)崩潰,主系統(tǒng)不再響應(yīng)或者不能正確地響應(yīng)用戶操作時(shí),啟動(dòng)診斷系統(tǒng),由診斷系統(tǒng)讀取主系統(tǒng)故障現(xiàn)場(chǎng)數(shù)據(jù)和分析故障數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的嵌入式系統(tǒng)故障診斷方法,其特征在于設(shè)置一故障診斷按鈕,按下故障診斷按鈕啟動(dòng)故障診斷系統(tǒng),故障診斷系統(tǒng)運(yùn)行后,讀取主系統(tǒng)運(yùn)行區(qū)的數(shù)據(jù),加以分析并能通過(guò)系統(tǒng)的通信端口輸出。
3.根據(jù)權(quán)利要求I所述的嵌入式系統(tǒng)故障診斷方法,其特征在于故障診斷系統(tǒng)運(yùn)行后,故障診斷系統(tǒng)讀取主系統(tǒng)的符號(hào)表和現(xiàn)場(chǎng)數(shù)據(jù)。
4.一種設(shè)有故障診斷的嵌入式系統(tǒng),包括 至少一個(gè)處理器(11); 主系統(tǒng)模塊(18),包括應(yīng)用該嵌入式系統(tǒng)所需的業(yè)務(wù)功能模塊,用于實(shí)現(xiàn)包含嵌入式系統(tǒng)的產(chǎn)品所需要的業(yè)務(wù)功能; 存儲(chǔ)器(14),用于存儲(chǔ)運(yùn)行數(shù)據(jù); 引導(dǎo)加載模塊(16),用于引導(dǎo)加載啟動(dòng)主系統(tǒng); 通訊端口( 17 ),用于系統(tǒng)通過(guò)通訊端口輸入輸出數(shù)據(jù),與處理器(11)連接; 復(fù)位按鈕(12),用于系統(tǒng)重新運(yùn)行的啟動(dòng),與處理器(11)連接; 其特征在于,還包括 故障診斷模塊(19),用于故障診斷; 故障診斷按鈕(13),用于啟動(dòng)故障診斷模塊(19),故障診斷按鈕(13)連接至處理器(11); 存儲(chǔ)器(14)分為兩部分,一部分(141)用于運(yùn)行主系統(tǒng),另一部分(142)用于運(yùn)行故障診斷系統(tǒng),兩部分相互不重疊。
5.根據(jù)權(quán)利要求I所述的設(shè)有故障診斷的嵌入式系統(tǒng),其特征在于所述故障診斷模塊(19)包括數(shù)據(jù)讀取子模塊(191 )、數(shù)據(jù)分析子模塊(192),數(shù)據(jù)讀取子模塊(191)用于主 系統(tǒng)現(xiàn)場(chǎng)數(shù)據(jù)的讀取,數(shù)據(jù)分析子模塊(192)用于對(duì)讀取的主系統(tǒng)現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行分析。
全文摘要
一種嵌入式系統(tǒng)故障診斷方法和設(shè)有故障診斷的嵌入式系統(tǒng),涉及嵌入式系統(tǒng)及其故障診斷方法。嵌入式系統(tǒng)故障診斷方法,包括以下步驟A、在嵌入式系統(tǒng)中設(shè)置一故障診斷系統(tǒng),故障診斷系統(tǒng)的存儲(chǔ)區(qū)域與主系統(tǒng)的存儲(chǔ)區(qū)域分離;B、在主系統(tǒng)運(yùn)行過(guò)程中,主系統(tǒng)不能正確地響應(yīng)用戶操作,啟動(dòng)診斷系統(tǒng)讀取主系統(tǒng)故障現(xiàn)場(chǎng)數(shù)據(jù)和分析故障數(shù)據(jù)。設(shè)有故障診斷的嵌入式系統(tǒng),包括系統(tǒng)至少設(shè)置處理器、主系統(tǒng)模塊、存儲(chǔ)器、引導(dǎo)加載模塊、通訊端口、復(fù)位按鈕、故障診斷模塊、故障診斷按鈕,存儲(chǔ)器分為兩部分,一部分用于運(yùn)行主系統(tǒng),另一部分用于運(yùn)行故障診斷系統(tǒng),兩部分相互不重疊。本發(fā)明使得用戶在嵌入式系統(tǒng)運(yùn)行過(guò)程中如果發(fā)生主系統(tǒng)崩潰故障,能夠讀取和分析故障現(xiàn)場(chǎng)數(shù)據(jù),提高系統(tǒng)的可維護(hù)性和可診斷性。
文檔編號(hào)G06F11/22GK102750212SQ201210192869
公開(kāi)日2012年10月24日 申請(qǐng)日期2012年6月13日 優(yōu)先權(quán)日2012年6月13日
發(fā)明者孔德深, 羅侍田, 鄭玉成, 陳遠(yuǎn)生, 黃長(zhǎng)偉 申請(qǐng)人:長(zhǎng)園深瑞繼保自動(dòng)化有限公司