專利名稱:一種嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法。
背景技術(shù):
嵌入式設(shè)備必須穩(wěn)定可靠地工作,如果發(fā)生復(fù)位,是嚴(yán)重的故障,
需要開發(fā)者準(zhǔn)確定位原因。嵌入式設(shè)備的復(fù)位原因可以分為以下4類 看門狗復(fù)位、軟件復(fù)位、硬件掉電復(fù)位、CPU復(fù)位管腳收到復(fù)位脈沖信 號(hào)。通常的方法是在軟件復(fù)位時(shí),通過(guò)軟復(fù)位鉤子函數(shù),記錄復(fù)位原 因。但是看門狗復(fù)位、硬件掉電復(fù)位、CPU復(fù)位管腳收到復(fù)位脈沖信號(hào) 都沒(méi)有復(fù)位信息,無(wú)法區(qū)分和定位復(fù)位的原因。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種嵌入式設(shè)備的復(fù)位故障定 位方法,定位因軟件、硬件掉電、看門狗故障、CPU復(fù)位管腳收到復(fù)位
信號(hào)導(dǎo)致的復(fù)位原因。
為解決上述技術(shù)問(wèn)題,本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的 一種嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法,包括以下步驟
a、 初始化存儲(chǔ)器時(shí),在隨才踏儲(chǔ)器中劃出一塊區(qū)域作為保留內(nèi)存;
b、 提供一個(gè)軟復(fù)位鉤子函數(shù)和一個(gè)看門狗復(fù)位鉤子函數(shù);
c、 設(shè)備復(fù)位,調(diào)用軟復(fù)位鉤子函數(shù)或者看門狗復(fù)位鉤子函數(shù),將復(fù)位信息寫入保留內(nèi)存;
d、 4艮據(jù)保留內(nèi)存中的信息判斷復(fù)位原因。
其中,所述方法還包括步驟e、在保留內(nèi)存中寫滿"已上電"標(biāo)志。 其中,所述步驟a還包括將保留內(nèi)存劃分為信息區(qū)和狀態(tài)區(qū)。 其中,所述步驟c中,軟件復(fù)位時(shí)調(diào)用軟復(fù)位鉤子函數(shù),將軟件復(fù) 位時(shí)的系統(tǒng)信息寫入保留內(nèi)存信息區(qū),并將保留內(nèi)存狀態(tài)區(qū)寫滿"已被 軟件復(fù)位"標(biāo)志;看門狗復(fù)位時(shí)調(diào)用看門狗復(fù)位鉤子函數(shù),將復(fù)位時(shí)的 系統(tǒng)信息寫入保留內(nèi)存信息區(qū),并將保留內(nèi)存狀態(tài)區(qū)寫滿"已被看門狗 復(fù)位"標(biāo)志。
其中,步驟d中所述判斷復(fù)位原因的方法為 dl、若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容都是"已被看門狗復(fù)位"標(biāo)志,則為看 門狗復(fù)位;
d2、若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容都是"已被軟件復(fù)位"標(biāo)志,則為軟件 復(fù)位;
d3、若保留內(nèi)存的狀態(tài)區(qū)的內(nèi)容都是"已上電"標(biāo)志,則為CPU復(fù)位
管腳收到復(fù)位脈沖信號(hào);
d4、若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容含有除了"已被看門狗復(fù)位"標(biāo)志、"已
被軟件復(fù)位"標(biāo)志、"已上電,,標(biāo)志以外的值,則為硬件掉電復(fù)位。
其中,所述步驟d還包括將復(fù)位原因?qū)懭肭度胧皆O(shè)備的運(yùn)行日志。
其中,所述步驟d還包括將所述判斷結(jié)果記錄下來(lái)。
其中,所述保留內(nèi)存的大小由實(shí)際需要和物理內(nèi)存決定。
其中,所述保留內(nèi)存專用于寫復(fù)位信息,不被其它的寫操作所訪問(wèn)。本發(fā)明具有如下有益效果
1) 復(fù)位后能夠保存復(fù)位原因;
2) 能夠定位因軟件、硬件掉電、看門狗故障、CPU復(fù)位管腳收到 復(fù)位信號(hào)導(dǎo)致的復(fù)位原因。
圖l是本發(fā)明定位方法的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述 圖1所示為本發(fā)明定位方法的流程圖,具體包括以下步驟
101、嵌入式設(shè)備上電,初始化存儲(chǔ)器時(shí),在RAM中劃出一塊區(qū)域, 用于記錄嵌入式設(shè)備的復(fù)位信息,此區(qū)域稱為保留內(nèi)存,專用于寫復(fù)位 信息,不被其它寫操作所訪問(wèn)。然后再將保留內(nèi)存劃分為兩個(gè)部分信 息區(qū)、狀態(tài)區(qū)。保留內(nèi)存的大小由實(shí)際需要和物理內(nèi)存決定。
例如'.嵌入式設(shè)備的物理內(nèi)存是32MB,地址空間是[O,Oxlffffff], 可設(shè)置保留內(nèi)存的大小為20KB,地址范圍是[OxlffbOOO, Oxlffiffi]。其 中,前10KB是信息區(qū),地址范圍是
,后10KB是 狀態(tài)區(qū),地址范圍是地址范圍是
。
102、 提供一個(gè)軟復(fù)位鉤子函數(shù)和一個(gè)看門狗復(fù)位鉤子函數(shù)。
103、 嵌入式設(shè)備發(fā)生復(fù)位。
104、 軟件復(fù)位時(shí)調(diào)用軟復(fù)位鉤子函數(shù),將軟件復(fù)位時(shí)的系統(tǒng)信息寫 入保留內(nèi)存信息區(qū),并將保留內(nèi)存狀態(tài)區(qū)寫滿"已被軟件復(fù)位"標(biāo)志;看門狗復(fù)位時(shí)調(diào)用看門狗復(fù)位鉤子函數(shù),將復(fù)位時(shí)的系統(tǒng)信息寫入保留內(nèi) 存信息區(qū),并將保留內(nèi)存狀態(tài)區(qū)寫滿"已被看門狗復(fù)位"標(biāo)志。
例如軟件復(fù)位時(shí)調(diào)用軟復(fù)位鉤子函數(shù),在保留內(nèi)存信息區(qū)首地址 OxlffbOOO寫入系統(tǒng)信息,寫入的長(zhǎng)度小于等于10240字節(jié)。從保留內(nèi) 存狀態(tài)區(qū)首地址0xlffd800開始,連續(xù)寫入 10240個(gè) SOFT_REBOOT—STATUS,表明狀態(tài)是"已被軟件復(fù)位"。
看門狗復(fù)位時(shí)調(diào)用看門狗復(fù)位鉤子函數(shù),在保留內(nèi)存信息區(qū)首地 址0xlf!b000寫入系統(tǒng)信息,寫入的長(zhǎng)度小于等于10240字節(jié)。從保留 內(nèi)存狀態(tài)區(qū)首地址0xlffd800開始,連續(xù)寫入10240個(gè)WATCHDOG —REBOOT—STATUS,表明狀態(tài)是"已#錄門狗復(fù)位"。 其中,定義狀態(tài)標(biāo)志為
#defme SOFT—REBOOT—STATUS (unsigned char)Oxll #define WATCHDOG_REBOOT_STATUS (unsigned char)0x22 #define POWER_ON_STATUS (unsigned char)0x33 105、根據(jù)保留內(nèi)存的信息區(qū)和狀態(tài)區(qū)判斷復(fù)位原因,記錄復(fù)位原 因,還可以將復(fù)位原因?qū)懭肭度胧皆O(shè)備的運(yùn)行日志。判斷方法為
1) 若狀態(tài)區(qū)的內(nèi)容都是WATCHDOG_REBOOT—STATUS,則是看 門狗復(fù)位,再根據(jù)保留內(nèi)存信息區(qū)判斷復(fù)位的具體原因。
2) 若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容都是SOFT—REBOOT—STATUS,則是 軟件復(fù)位,再根據(jù)保留內(nèi)存信息區(qū)判斷復(fù)位的具體原因。
3 )由于硬件掉電會(huì)導(dǎo)致RAM器件的存儲(chǔ)內(nèi)容變?yōu)殡S機(jī)值,只要保 留內(nèi)存狀態(tài)區(qū)
的內(nèi)容含有一個(gè)或一個(gè)以上除了SOFT—REBOOT—STATUS、 WATCHDOG—REBOOT—STATUS 、 POWER_ON—STATUS以外的值,就是硬件掉電復(fù)位。
4 )若保留內(nèi)存的狀態(tài)區(qū)的內(nèi)容都是POWER—ON—STATUS ,則是 CPU復(fù)位管腳收到復(fù)位脈沖信號(hào)。
106、嵌入式設(shè)備上電并判斷復(fù)位原因后,在保留內(nèi)存狀態(tài)區(qū)寫滿 "已上電"標(biāo)志。從保留內(nèi)存狀態(tài)區(qū)首地址0xlffd800開始,連續(xù)寫入 10240個(gè)POWER_ON—STATUS,表明狀態(tài)是"已上電"。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡 在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng) 包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法,其特征在于,包括以下步驟a、初始化存儲(chǔ)器時(shí),在隨機(jī)存儲(chǔ)器中劃出一塊區(qū)域作為保留內(nèi)存;b、提供一個(gè)軟復(fù)位鉤子函數(shù)和一個(gè)看門狗復(fù)位鉤子函數(shù);c、設(shè)備復(fù)位,調(diào)用軟復(fù)位鉤子函數(shù)或者看門狗復(fù)位鉤子函數(shù),將復(fù)位信息寫入保留內(nèi)存;d、根據(jù)保留內(nèi)存中的信息判斷復(fù)位原因。
2、 如權(quán)利要求1所述的嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法, 其特征在于,所述方法還包括步驟e、在保留內(nèi)存中寫滿"已上電"標(biāo) 志。
3、 如權(quán)利要求1所述的嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法, 其特征在于,所述步驟a還包括將保留內(nèi)存劃分為信息區(qū)和狀態(tài)區(qū)。
4、 如權(quán)利要求1所述的嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法, 其特征在于,所述步驟c中,軟件復(fù)位時(shí)調(diào)用軟復(fù)位鉤子函數(shù),將軟 件復(fù)位時(shí)的系統(tǒng)信息寫入保留內(nèi)存信息區(qū),并將保留內(nèi)存狀態(tài)區(qū)寫滿 "已被軟件復(fù)位"標(biāo)志;看門狗復(fù)位時(shí)調(diào)用看門狗復(fù)位鉤子函數(shù),將復(fù) 位時(shí)的系統(tǒng)信息寫入保留內(nèi)存信息區(qū),并將保留內(nèi)存狀態(tài)區(qū)寫滿"已 被看門狗復(fù)位"標(biāo)志。
5、 如權(quán)利要求1所述的嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法,其特征在于,步驟d中所述判斷復(fù)位原因的方法為dl、若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容都是"已被看門狗復(fù)位"標(biāo)志,則為 看門狗復(fù)位;d2、若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容都是"已被軟件復(fù)位"標(biāo)志,則為軟 件復(fù)位;d3、若保留內(nèi)存的狀態(tài)區(qū)的內(nèi)容都是"已上電"標(biāo)志,則為CPU 復(fù)位管腳收到復(fù)位脈沖信號(hào);d4、若保留內(nèi)存狀態(tài)區(qū)的內(nèi)容含有除了"已#:看門狗復(fù)位"標(biāo)志、"已被軟件復(fù)位"標(biāo)志、"已上電"標(biāo)志以外的值,則為硬件掉電復(fù)位。
6、 如權(quán)利要求1所述的嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法, 其特征在于,所述步驟d還包括將復(fù)位原因?qū)懭肭度胧皆O(shè)備的運(yùn)行 曰志。
7、 如權(quán)利要求1所述的嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法, 其特征在于,所述步驟d還包括將所述判斷結(jié)果記錄下來(lái)。
8、 如權(quán)利要求1至5中任一所述的嵌入式設(shè)備的復(fù)位故障定位 的實(shí)現(xiàn)方法,其特征在于,所述保留內(nèi)存的大小由實(shí)際需要和物理內(nèi) 存決定。
9、 如權(quán)利要求1至5中任一所述的嵌入式設(shè)備的復(fù)位故障定位 的實(shí)現(xiàn)方法,其特征在于,所述保留內(nèi)存專用于寫復(fù)位信息,不被其 它的寫才喿作所訪問(wèn)。
全文摘要
本發(fā)明公開了一種嵌入式設(shè)備的復(fù)位故障定位的實(shí)現(xiàn)方法,包括步驟a.初始化存儲(chǔ)器時(shí),在隨機(jī)存儲(chǔ)器中劃出一塊區(qū)域作為保留內(nèi)存;b.提供一個(gè)軟復(fù)位鉤子函數(shù)和一個(gè)看門狗復(fù)位鉤子函數(shù);c.設(shè)備復(fù)位,調(diào)用軟復(fù)位鉤子函數(shù)或者看門狗復(fù)位鉤子函數(shù),將復(fù)位信息寫入保留內(nèi)存;d.根據(jù)保留內(nèi)存中的信息判斷復(fù)位原因。本發(fā)明能夠保存復(fù)位原因,定位因軟件、硬件掉電、看門狗故障、CPU復(fù)位管腳收到復(fù)位信號(hào)導(dǎo)致的復(fù)位原因。
文檔編號(hào)G06F11/36GK101286130SQ20071007383
公開日2008年10月15日 申請(qǐng)日期2007年4月11日 優(yōu)先權(quán)日2007年4月11日
發(fā)明者林曉翰 申請(qǐng)人:中興通訊股份有限公司