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

什麼是看門狗計時器?

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

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

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

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

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

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

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

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

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

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

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

探索看門狗計時器的應用

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

為什麼要應用中使用看門狗計時器?

看門狗計時器在許多應用中都佔有一席之地,如無人機、電網計量、馬達控制…等。對於這些不同的應用,看門狗計時器提供相同的基本功能:透過對處理器的監控偵測出錯誤運作並發出相應的訊號。

然而,監控的使用可能依據應用類型而有所不同。例如,期望有人能夠在距離地表幾百英呎的無人機中手動重設其處理器是不切實際的。在智慧儀錶中,同樣的問題可能導致裝置無法讀取或記錄資訊,位於遠端位置的儀錶和感測器也會遇到軟體故障的狀況,導致系統無法讀取和記錄資訊,並且也沒有人能夠手動重設的情形。控制馬達和其他機械零組件的系統中的程式碼故障尤其令人緊張,因為這些系統的故障可能對正在操作和在附近的人員造成身體上的傷害。好在使用看門狗計時器可以增加冗餘來攔截這些錯誤,有助於防止這些問題的發生。

視窗式看門狗計時器如何運作?

圖3所示的視窗式看門狗計時器是一種特殊的看門狗計時器,其不僅監控在看門狗超時結束(即看門狗上部邊界)前處理器所發送的訊號是否失敗,它還能監控處理器是否在看門狗超時視窗開始前發送看門狗輸入端(WDI)訊號(即看門狗下部邊界)。此功能如圖4所示。

20170630TA01P3 圖3 監控微控制器的視窗式看門狗計時器。

20170630TA01P4 圖4 視窗式看門狗功能。

不同於只檢查脈衝是否在超時結束前抵達的標準看門狗計時器。監控早期WDI訊號能夠偵測並制止不理想的超頻,是相當有用的功能。

看門狗計時器的附加功能有哪些?

視窗式看門狗計時器只是看門狗計時器眾多功能中的一種附加功能。幾個其他附加功能能夠確保系統的穩健性和功能性:

˙可調整式看門狗超時:不同的系統和應用對於其WDI訊號需要不同的超時週期。外部電容和SET接腳可以用在看門狗超時中幾毫秒到1分鐘不等的調整。

˙看門狗計時器的關閉功能:有些看門狗計時器能夠透過接腳在裝置上的使用而被關閉。這在系統初始化和除錯的過程中,不想重設處理器時非常實用。