一種嵌入式設備中的看門狗系統及其控制方法
2023-05-14 08:37:41 3
專利名稱:一種嵌入式設備中的看門狗系統及其控制方法
技術領域:
本發明涉及看門狗技術,尤其涉及的是一種嵌入式設備中看門狗系統及其控制方法。
背景技術:
看門狗電路主要是監控系統的狀態,當系統因為某中原因出現死機等情況時,看 門狗電路觸發系統的復位。使得系統能夠重新啟動,從崩潰中恢復過來。目前的看門狗電 路普遍是針對8位的單片機系統設計的,分為有使能輸入和無使能輸入的沒有使能輸入 的,一上電,看門狗電路就觸發;通常用於8位的單片機系統,因為8位的單片機系統比較簡 單,可以不用使能輸入,一上電就工作。但是對於32位,64位的高端嵌入式設備來說,因為 裝有嵌入式設備的原因,一般的啟動時間都比較長,可能有30秒左右。對於這樣的高端嵌 入式設備,在上電的初期,不能夠觸發看門狗,要等嵌入式設備完全啟動完畢後才能啟動看 門狗,沒有使能輸入的看門狗電路就不能直接用在高端嵌入式設備中,這就要求看門狗有 使能輸入;但有使能輸入意味著有同樣有不使能(被屏蔽)的機會,因為使能輸入一般是由 CPU本身控制,但是崩潰的CPU系統的使能輸出本身的狀態不確定,很容易屏蔽了看門狗, 使看門狗沒法工作;看門狗工作的穩定性不夠也降低了嵌入式設備的安全性。
因此,現有技術還有待於改進和發展。
發明內容
本發明的目的在於提供一種嵌入式設備中的看門狗系統及其控制方法,採用該系
統和方法能夠提高看門狗工作的穩定性和嵌入式設備的安全性。 本發明的技術方案如下 —種嵌入式設備中看門狗的控制方法,當滿足屏蔽條件將所述看門狗屏蔽,當滿 足啟動條件將其啟動,所述屏蔽條件包括在所述看門狗上電或者復位後;從所述嵌入式 設備接收的上電確認編碼與所述看門狗預設的上電確認編碼相同。 所述的方法,其中,所述屏蔽條件包括所述看門狗在一預設的電平信號周期內, 從所述嵌入式設備接收所述上電確認編碼。 所述的方法,其中,屏蔽所述看門狗的同時,將所述看門狗的上電初值寄存器賦值 賦予屏蔽值。 所述的方法,其中,所述啟動條件包括所述看門狗在屏蔽狀態下收到由所述嵌入 式設備發送的啟動指令,並依據該啟動指令啟動所述看門狗。 所述的方法,其中,所述看門狗根據啟動指令啟動後將所述上電初值寄存器賦值 賦予啟動值。 所述的方法,其中,所述啟動條件包括在所述看門狗的上電初值寄存器未被賦予 屏蔽值時,啟動所述看門狗。 本發明還提供一種嵌入式設備中的看門狗系統,包括計數器、上電初值寄存器、與所述嵌入式設備連接的上電確認編碼寄存器和啟動編碼寄存器;還包括判別邏輯模 塊,用於在所述上電初值寄存器的值為初始值、且上電確認編碼寄存器的值為預設的上電 確認編碼時,屏蔽所述計數器並給所述上電初值寄存器賦屏蔽值。 所述的系統,其中,還包括與所述判別邏輯模塊連接的上電檢測電路,用於以一 預設周期的電平信號觸發所述判別邏輯模塊從所述上電確認編碼寄存器讀取編碼。
所述的系統,其中,所述判別邏輯模塊在所述上電初值寄存器被賦屏蔽值且所述 啟動編碼寄存器的值是預設的啟動編碼時,啟動所述計數器。 所述的系統,其中,所述判別邏輯模塊在所述上電初值寄存器未被賦屏蔽值時直 接啟動所述計數器。 所述的系統,其中,還包括連接於所述嵌入式設備與上電確認編碼寄存器和啟動 編碼寄存器之間的串並轉換電路。 所述的系統,其中,還包括連接於所述串並轉換電路與計數器之間的分頻設置寄 存器,用來所述存儲看門狗系統的觸發間隔周期。 本發明所提供的嵌入式設備中看門狗的控制方法,如要屏蔽看門狗必須同時滿足 以下兩個條件首先要滿足在看門狗上電復位後;還要確認看門狗接收的指令符合預先設 置的上電屏蔽條件;在看門狗上電復位後這一條件使得看門狗只有在重新斷電再通電後才 能被屏蔽,這樣看門狗一旦工作,即使被監控的設備崩潰後使使能輸出的狀態不穩定,看門 狗也不會被意外地屏蔽,提高了看門狗工作的穩定性和嵌入式設備的安全性。
圖1是本發明看門狗系統中看門狗和嵌入式設備的示意框圖;
圖2是本發明看門狗系統中看門狗的電路框圖; 圖3是本發明看門狗系統中上電檢測電路、看門狗寄存器與接收上電確認編碼和 是否上電賦初值的時序圖; 圖4是本發明看門狗系統控制方法的流程圖。
具體實施例方式
本實施方式的嵌入式設備中看門狗系統,整體具體應用電路如圖1所示,嵌入式 設備通過串行數據線s_data、 s_clk發送命令和數據到看門狗電路;同時通過wcLreset周 期性的復位看門狗電路(即進行餵狗),一旦嵌入式設備崩潰,看門狗電路在規定的時間內 沒有收到wcLreset信號,看門狗電路就通過reset輸出來復位嵌入式設備;clk信號為外 部時鐘信號,用於看門狗電路內部的計數器計數定時。 看門狗內部電路如圖2所示,看門狗可以用普通的邏輯電路組成,或者是用CPLD、 FPGA、ASIC等邏輯電路搭建。 看門狗主要包括通過串行數據線s_data、 s_clk與嵌入式設備連接的串並轉換 電路910 ;接收外部時鐘信號elk和嵌入式設備餵狗信號wcLreset並輸出復位信號reset 的計數器940 ;與計數器940連接的判別邏輯模塊930 ;與判別邏輯模塊930連接的上電檢 測電路920、上電初值寄存器951 ;分別設置在判別邏輯模塊930和串並轉換電路910之間 的上電確認編碼寄存器952、啟動編碼寄存器953 ;設置在計數器940和串並轉換電路910之間的分頻設置寄存器954。 所述計數器940分別與上電初值寄存器951、上電確認編碼寄存器952、啟動編碼 寄存器953連接,在發出復位信號reset時將上電初值寄存器951、上電確認編碼寄存器 952和啟動編碼寄存器953置為0。 所述判別邏輯模塊930與所述上電初值寄存器951連接,用於在上電初值為0、且 從所述嵌入式設備接收的上電確認編碼為預設編碼時,屏蔽所述計數器940、並給上電初值 寄存器951賦屏蔽值。 上電初值是用來檢查是否處在上電了、或者看門狗復位系統重啟後,有沒有觸發 過看門狗的狀態,本實施方式中,如果是剛上電或復位,給上電初值寄存器賦一個屏蔽值 0x5a; —旦看門狗被觸發,這個上電初值被更改為啟動值0xa5,這是對系統可能出現的幹 擾的排除編碼,用它來增強系統抗幹擾能力。上電確認編碼是用來確認系統現在確實是剛 上電的時候,如Oxaa。啟動編碼用來啟動看門狗電路的,如0x5aa5。 上電初值寄存器951賦屏蔽值後,看門狗就被屏蔽了 ,判別邏輯模塊930隻有接收 到啟動編碼0x5aa5後才能啟動計數器940,此時判別邏輯模塊930給上電初值寄存器賦一 個啟動值oxa5,這樣看門狗一旦工作,即使被系統中出現幹擾,只要判別邏輯模塊930檢測 到上電初值寄存器中的值為0xa5就不會屏蔽計數器940,提高了看門狗工作的穩定性和嵌 入式設備的安全性。 上電檢測電路920與判別邏輯模塊930連接,用於以一預設周期的電平信號觸發 所述判別邏輯模塊930從所述上電確認編碼寄存器讀取編碼;上電檢測電路920可以用 R-C電路等來實現,如果看門狗用ASIC來實現,這個電路可以做在晶片中,如果是用CPLD、 FPGA這個電路要放在晶片外。增加上電檢測電路920這一認證條件,可以進一步降低外接 幹擾的影響,提高系統的穩定性。 所述判別邏輯模塊930在上電檢測電路920產生的電平信號周期內未收到上電確 認編碼時不會為上電初值寄存器賦屏蔽值,所述計數器940直接開始工作。這樣可以避免 所述看門狗因受到幹擾不啟動。 串並轉換電路910的作用是增強系統的抗幹擾能力,如果是用串行輸入的話,受 到幹擾的時候,出現預設值的機率還是存在的,但是用串並轉換電路910進行串並轉換後, 機率幾乎為零,這可以大幅度提升系統的穩定性。 分頻設置寄存器954用來存儲看門狗電路的觸發間隔周期(watchdogtimeout period)。
本系統具體的工作過程如下 開機上電後,上電檢測電路920輸出一個周期為500ms的低電平信號,在這500ms 的前10ms內,判別邏輯模塊930復位以下寄存器上電初值寄存器951置為0 ;上電確認編 碼寄存器952復位為0 ;啟動編碼寄存器953復位為0。 在10ms到450ms這段時間,嵌入式設備通過s_data, s_clk發送一個上電確認編 碼(如Oxaa)給看門狗,該上電確認編碼存儲在上電確認編碼寄存器952內。
在450ms到500ms之間,判別邏輯模塊930確認上電初值寄存器951存儲的上電 初值為0、且存儲在上電確認編碼寄存器952內的上電確認編碼為Oxaa的情況下,給上電初 值寄存器951賦屏蔽值,賦值為0x5a,否則不賦值。
5
這樣,在上電500ms後,上電初值寄存器951被賦值為屏蔽值後,看門狗被屏蔽,不
會工作。 嵌入式設備經過一段較長的時間完成全部的啟動工作後,通過S_data, s_clk發
送一個啟動編碼(如為0x5aa5)給看門狗,存儲在所述啟動編碼寄存器953。 所述判別邏輯模塊930讀取所述啟動編碼,如果判斷啟動編碼為0x5aa5,而且上
電初值為0x5a時,發送啟動信號啟動計數器940,同時將上電初值寄存器951置為啟動值
0xa5 ;上電確認編碼寄存器952復位為0 ;啟動編碼寄存器953復位為0。 上電檢測電路920、讀取上電確認編碼寄存器952和對上電初值寄存器951的賦
值,在控制時序上有一定的關係如圖3,只有在上電檢測電路920輸出為低(表明是剛上
電)時,上電確認編碼的輸入才有效,否則輸入非法,不接收。上電初值也是在這段時間上
判別是否賦值,否則不做新的賦值工作。這也是增強抗幹擾能力的作用。當然,當系統崩潰
並被看門狗復位後,整個過程沒有重新上電,系統用復位輸出信號來同步上電確認編碼的
輸入和上電初值的賦值。通過以上多重認證的使能機制,使得無論整個電路系統受到了什
麼幹擾,看門狗都能使得崩潰的系統重新啟動。 參考圖4,本發明還提供一種嵌入式設備中看門狗的控制方法,其中看門狗的上電
屏蔽過程如下 101、開機上電; 102、上電檢測電路920輸出一個預設周期的低電平信號,本實施方式採用500ms ;
103、在前10ms內,看門狗自身復位自己的寄存器將上電初值寄存器951置為0 ; 上電確認編碼寄存器952復位為0 ;啟動編碼寄存器953復位為0 ; 104、10ms到450ms這段時間,嵌入式設備通過s_data, s_clk向看門狗發送一個 上電確認編碼,本實施方式中預設的上電確認編碼是Oxaa ; 105、在450ms到500ms這段時間,看門狗確認上電初值已置為0、而且上電確認編 碼為Oxaa的情況下,給看門狗的上電初值寄存器951賦屏蔽值0x5a ;
106、500ms後,如果上電初值寄存器951被賦屏蔽值0x5a,看門狗被屏蔽、不啟動。
嵌入式設備經過一段較長的時間完成全部的啟動工作後,通過S_data, s_clk發 送一個啟動編碼作為啟動指令給看門狗,本實施方式中的預設啟動編碼為0x5aa5 ;看門狗 的啟動過程如下 201、看門狗判斷上電初值寄存器951是否為屏蔽值0x5a;是則執行202,否則執行 203 ;本步驟中跳轉步驟203的目的是為了防止看門狗受到幹擾而一直不能被啟動。
202、看門狗判斷收到的啟動編碼是否為預設啟動編碼0x5aa5,是則執行203 ;否 則循環執行本步驟; 203、看門狗的計數器940被啟動,看門狗開始工作; 204、看門狗電路置位/復位如下寄存器上電初值寄存器951置為啟動值0xa5 ; 上電確認編碼寄存器952復位為0 ;啟動編碼寄存器953復位為0 ;看門狗的計數器開始計 數; 正常情況下啟動看門狗的條件是上電初值為屏蔽值0x5a、且輸入的啟動編碼為 0x5aa5。為防止看門狗受到幹擾而一直不能被啟動,在上電初值不為屏蔽值0x5a時也會直 接啟動。
在系統運行的過程中,按以下的流程進行 301、如果看門狗在觸發間隔周期內,收到了嵌入式設備的餵狗信號wd reset,則執行302 ;而當系統崩潰不去及時餵狗而引發復位後,看門狗同時模擬產生500ms的上電檢測電路920輸出信號,同時復位以下寄存器上電初值寄存器951置位為0 ;上電確認編碼寄存器952復位為0 ;啟動編碼寄存器953復位為0 ;這樣系統重新回到第103步,要跟重啟的設備重新通信。 302、復位看門狗計數器為0 ; 303、上電初值寄存器951的值是否是0xa5 ;若為是則判斷為錯誤狀態,看門狗被幹擾,不做處理;若為否則執行203 ;本步驟中跳轉步驟203的目的是為了防止看門狗在工作時因上電初值寄存器951受到幹擾,使得看門狗在不該被屏蔽的時候被屏蔽。
在系統運行的過程中,如果嵌入式設備誤輸入了上電確認編碼,而且恰巧為預設的上電確認編碼Oxaa,但因為沒有滿足一個500ms的低電平信號,上電確認編碼寄存器952不會被賦值。如果嵌入式設備誤輸入了恰巧為Oxaa上電確認編碼,而且,同時系統的上電檢測電路920同時受到幹擾輸出一個大於500ms的低電平信號,導致上電確認編碼寄存器952被賦值;但是,只要上電初值寄存器951的值不是0,上電初值寄存器951就不會被賦於屏蔽值0x5a。 看門狗只要有使能控制,這個使能就會受到幹擾而出錯,圖中會出現"錯誤狀態,看門狗被幹擾"的狀態,這是在整個電路受到了外界很大的電磁等強幹擾才可能出現的情況,如果在強幹擾下,內部任何一個寄存器的任一位被置為"l"的機率是1%,被置為"0"的機率是99%,那麼,上電初值寄存器951被幹擾為0x5a的機率是
1% X99% Xl% X99% Xl% X99% Xl% X99% 也就是說,在整個電路受到了外界很大的電磁等強幹擾的情況下,看門狗有約億分之一的機率不工作。 下面是判斷邏輯模塊930實現判別邏輯的verilog代碼 Reg start_up_detect〃上電檢測電路920輸出。 Reg[7:0]init_code〃上電初值 Reg [7:0] start_conf irm_code〃上電確認編碼 Reg[15:0]start_code 〃啟動編碼 Regstart—count 〃啟雲力信號 Reg_wd_reset_out ;〃看門狗復位輸出。 Reg wd_reset_out_dl ; Reg selfreset_flag ; Reg[7:0]wd_selfreset_count ; Wd_reset_out_dl <= wd_reset_out ; If ((reset_out_dl = = 0) && (reset_out = = 1)) Begin Selfreset_flag < = 1 ; End If ((selfreset_flag = = 1) &&(wd_selfreset_count < Oxf 1))
7
wd—selfreset—count++ ; If(((start—up—detect = = 0)||((wd—selfreset—count > 0)&&(wd_selfrest—count < 0 xf0)))&&(start—confirm—code = = Oxaa)&&(init_code = = 0x00))init—code<=0x5a ; Else init code <= init—code ; If (start—up—detect ==1) Begin If (((init_code == 0x5a)&&(start_code == 0x5aa5)) | | (init_
code ! = 0x5a) Begin Start_count < = 1 ; Init—code <= 0xa5 ; start—confirm—code <= 0 ; start—code < 二 0 ; End Else Begin Start_count < = 0 ; Init—code <二 init—code ; start—conf irm一code < = 0 ; start—code < = 0 ; end End 下面是實現計數器940輸出的verilog代碼 Reg[15:0]wcLperiod ;〃看門狗電路的觸發間隔周期 Reg[15:0]wd_count ;〃看門狗計數器940 Reg wd_reset ; 〃看門狗復位輸入。 Reg wd_reset_dl ; Reg wd_reset_d2 ; Wd—reset_dl <= wd—reset ; Wd_reset d2 <= wd_reset_dl ; If (start_count ==1) Begin Wd_count <= wd_count+l ; If ((wd_d2 = = 1) &&(wd_dl = = 0))wd_count < = 0 ; End Else Wd—count <=0;
If (wd_count == wd_period)wd_reset_out < = 0 ;
Else wd_reset_out < = 1 ; 當系統崩潰並被看門狗復位後,表明整個系統受到了某種幹擾,這時需要復位看
門狗前一次的操作中所有的值。整個系統會重新配置。主要是復位上電初值寄存器951,上
電確認編碼寄存器952,啟動編碼寄存器953。實現代碼如下 If ((reset_out_dl = = 0) && (reset_out = = 1)) Begin init_code <= 0 ; start—conf irm_code < = 0 ; start_code < = 0 ; End 應當理解的是,本發明的應用不限於上述的舉例,對本領域普通技術人員來說,可以根據上述說明加以改進或變換,所有這些改進和變換都應屬於本發明所附權利要求的保護範圍。
權利要求
一種嵌入式設備中看門狗的控制方法,當滿足屏蔽條件將所述看門狗屏蔽,當滿足啟動條件將其啟動,其特徵在於,所述屏蔽條件包括在所述看門狗上電或者復位後;從所述嵌入式設備接收的上電確認編碼與所述看門狗預設的上電確認編碼相同。
2. 根據權利要求1所述的方法,其特徵在於,所述屏蔽條件包括所述看門狗在一預設 的電平信號周期內,從所述嵌入式設備接收所述上電確認編碼。
3. 根據權利要求1或2所述的方法,其特徵在於,屏蔽所述看門狗的同時,將所述看門狗的上電初值寄存器賦值賦予屏蔽值。
4. 根據權利要求3所述的方法,其特徵在於,所述啟動條件包括所述看門狗在屏蔽狀 態下收到由所述嵌入式設備發送的啟動指令,並依據該啟動指令啟動所述看門狗。
5. 根據權利要求4所述的方法,其特徵在於,所述看門狗根據啟動指令啟動後將所述 上電初值寄存器賦值賦予啟動值。
6. 根據權利要求3所述的方法,其特徵在於,所述啟動條件包括在所述看門狗的上電 初值寄存器未被賦予屏蔽值時,啟動所述看門狗。
7. —種嵌入式設備中的看門狗系統,包括計數器、上電初值寄存器、與所述嵌入式設 備連接的上電確認編碼寄存器和啟動編碼寄存器;其特徵在於,還包括判別邏輯模塊,用於在所述上電初值寄存器的值為初始值、且上電確認編碼寄存器的 值為預設的上電確認編碼時,屏蔽所述計數器並給所述上電初值寄存器賦屏蔽值。
8. 根據權利要求7所述的系統,其特徵在於,還包括與所述判別邏輯模塊連接的上電 檢測電路,用於以一預設周期的電平信號觸發所述判別邏輯模塊從所述上電確認編碼寄存 器讀取編碼。
9. 根據權利要求7所述的系統,其特徵在於,所述判別邏輯模塊在所述上電初值寄存 器被賦屏蔽值且所述啟動編碼寄存器的值是預設的啟動編碼時,啟動所述計數器。
10. 根據權利要求7所述的系統,其特徵在於,所述判別邏輯模塊在所述上電初值寄存 器未被賦屏蔽值時直接啟動所述計數器。
11. 根據權利要求7所述的系統,其特徵在於,還包括連接於所述嵌入式設備與上電 確認編碼寄存器和啟動編碼寄存器之間的串並轉換電路。
12. 根據權利要求ll所述的系統,其特徵在於,還包括連接於所述串並轉換電路與計數器之間的分頻設置寄存器,用來所述存儲看門狗系統的觸發間隔周期。
全文摘要
本發明公開了一種嵌入式設備中的看門狗系統及其控制方法,其控制方法包括當滿足屏蔽條件將看門狗屏蔽,當滿足啟動條件將其啟動,所述屏蔽條件包括在看門狗上電或者復位後;從所述嵌入式設備接收的上電確認編碼與看門狗預設的上電確認編碼相同。其系統包括計數器、上電初值寄存器、上電確認編碼寄存器和啟動編碼寄存器;判別邏輯模塊,用於在所述上電初值寄存器的值為初始值、且上電確認編碼寄存器的值為預設的上電確認編碼時,屏蔽計數器並給所述上電初值寄存器賦屏蔽值。本發明如要屏蔽看門狗必須滿足在看門狗上電或復位後這一條件,這樣只有在重新斷電再通電後才能被屏蔽,提高看門狗的穩定性和嵌入式設備的安全性。
文檔編號G06F11/00GK101751303SQ20081024165
公開日2010年6月23日 申請日期2008年12月17日 優先權日2008年12月17日
發明者黃劍堅 申請人:Tcl集團股份有限公司