1. 程式人生 > >嵌入式系統之WATCHDOG(看門狗)概述

嵌入式系統之WATCHDOG(看門狗)概述

1。概述:

WATCHDOG對於沒有底層開發經驗的開發人員來說,可能比較陌生,但是它在系統起到非常重要的作用,相當於系統警察,當系統發生嚴重錯誤(如程式進入死迴圈等)不能 恢復的時候,WATCHDOG能夠讓系統重啟。WATCHDOG的應用主要是在嵌入式作業系統中,避免了系統在無人干預時長時間掛起的情況。

 2。WATCHDOG模組

在比較高檔的嵌入式硬體晶片中,都有一個WATCHDOG模組,如果在MCU/MPU中沒有整合WATCHDOG,一般會在此嵌入式系統中加一個專門的WATCHDOG晶片來實現WATCHDOG機制。此模組主要的功能包括:

1  提供WATCHDOG控制暫存器和配置暫存器,供軟體開發人員根據系統需要進行靈活配置。

2 提供一介面,使應用軟體能夠定時給WATCHDOG“喂狗”。

3 提供WATCHDOG機制,當系統進入不可恢復錯誤時,能產生一個不可遮蔽中斷來通知系統自動重啟(一般這樣,也有改變為其他處理方式的),只有相應的復位訊號才能清除它。

3。WATCHDOG的實現方式:

對於WATCHDOG模組的實現,不同的硬體晶片有不同的方式,這裡介紹2中工作方式:

1。利用系統作業系統時鐘來實現WATCHDOG

  在Intel XScale系列中,利用了作業系統時鐘的比較暫存器3(OSMR3)做為WATCHDOG的執行主體,當系統的WATCHDOG啟用後,軟體就必須在一定時間內從OSMR3讀出當前的計數,然後加上一定的計數值(下一次到期的計數值),再寫回到OSMR3中,軟體一直週期性的重複這個過程,如果軟體沒有重新寫入新的計數使定時器到期,此OSMR3會利用一個GPIO觸發系統復位。

2。晶片的專門WATCHDOG模組

對於現在的很多晶片,已經集成了專門的WATCHDOG模組,比如ARM11的晶片,WATCHDOG模組中,提供了比較靈活的配置和控制機制:

A。寬範圍設定過期時間間隔,從0。5秒到128秒可以使用者配置

B。可以靈活配置在低功耗下,使用或者停止WATCHDOG功能

C。可以靈活配置在DEBUG等狀態下,使用或者停止WATCHDOG功能

 根據不同的系統,設定好相應的暫存器,啟用WATCHDOG後,需要應用程式週期性的服務WATCHDOG,即我們所說的“喂狗”,對於WATCHDOG模組,需要定時向Watchdog Service Register按順序寫入0x5555,0xaaaa.一般 在WATCHDOG模組中還會提供Watchdog Reset Status Register,從中可以找到復位的具體原因。

3 。微控制器的WATCHDOG實現

許多微控制器片內自帶看門狗電路,微控制器復位時將片內自帶看門狗電路禁止,只有當程式訪問該電路時,電路啟動。如51系列微控制器對SFR中的0A6H地址順序寫入#01EH、#0E1H;而96系列微控制器則對SFR中的0A6H地址順序寫入#1EH、#0E1H;工控主機板上看門狗電路本身並不要求復位後重新啟動,但BIOS在復位後將板上看門狗禁止,啟動和喂狗方法與微控制器相同。如研祥的FSC-1713主機板,在WatchDog程式設計狀態,只要執行如下兩條指令:

 outportb(0x2e,0xf6);   

outportb(0x2f,TIME-OUT-VALUE);

可實現WatchDog的啟停,其中TIME-OUT-VALUE ≠0啟動;TIME-OUT-VALUE =0停止[2]。能夠用指令禁止看門狗是為了適應使用者程式開發階段的需要,這同時給看門狗啟動和執行失敗留下了後門,在看門狗啟動時或啟動前遇干擾而使程式跑飛,則看門狗啟動失敗,無法行使監控職能。

 4。結論

WATCHDOG在嵌入式系統中發揮著非常重要的作用,其實現方式也千差萬別,根據不同的硬體設計,可以選用不同的WATCHDOG,但它們的作用是一樣的:保證系統在出現不可恢復錯誤時,能夠自動讓系統重啟。

參考資料:

1.Intel XScale Pocessor Developer's Manual    

2  Arm11 晶片使用者手冊

3. WatchDog失效機理與對策研究