專利名稱:一種系統(tǒng)崩潰前重要信息的保存方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種系統(tǒng)崩潰前重要信息的保存方法及系統(tǒng)。
背景技術(shù):
在一個系統(tǒng)中,尤其是嵌入式系統(tǒng)中,如杲軟件程序中存在Bug,或存 在硬件問題,不可避免的會產(chǎn)生系統(tǒng)崩潰的情況。如果要徹底解決系統(tǒng)崩潰 的問題,必須找出軟件Bug或硬件存在的問題,并解決這些問題;但是系統(tǒng) 崩潰往往發(fā)生在一瞬間,發(fā)生前沒有任何表現(xiàn),發(fā)生后會立即導(dǎo)致處理器死 機(jī)、重啟,不能進(jìn)行有效的問題定位。因此,在系統(tǒng)崩潰時保存重要的系統(tǒng) 信息、以及用戶關(guān)心的信息,對問題原因定位將起到非常重要的作用。
現(xiàn)在某些嵌入式操作系統(tǒng)可以通過在進(jìn)程/任務(wù)切換時,由操作系統(tǒng)或用 戶添加Hook函數(shù)方式在系統(tǒng)內(nèi)存中保存任務(wù)信息、任務(wù)切換信息、內(nèi)存信息、 或者用戶關(guān)心的信息。
如圖l所示,在一個處理器上運行的tkl、 tk2、 tk3等任務(wù),任務(wù)切換中 有一段時間是由操作系統(tǒng)控制的,如圖中的時刻A、 B、 C、 D。操作系統(tǒng)可 以在這一段時間內(nèi)執(zhí)行操作系統(tǒng)自身的功能或用戶的Hook函數(shù),以保存系統(tǒng) 信息及用戶關(guān)心的信息。信息的保存采用循環(huán)覆蓋的方式,即新的信息覆蓋 舊的信息,以便保存的信息總是最新的。例如,在圖1中,如果一個系統(tǒng)只 能保存三塊信息,那么當(dāng)時刻E系統(tǒng)崩潰時,保存的只有時刻B、 C、 D的信 息,而時刻A的信息將被覆蓋。
目前,一般系統(tǒng)是通過上述現(xiàn)有方法記錄系統(tǒng)信息的,但是該方法還存 在一定缺點
1、 不能保存系統(tǒng)崩潰時刻的信息。在圖1中,保存的最新信息就是D時 刻的信息,tkl任務(wù)運行一段時間t后才發(fā)生了系統(tǒng)崩潰,在t時間內(nèi)發(fā)生的 變化將不被記錄;而系統(tǒng)崩潰在很大程度上是由于這一段時間內(nèi)產(chǎn)生錯誤而導(dǎo)致的,所以這一段時間產(chǎn)生的變化是非常重要的。
2、 在系統(tǒng)崩潰后取出保存信息不方便、或保存的信息被破壞造成無法取
出信息的情況。 一般情況下,保存的系統(tǒng)信息都存放在系統(tǒng)內(nèi)存中,系統(tǒng)崩 潰后,需要通過仿真器等專用設(shè)備取出、或在系統(tǒng)重啟前通過特殊的程序取 出,使用非常不便。而且如果系統(tǒng)崩潰造成系統(tǒng)自動重啟,加載用戶程序后, 保存信息將會遭到破壞,造成無法取出的情況。
此外,現(xiàn)在嵌入式系統(tǒng),尤其是在通信領(lǐng)域的嵌入式系統(tǒng),發(fā)生系統(tǒng)崩 潰后都要求立即重啟恢復(fù),很難留有時間取出保存的信息。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于提供一種系統(tǒng)崩潰前重要信息的保存方法 及系統(tǒng),能夠在系統(tǒng)崩潰時即時記錄系統(tǒng)信息。
實現(xiàn)本發(fā)明目的的技術(shù)方案如下
一種系統(tǒng)崩潰時重要信息的保存方法,包括
看門狗產(chǎn)生系統(tǒng)出錯信號,提供給處理器;
所述處理器觸發(fā)異常處理程序,記錄系統(tǒng)崩潰時的重要信息;
信息記錄完成后,產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。
優(yōu)選的,所述異常處理程序?qū)⒅匾畔⒂涗浽趯S么鎯^(qū)域。
優(yōu)選的,所述專用存儲區(qū)域為系統(tǒng)內(nèi)存中劃分出來的獨立區(qū)域。
優(yōu)選的,所述專用存儲區(qū)域為區(qū)分于系統(tǒng)內(nèi)存的獨立區(qū)域。
優(yōu)選的,所述專用存儲區(qū)域提供接口函數(shù),該接口函數(shù)包括信息記錄參數(shù),用于動態(tài)記錄用戶需要保存的信息地址和長度,以及信息刪除參數(shù),用于動態(tài)記錄用戶需要刪除的信息地址。
優(yōu)選的,所述信息地址和長度通過數(shù)組或鏈表方式存儲。 一種系統(tǒng)崩潰時重要信息的保存系統(tǒng),包括
看門狗,用于產(chǎn)生系統(tǒng)出錯信號;
處理器單元,用于才艮據(jù)該系統(tǒng)出錯信號,觸發(fā)異常處理單元;
異常處理單元,用于記錄系統(tǒng)崩潰時的重要信息,并在信息記錄完成后 產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。
優(yōu)選的,還包括專用存儲單元,用于專門存儲重要信息。
優(yōu)選的,所述專用存儲單元為系統(tǒng)內(nèi)存中劃分出來的獨立單元。
優(yōu)選的,所述專用存儲單元為區(qū)分于系統(tǒng)內(nèi)存的獨立單元。
優(yōu)選的,所述專用存儲單元包括接口單元,該接口單元包括信息記錄子單元,用于動態(tài)記錄用戶需要保存的信息地址和長度,以及信息刪除子單元,用于動態(tài)記錄用戶需要刪除的信息地址。
優(yōu)選的,所述信息地址和長度通過數(shù)組或鏈表方式存儲。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果
本發(fā)明提出一種能夠在系統(tǒng)崩潰時及時記錄系統(tǒng)信息及用戶關(guān)心的信息 的方法及系統(tǒng),并且通過改變記錄信息的位置,和系統(tǒng)啟動后自動保存的方 式,可以非常簡便的取出,甚至可以通過網(wǎng)絡(luò)自動上傳到服務(wù)器,實現(xiàn)多次 自動記錄。
本發(fā)明提出的針對系統(tǒng)崩潰前保留重要信息的方法,與傳統(tǒng)的定位系統(tǒng) 崩潰問題的方法相比能夠及時的保留系統(tǒng)崩潰時刻的系統(tǒng)信息、用戶關(guān)心的 信息,而不只是系統(tǒng)崩潰前正常運行時(或不正常運行時)的信息,記錄更 完善的信息,并且可以通過對系統(tǒng)崩潰前和系統(tǒng)崩潰時刻的信息對比,以及 信息變化情況,更有利于問題的分析定位。
本發(fā)明將處理器外接的物理內(nèi)存劃出一部分內(nèi)存作為保留內(nèi)存,專門用 來儲存記錄信息。保留內(nèi)存地址固定,在記錄信息時可以直接使用物理地址 訪問。這部分內(nèi)存不受操作系統(tǒng)控制,不會被操作系統(tǒng)或其它應(yīng)用程序使用。 因此,當(dāng)系統(tǒng)崩潰時,看門狗觸發(fā)的記錄程序可以繼續(xù)訪問此內(nèi)存;并且操 作系統(tǒng)重新啟動后,也不會給覆蓋或清空此內(nèi)存,能夠安全保存上次崩潰時 記錄的信息。
另外,本發(fā)明在信息記錄模塊中向用戶程序提供改接口函數(shù)(API),用 于動態(tài)添加/刪除用戶需要保存的信息。利用該接口函數(shù),用戶可以系統(tǒng)運行 過程中,動態(tài)的添力口/刪除自己需要保存的信息,極大的提高了保存信息的靈 活性,加快問題的定位過程。
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步描述。
圖l是現(xiàn)有技術(shù)系統(tǒng)崩潰時信息記錄示意圖2是本發(fā)明系統(tǒng)崩潰時信息記錄示意圖3是本發(fā)明系統(tǒng)崩潰時信息保存方法流程圖4A、 4B分別是本發(fā)明采用數(shù)組方式和鏈表方式記錄信息的示意圖; 圖5是本發(fā)明所述方法的實現(xiàn)過程示意圖; 圖6是本發(fā)明用于信息保存的系統(tǒng)框圖; 圖7是本發(fā)明相對于現(xiàn)有系統(tǒng)內(nèi)存的使用情況示意圖。
具體實施例方式
本發(fā)明提出一種能夠在系統(tǒng)崩潰時及時記錄系統(tǒng)信息及用戶關(guān)心的信息 的方法,并且通過改變記錄信息的位置和系統(tǒng)啟動后自動保存的方式,可以 非常簡^更的耳又出信息,甚至可以通過網(wǎng)絡(luò)自動上傳到服務(wù)器,實現(xiàn)多次自動 記錄。
下面具體予以描述
在嵌入式處理器或嵌入式系統(tǒng)中,普遍使用看門狗(Watch Dog)監(jiān)控系 統(tǒng)狀態(tài); 一旦發(fā)生系統(tǒng)崩潰,看門狗產(chǎn)生信號,將處理器或系統(tǒng)復(fù)位,以便 實現(xiàn)系統(tǒng)崩潰后立即恢復(fù),將系統(tǒng)故障時間減少到最小。
看門狗一般有兩種 一種是處理器內(nèi)置的看門狗, 一般通用嵌入式處理 器都具備看門狗功能。通常處理器內(nèi)置的看門狗可以通過設(shè)置,選擇看門狗 觸發(fā)時對處理器進(jìn)行復(fù)位、或是產(chǎn)生非屏蔽異常(中斷);另一種是處理器外 置的專用看門狗芯片、或?qū)崿F(xiàn)看門狗功能的邏輯器件。外置看門狗在觸發(fā)時 可以產(chǎn)生低脈沖信號,可以通過將此信號連接到處理器的復(fù)位管腳或非屏蔽 中斷管腳,以實現(xiàn)不同的功能。
一般系統(tǒng)中,都是使用看門狗直接產(chǎn)生復(fù)位信號,實現(xiàn)復(fù)位功能。
在本發(fā)明方法中,利用看門狗產(chǎn)生的信號使處理器產(chǎn)生一個不可屏蔽異 常(中斷),觸發(fā)一段程序(此程序是一段與操作系統(tǒng)無關(guān)匯編代碼),由此 程序?qū)⑿枰4娴男畔⑦M(jìn)行儲存,信息保存完畢后,再對系統(tǒng)進(jìn)行復(fù)位。
如圖2所示,處理器在"系統(tǒng)崩潰時間點E"發(fā)生系統(tǒng)崩潰,看門狗將在 "信息記錄時間點F,,觸發(fā)異常處理程序,對需要保存的系統(tǒng)信息和用戶信息 進(jìn)行記錄;此時記錄的信息,則是系統(tǒng)崩潰時的真實信息。
如圖3所示,為本發(fā)明所述方法的流程圖,具體如下 步驟301、看門狗產(chǎn)生系統(tǒng)出錯信號,提供給處理器; 步驟302、所述處理器觸發(fā)異常處理程序,記錄系統(tǒng)崩潰時的重要信息; 步驟303、信息記錄完成后,產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。 這樣,系統(tǒng)崩潰后,看門狗可以立即觸發(fā)對系統(tǒng)信息的記錄,保證系統(tǒng) 信息的有效性。
此外,將上述記錄方式與現(xiàn)有的在任務(wù)切換時循環(huán)記錄系統(tǒng)信息的方式 相結(jié)合,可以綜合反映出系統(tǒng)信息情況。如圖2所示,任務(wù)切換循環(huán)記錄方 式可以記錄系統(tǒng)崩潰前A、 B、 C、 D時刻系統(tǒng)信息的情況,上述本發(fā)明的記 錄方式記錄系統(tǒng)崩潰時F時刻信息的情況。這樣,可以對比系統(tǒng)崩潰前后信 息的變化情況。如果一個系統(tǒng)信息是逐漸變化的,通過A、 B、 C、 D多個時 刻的比較,可以總結(jié)出信息的變化情況,為問題定位提供詳盡的信息。
另外, 一般系統(tǒng)中,處理器外接的物理內(nèi)存全部作為操作系統(tǒng)控制的系 統(tǒng)內(nèi)存,儲存記錄信息的內(nèi)存通常是使用malloc ()函數(shù)從系統(tǒng)內(nèi)存中動態(tài) 分配;這樣,信息記錄使用的內(nèi)存地址不固定、與其它應(yīng)用程序使用內(nèi)存混 在一起,在系統(tǒng)發(fā)生崩潰時容易被操作系統(tǒng)或其它的應(yīng)用程序毀壞;并且, 一旦系統(tǒng)重新啟動,系統(tǒng)內(nèi)存中的內(nèi)容將可能被操作系統(tǒng)清空或覆蓋。
在本發(fā)明中,將處理器外接的物理內(nèi)存不全部作為系統(tǒng)內(nèi)存使用,而是 劃出一部分內(nèi)存作為保留內(nèi)存,專門用來儲存記錄信息。保留內(nèi)存地址固定, 在記錄信息時可以直接使用物理地址訪問。這部分內(nèi)存不受操作系統(tǒng)控制, 不會被操作系統(tǒng)或其它應(yīng)用程序使用。因此,當(dāng)系統(tǒng)崩潰時,看門狗觸發(fā)的 記錄程序可以繼續(xù)訪問此內(nèi)存;并且#:作系統(tǒng)重新啟動后,也不會給覆蓋或 清空此內(nèi)存,能夠安全保存上次崩潰時記錄的信息。
使用本發(fā)明方法,記錄的信息可以是操作系統(tǒng)核心狀態(tài)、任務(wù)狀態(tài)、任 務(wù)堆棧等系統(tǒng)信息,也可以是用戶關(guān)心的全局變量、全局?jǐn)?shù)據(jù)、指定內(nèi)存、 指定外設(shè)寄存器等信息。在本發(fā)明中,在信息記錄模塊中向用戶程序提供改 接口函數(shù)(API),用于動態(tài)添加/刪除用戶需要保存的信息。具體如下
信息登記API (需要記錄的信息地址,需要記錄的信息長度);
信息刪除API (需要刪除的信息地址);
用戶將關(guān)心的信息地址及長度輸入,此函數(shù)將信息的地址和長度記錄在 數(shù)組或鏈表中。在任務(wù)切換和系統(tǒng)崩潰時,掃描數(shù)組或鏈表,按照數(shù)組或鏈 表中記錄的信息地址和長度保存信息,實現(xiàn)用戶信息的靈活記錄,如圖4A和 4B所示。這樣,用戶可以在任何時候調(diào)用API函數(shù),非常方便的添加、刪除 需要保存的信息。
另外,本發(fā)明提供的接口函數(shù)(API)還用于在系統(tǒng)未發(fā)生復(fù)位的情況下, 通過軟件動態(tài)停止信息記錄,取出信息,并以文件的形式儲存起來。在任何 時間取出,不會出現(xiàn)信息的丟失或被新的信息覆蓋,特別適用于對系統(tǒng)運行 過程中的某些特定階段的分析。獲取的文件同樣可以上傳服務(wù)器、或從服務(wù) 器端主動遠(yuǎn)程獲取信息文件,對問題進(jìn)行分析,以實現(xiàn)遠(yuǎn)程問題定位。
如圖5所示,為系統(tǒng)在幾個階段中信息的處理過程,具體如下
系統(tǒng)正常運行時,用戶動態(tài)的添加/刪除需要記錄的用戶信息;并通過循 環(huán)記錄的方式將系統(tǒng)信息和用戶信息記錄在保留內(nèi)存中;
系統(tǒng)崩潰時,即時記錄崩潰時系統(tǒng)信息和用戶登記的信息,保存在保留 內(nèi)存中;
系統(tǒng)重啟時,將保存的信息從保留內(nèi)存中取出,組成信息文件,儲存在 本地Flash或硬盤中,或通過網(wǎng)絡(luò)上傳服務(wù)器;
系統(tǒng)正常運4亍前,重新初始化,啟動信息記錄程序。
如圖6所示,為本發(fā)明系統(tǒng)崩潰時重要信息的保存系統(tǒng)框圖,包括看 門狗61、處理器單元62、以及異常處理單元63。當(dāng)系統(tǒng)崩潰時,看門狗61 產(chǎn)生系統(tǒng)出錯信號,提供給處理器單元62;處理器單元62隨即觸發(fā)不可屏蔽 的異常處理單元63,即時記錄系統(tǒng)崩潰時的重要信息,并在信息記錄完成后 產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。
需要說明的是,如果使用外置看門狗需要將看門狗的觸發(fā)復(fù)位信號連接 到處理器的中斷引腳上;如果不使用外部看門狗,則硬件不需要進(jìn)行修改。
此外,在本發(fā)明系統(tǒng)中,還包括專用存儲單元64,用于專門存儲重要信 息。如圖7所示,處理器外接的物理內(nèi)存不全部作為系統(tǒng)內(nèi)存使用,而是劃 出一部分內(nèi)存作為保留內(nèi)存,專門用來儲存記錄信息。這部分內(nèi)存不受操作
系統(tǒng)控制,不會被操作系統(tǒng)或其它應(yīng)用程序使用。保留內(nèi)存地址固定,在記 錄信息時可以直接使用物理地址訪問。系統(tǒng)崩潰時,看門狗觸發(fā)的記錄程序 可以繼續(xù)訪問此內(nèi)存,并且操作系統(tǒng)重新啟動后,也不會給覆蓋或清空此內(nèi) 存,能夠安全保存上次崩潰時記錄的信息。
另外,該專用存儲單元包括接口單元,該接口單元包括信息記錄子單元, 用于動態(tài)記錄用戶需要保存的信息地址和長度,以及信息刪除子單元,用于 動態(tài)記錄用戶需要刪除的信息地址。本發(fā)明通過接口單元,可以動態(tài)添加/刪 除用戶需要保存信息。用戶將關(guān)心的信息地址及長度輸入,此單元將信息的 地址和長度記錄在數(shù)組或鏈表中,在任務(wù)切換、和系統(tǒng)崩潰時,掃描數(shù)組或 鏈表,按照數(shù)組或鏈表中的記錄的信息地址和長度保存信息,實現(xiàn)用戶信息 的靈活記錄。這樣,用戶可以在任何時候調(diào)用接口單元,非常方便的添加、 刪除需要保存的信息。
接口單元也用于在系統(tǒng)未發(fā)生復(fù)位的情況下,動態(tài)停止信息記錄功能, 取出信息,并以文件的形式儲存起來。在任何時間取出,不會出現(xiàn)信息的丟 失或被新的信息覆蓋,特別適用于對系統(tǒng)運行過程中的某些特定階段的分析。 獲取的文件同樣可以上傳服務(wù)器,或從服務(wù)器端主動遠(yuǎn)程獲取信息文件,對 問題進(jìn)行分析,以實現(xiàn)遠(yuǎn)程問題定位。
以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何 在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含 在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種系統(tǒng)崩潰時重要信息的保存方法,其特征在于,包括看門狗產(chǎn)生系統(tǒng)出錯信號,提供給處理器;所述處理器觸發(fā)異常處理程序,記錄系統(tǒng)崩潰時的重要信息;信息記錄完成后,產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。
2、 如權(quán)利要求1所述的方法,其特征在于所述異常處理程序?qū)⒅匾?息記錄在專用存儲區(qū)域。
3、 如權(quán)利要求2所述的方法,其特征在于,所述專用存儲區(qū)域為系統(tǒng)內(nèi) 存中劃分出來的獨立區(qū)域。
4、 如權(quán)利要求2所述的方法,其特征在于,所述專用存儲區(qū)域為區(qū)分于 系統(tǒng)內(nèi)存的獨立區(qū)域。
5、 如權(quán)利要求2所述的方法,其特征在于,所述專用存儲區(qū)域提供接口 函數(shù),該接口函數(shù)包括信息記錄參數(shù),用于動態(tài)記錄用戶需要保存的信息地 址和長度,以及信息刪除參數(shù),用于動態(tài)記錄用戶需要刪除的信息地址。
6、 如權(quán)利要求5所述的方法,其特征在于,所述信息地址和長度通過數(shù) 組或鏈表方式存儲。
7、 一種系統(tǒng)崩潰時重要信息的保存系統(tǒng),其特征在于,包括 看門狗,用于產(chǎn)生系統(tǒng)出4普爿f言號;處理器單元,用于根據(jù)該系統(tǒng)出錯信號,觸發(fā)異常處理單元; 異常處理單元,用于記錄系統(tǒng)崩潰時的重要信息,并在信息記錄完成后 產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。
8、 如權(quán)利要求7所述的系統(tǒng),其特征在于,還包括專用存儲單元,用于 專門存儲重要信息。
9、 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述專用存儲單元為系統(tǒng)內(nèi) 存中劃分出來的獨立單元。
10、 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述專用存儲單元為區(qū)分 于系統(tǒng)內(nèi)存的獨立單元。
11、 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述專用存儲單元包括接 口單元,該接口單元包括信息記錄子單元,用于動態(tài)記錄用戶需要保存的信 息地址和長度,以及信息刪除子單元,用于動態(tài)記錄用戶需要刪除的信息地 址。
12、如權(quán)利要求11所述的系統(tǒng),其特征在于,所述信息地址和長度通過 數(shù)組或鏈表方式存儲。
全文摘要
本發(fā)明提供一種系統(tǒng)崩潰時重要信息的保存方法,包括看門狗產(chǎn)生系統(tǒng)出錯信號,提供給處理器;所述處理器觸發(fā)異常處理程序,記錄系統(tǒng)崩潰時的重要信息;信息記錄完成后,產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。同時,本發(fā)明也提供一種系統(tǒng)崩潰時重要信息的保存系統(tǒng),包括看門狗,用于產(chǎn)生系統(tǒng)出錯信號;處理器單元,用于根據(jù)該系統(tǒng)出錯信號,觸發(fā)異常處理單元;異常處理單元,用于記錄系統(tǒng)崩潰時的重要信息,并在信息記錄完成后產(chǎn)生復(fù)位信號,系統(tǒng)復(fù)位。本發(fā)明能夠在系統(tǒng)崩潰時及時記錄系統(tǒng)信息及用戶關(guān)心的信息,并且通過改變記錄信息的位置,和系統(tǒng)啟動后自動保存的方式,可以非常簡便的取出信息。
文檔編號G06F11/14GK101201770SQ20061016529
公開日2008年6月18日 申請日期2006年12月15日 優(yōu)先權(quán)日2006年12月15日
發(fā)明者文志剛, 文 李, 禹 笪 申請人:大唐移動通信設(shè)備有限公司