就像一隻住在名媛手提包中叫不停的小狗,看門狗計時器(watchdog timer)也時常被認為是不必要的多此一舉。然而,若將兩者一視同仁,是對看門狗的極大侮辱。不同於「手提包小狗」,看門狗具有關鍵的監控功能,能夠幫助您監控系統裡外的故障情形,並在故障發生時採取行動。

什麼是看門狗計時器?

簡單來說,看門狗計時器是一種若在特定時間範圍內未從處理器接收到週期性脈衝訊號,就會發出重設輸出訊號的裝置。其中一種應用這種裝置的方法,是透過來自處理器的數位訊號輸出(GPIO)回饋給外部看門狗計時器的看門狗輸入(WDI),如圖1所示。TPS3851便是具有整合看門狗計時器的監控器,能夠監控微控制器的電源軌,並透過外部方式監控從微控制器(MCU)發出的數位脈衝。

20170630TA01P1 圖1 TPS3851所提供的看門狗監控。

處理器週期性地向看門狗計時器發送一個脈衝,以表示系統軟體的正常運作。若看門狗計時器在規定的時間範圍(稱為看門狗超時)內未接收到此脈衝,看門狗計時器將發出重設輸出訊號。該重設輸出訊號可以用於通知系統處理器出現了停機或凍結的情況,或重設處理器本身。圖2所示為在看門狗超時期間內接收的脈衝,以及在超過看門狗超時之後所接收的脈衝。

20170630TA01P2 圖2 標準看門狗計時器的運作。

為何看門狗計時器如此重要?

看門狗計時器提供一種警報系統的機制,或重設一個軟體歷經凍結或停機的處理器。儘管沒有人會刻意設計會凍結的軟體,但優秀的系統設計人員還是會為故障做準備——因為未雨綢繆總是好的。若缺少這種監控,處理器可能會無限期地凍結,並導致更多的系統故障。像是TPS3851具有可調整超時間間隔的外部看門狗計時器,能夠在幾毫秒內辨識這些軟體凍結,並適當地重設系統或處理器。因為要手動重設這些系統是不實際、甚至幾乎是不可能的,因此這項功能在嵌入式或遠端系統中更有其必要性。

如何在嵌入式系統運用看門狗計時器?

有兩種主要的方式能夠來實作看門狗計時器:

˙使用具有整合看門狗功能的處理器。許多微控制器如MSP430F5529系列具有整合看門狗的功能。它的價值在於非常容易實作,且不需要使用其他IC。然而,有一個重要的告誡:由於程式碼問題而導致的MCU故障可能無意中使看門狗計時器喪失功用,因此整合看門狗可能不會總是按預期的方式運作。同樣地,雖然軟體以內部看門狗能夠偵測所有凍結或停機的方式編寫,但是,採取額外的步驟以冗餘方式監控看門狗輸入可以幫助解決程式碼中不可預見的錯誤。

˙使用具有看門狗計時器的電壓監控器。像是TPS3851或TPS3110具有看門狗計時器功能的監控器能夠以外部冗餘方式監控電源電壓和看門狗訊號。若處理器的內部看門狗未能偵測到錯誤或缺失的脈衝,外部看門狗計時器將能發揮其他方式無法達到的偵測層級。

原則上,看門狗計時器的功能不會過於複雜;然而,其在維持系統可靠性的重要性也不容小覷,尤其是在系統發生錯誤、但是人為的系統重設是困難甚至是不能實現的情況下。

探索看門狗計時器的應用

接下來,本文將說明為什麼應該在應用中使用看門狗計時器、視窗式看門狗計時器如何運作,以及看門狗計時器的一些特性,如何讓它們成為許多不同應用的絕佳附加功能。

...繼續閱讀請連結EDN Taiwan網站