看門狗喂狗方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子通信技術(shù)領(lǐng)域,具體講是一種基于Vxworks系統(tǒng)的看門狗喂狗方法。
【背景技術(shù)】
[0002]在Vxworks系統(tǒng)平臺下,其分為BOOT啟動、內(nèi)核初始化、應(yīng)用加載、啟動、運行幾個過程,整個過程的正常啟動和運行保證了系統(tǒng)運行的可靠性、穩(wěn)定性和健壯性。
[0003]在Vxworks系統(tǒng)的BOOT啟動、內(nèi)核初始化、應(yīng)用加載、啟動和運行的幾個過程中,每個過程均會采用一看門狗程序?qū)崿F(xiàn)復(fù)位功能,這樣使得其在每一個步驟中若是出現(xiàn)異常,則會通過重啟而進行程序恢復(fù)。如果在BOOT啟動、內(nèi)核初始化過程中需要重啟還不會影響系統(tǒng)正常運行。但是,若是在應(yīng)用加載、啟動和運行這三個過程中出現(xiàn)程序異常而需要重啟時,則有可能造成應(yīng)用加載、啟動和運行過程中的一些重要數(shù)據(jù)由于沒有及時存儲而丟失,從而造成系統(tǒng)的異常。因此,基于上述原因,亟待需要一種看門狗喂狗方法,該看門狗喂狗方法在系統(tǒng)重啟前能夠保證所有運行過程中的重要數(shù)據(jù)被存儲,以解決上述問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題是,提供一種看門狗喂狗方法,該看門狗喂狗方法在系統(tǒng)重啟前能夠保證所有運行過程中的重要數(shù)據(jù)被存儲。
[0005]本發(fā)明的技術(shù)方案是,提供一種看門狗喂狗方法,包括以下步驟:系統(tǒng)配置一個硬件看門狗;硬件看門狗自身的定時時間為tO;系統(tǒng)配置三個任務(wù):Taskl喂硬件狗;Task2監(jiān)控應(yīng)用的加載、啟動及系統(tǒng)的運行,并向Taskl發(fā)消息;Task3監(jiān)控應(yīng)用的運行并向Task2發(fā)送消息;
[0006]Taskl喂硬件狗的時間間隔為t0,tO內(nèi)無喂狗操作,硬件狗發(fā)送復(fù)位信號,M⑶復(fù)位;Task2每隔時間11給Taskl發(fā)送消息,Taskl在Tl未收到Task2的消息,則停止喂硬件狗,其中Tl=m*tl,m為常數(shù);Task3每隔時間t2給Task2發(fā)送消息,Task2在T2內(nèi)未收到Task3的消息,則停止向Taskl發(fā)送消息,其中,T2 = k*t2,k為常數(shù);系統(tǒng)設(shè)置應(yīng)用加載最長時間為TL,應(yīng)用啟動最長時間為TS;
[0007]在vxWorks系統(tǒng)中,內(nèi)核初始化多任務(wù)環(huán)境完成后,才能創(chuàng)建任務(wù),所以在BOOT運行時,無法通過任務(wù)實現(xiàn)喂狗,BOOT運行過程中,時間tO內(nèi)喂狗一次即可;流程如下:
[0008](I)、BOOT啟動,加載內(nèi)核且同時啟動硬件看門狗;
[0009](2)、B00T加載內(nèi)核過程中,如果時間tO內(nèi),硬件看門狗未收到喂狗信號,則復(fù)位微處理器并返回步驟(I);
[0010](4)、否則,BOOT繼續(xù)運行,內(nèi)核加載成功,則執(zhí)行步驟(5);
[0011](5)、內(nèi)核初始化;
[0012](6)、內(nèi)核初始化過程中,如果時間tO內(nèi),硬件看門狗未收到喂狗信號,則復(fù)位微處理器并返回步驟(I);
[0013](7)、否則,內(nèi)核繼續(xù)初始化,當(dāng)系統(tǒng)多任務(wù)環(huán)境建立時,創(chuàng)建任務(wù)Taskl,此后Taskl每隔時間tO喂一次硬件狗;
[0014](8)、如果硬件看門狗時間tO內(nèi)未收到任務(wù)Taskl的喂狗信號,則系統(tǒng)保存重要數(shù)據(jù),然后系統(tǒng)復(fù)位并返回步驟(I);
[0015](9)、否則,判斷內(nèi)核初始化狀態(tài),若內(nèi)核初始化不成功,返回步驟(I);
[0016](11)、若內(nèi)核初始化成功,創(chuàng)建任務(wù)Task2,開始加載應(yīng)用;
[0017](11)、時間TL、T1計時開始;
[0018](12)、時間TL計時時間到,如果任務(wù)Task2檢測到應(yīng)用加載未成功,則停止給Taskl發(fā)送信號,Taskl在Tl時間到未檢測到Task2的信號,停止喂硬件狗,系統(tǒng)復(fù)位并返回步驟(I);
[0019](13)、否則,則應(yīng)用啟動且任務(wù)Task2每隔時間tl給任務(wù)Taskl發(fā)送一次喂狗信號;
[0020](14)、時間15、11計時開始;
[0021](15)、時間TS計時時間到,如果任務(wù)Task2檢測到應(yīng)用啟動未成功,則停止給Taskl發(fā)送信號,Taskl在Tl時間到未檢測到Task2的信號,停止喂硬件狗,系統(tǒng)復(fù)位并返回步驟(I);
[0022](16)、否則,應(yīng)用運行且建立任務(wù)了&81^3,了&81^3每隔丨2給了&81^發(fā)一次信號;
[0023](17)、時間Tl、T2、t2計時開始;
[0024](18)、t2時間到,如果任務(wù)Task3檢測到應(yīng)用運行出現(xiàn)異常,則停止給Task2發(fā)送信號
[0025](19),否則應(yīng)用正常,t2計時重新開始;
[0026](20)、T2時間到,Task2未收到Task3的信號,則保存重要數(shù)據(jù),并停止向Taskl發(fā)送信號;
[0027](21),否則,應(yīng)用運行正常,時間T2計時重新開始;
[0028](22)、T1時間到,Taskl未收到Task2的信號,停止喂硬件狗,系統(tǒng)復(fù)位并返回步驟(I);
[0029](23),否則,系統(tǒng)運行正常,時間Tl計時開始。
[0030]采用以上方法后,本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:
[0031]本發(fā)明看門狗喂狗方法如果Task3發(fā)現(xiàn)應(yīng)用異?;蛘甙l(fā)現(xiàn)應(yīng)用其他任務(wù)出現(xiàn)異常則停止向Task2發(fā)信號,然后先保存重要數(shù)據(jù),再系統(tǒng)復(fù)位。整個過程中,只有Taskl實現(xiàn)喂硬狗功能,應(yīng)用程序正常Task3向Task2發(fā)送喂狗信號,Task2向Taskl發(fā)送喂狗信號,方法對系統(tǒng)啟動、運行的各個環(huán)節(jié)實現(xiàn)監(jiān)控,保證系統(tǒng)的啟動和運行正常,即使出現(xiàn)異常,在復(fù)位前,能實現(xiàn)重要數(shù)據(jù)的保存,然后再進行重啟,從而保證系統(tǒng)的正常運行。
【附圖說明】
[0032]圖1是本發(fā)明看門狗喂狗方法的喂狗示意圖。
【具體實施方式】
[0033]下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明。
[0034]如圖1所示,本發(fā)明一種看門狗喂狗方法,包括以下步驟:系統(tǒng)配置一個硬件看門狗;硬件看門狗自身的定時時間為to;系統(tǒng)配置三個任務(wù):Taskl喂硬件狗;Task2監(jiān)控應(yīng)用的加載、啟動及系統(tǒng)的運行,并向Taskl發(fā)消息;Task3監(jiān)控應(yīng)用的運行并向Task2發(fā)送消息;
[0035]Taskl喂硬件狗的時間間隔為t0,tO內(nèi)無喂狗操作,硬件狗發(fā)送復(fù)位信號,M⑶復(fù)位;Task2每隔時間11給Taskl發(fā)送消息,Taskl在Tl未收到Task2的消息,則停止喂硬件狗,其中Tl=m*tl,m為常數(shù);Task3每隔時間t2給Task2發(fā)送消息,Task2在T2內(nèi)未收到Task3的消息,則停止向Taskl發(fā)送消息,其中,T2 = k*t2,k為常數(shù);系統(tǒng)設(shè)置應(yīng)用加載最長時間為TL,應(yīng)用啟動最長時間為TS;
[0036]在vxWorks系統(tǒng)中,內(nèi)核初始化多任務(wù)環(huán)境完成后,才能創(chuàng)建任務(wù),所以在BOOT運行時,無法通過任務(wù)實現(xiàn)喂狗,BOOT運行過程中,時間tO內(nèi)喂狗一次即可;流程如下:
[0037](I)、Β00Τ啟動,加載內(nèi)核且同時啟動硬件看門狗;