看門狗 (監控晶元)

2022-02-08 05:09:26 字數 1807 閱讀 1330

在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成各種暫存器和記憶體的資料混亂,會導致程式指標錯誤,不在程式區,取出錯誤的程式指令等,都有可能會陷入死迴圈,程式的正常執行被打斷,由微控制器控制的系統無法繼續正常工作,導致整個系統的陷入停滯狀態,發生不可預料的後果。

看門狗,又叫 watchdog,從本質上來說就是乙個定時器電路,一般有乙個輸入和乙個輸出,其中輸入叫做餵狗,輸出一般連線到另外乙個部分的復位端,一般是連線到微控制器。 看門狗的功能是定期的檢視晶元內部的情況,一旦發生錯誤就向晶元發出重啟訊號。看門狗命令在程式的中斷中擁有最高的優先順序。

編輯看門狗,又叫watchdog timer,是乙個定時器電路,一般有乙個輸入,叫餵狗(kicking the dog/service the dog),乙個輸出到mcu的rst端,mcu正常工作的時候,每隔一段時間輸出乙個訊號到餵狗端,給 wdt清零,如果超過規定的時間不餵狗(一般在程式跑飛時),wdt定時超過,就會給出乙個復位訊號到mcu,使mcu復位。防止mcu宕機. 看門狗的作用就是防止程式發生死迴圈,或者說程式跑飛。[1]

編輯看門狗是一種監控系統的執行狀況的手段,通過軟硬體結合的方式實現對系統執行狀況的監控。穩定執行的軟體會在執行完特定指令後進行餵狗,若在一定週期內看門狗沒有收到來自軟體的餵狗訊號,則認為系統故障,會進入中斷處理程式或強制系統復位。系統上電後根據不同的工作模式可以選擇使能看門狗的時機,若看門狗被使能則計數器開始計數,如果在設定的時間內沒有及時餵狗則會發生看門狗超時。看門狗主要由暫存器、計數器和狗叫模組構成:通過暫存器對看門狗進行基本設定,計數器計算狗叫時間,狗叫模組決定看門狗超時後發出的中斷或復位方式。[2]

編輯看門狗電路的應用,使微控制器可以在無人狀態下實現連續工作,其工作原理是:看門狗晶元和微控制器的乙個i/o引腳相連,該i/o引腳通過程式控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程式語句是分散地放在微控制器其他控制語句中間的,一旦微控制器由於干擾造成程式跑飛後而陷入某一程式段進入死迴圈狀態時,寫看門狗引腳的程式便不能被執行,這個時候,看門狗電路就會由於得不到微控制器送來的訊號,便在它和微控制器復位引腳相連的引腳上送出乙個復位訊號,使微控制器發生復位。即程式從程式儲存器的起始位置開始執行,這樣便實現了微控制器的自動復位。[3]

編輯硬體看門狗是利用了乙個定時器,來監控主程式的執行,也就是說在主程式的執行過程中,我們要在定時時間到之前對定時器進行復位。如果出現死迴圈,或者說pc指標不能回來,那麼定時時間到後就會使微控制器復位。常用的wdt晶元如max813,5045,imp 813等。

而在某些情況下,也會採用純軟體的方法來設定看門狗,如在微控制器系統中,利用閒置的定時器/計數器就可以設計乙個軟體看門狗。具體實現步驟如下:

首先,在初始化程式中設定定時器/計數器的方式以控制暫存器(tmod) 和定時時間的初值,並且開啟中斷。

然後,根據定時器的時間,在主程式中按一定的時間間隔插人復位定時器的指令(餵狗), 兩條餵狗指令之間的時間間隔可以根據系統時鐘與指令週期計算出來,而且該時間週期應該小於定時器的定時時間。

最後,在定時器的中斷服務程式中,設定一條無條件轉移指令,將程式計數器pc轉移到初始化程式的入口。

在非微控制器系統,如powerpc系統中,也可以採用多執行緒的方式來設定軟體狗,其主要的步驟如下所述:

首先,新建乙個看門狗執行緒,該執行緒維護乙個全域性變數陣列,該陣列相當於每個工作執行緒的計數器。看門狗執行緒為一乙個死迴圈,每隔一段時間就會迴圈一次,並將全域性變數陣列的每乙個值都加1後判斷是否超過預定義的上限值,若發現某個執行緒對應的變數數值超過最大值,則看門狗執行緒會重置該執行緒。

然後,每個工作執行緒中,每隔一段時間就會將對應的全域性變數置0 (餵狗)。

軟體看門狗的優點是無需額外的硬體支援,但當系統存在嚴重的錯誤時(例如:中斷服務出錯),則有可能導致軟體看門狗失效。[4]

看門狗晶元

wdi持續1.6s為高電平或者低電平,將會控制wdo引腳變低 mr引腳被拉到0.8v以下,reset引腳將會被拉低,在vcc上公升到復位門限值或者mr引腳由低到高後,reset引腳還會持續被拉低200ms。wdo引腳需要連線到mr,否則如果不進行餵狗,reset引腳也不會被拉低 mr引腳控制rese...

硬體看門狗和軟體看門狗

看門狗,又叫watchdog timer,從本質上來說就是乙個定時器電路,一般有乙個輸入和乙個輸出,其中的輸入叫做餵狗,輸出一般連線到另外乙個部分的復位端,另外乙個部分就是所要處理的部分,暫且稱之為mcu。在mcu正常工作的時候,每隔一段時間輸出乙個訊號到餵狗端,給看門狗電路清零,如果在超過規定的時...

關閉看門狗

看門狗作用 在嵌入式領域,有些系統需要長期執行在無人看守的環境。在執行過程中,難免不出現系統宕機的情況,這時就需要系統自身帶有一種自動重啟的功能。watchdog一般是乙個硬體模組,其作用就是在系統宕機時,幫助系統實現重新啟動。看門狗工作方式 watchdog在硬體上實現了計時功能,啟動計時後,使用...