在嵌入式系統開發中,看門狗是一種重要的機制,用于在程序異常時自動重啟系統,保障其穩定性。本文將深入探討看門狗及其在程序穩定性中的作用,幫助您更好地理解和應用看門狗技術。
?看門狗
首先需要明確一點:看門狗并不能直接提升程序本身的穩定性和可靠性。它僅能在程序運行出現異常時,通過重啟應用或系統來恢復功能。程序的穩定性和可靠性,從根本上來說,取決于編程過程中的規范性和嚴謹程度。
看門狗主要分為硬件看門狗和軟件看門狗,二者在實現方式和使用場景上存在顯著差異。
1.硬件看門狗
硬件看門狗的核心是一個定時電路,由被監控的CPU提供周期性的“清狗”信號,即“喂狗”,以清零定時器。在CPU正常工作時,能夠定時“喂狗”,因此看門狗內的定時器不會溢出。一旦CPU出現故障,無法繼續提供“喂狗”信號,看門狗內的定時器就會溢出,觸發復位信號,導致CPU重啟,俗稱“被狗咬”。硬件看門狗又可分為兩種類型:1.1 外部獨立硬件看門狗這種看門狗獨立于MCU/MPU之外,無需驅動程序支持,只需在規定時間內為喂狗引腳提供一個電平變化即可,通常通過GPIO實現電平切換。其喂狗時間不可設置,一旦硬件連接完成,就無法關閉,除非斷開硬件連接。這種看門狗具有極高的可靠性,適用于對產品可靠性要求極高的場合。不過,由于它是獨立的硬件設備,因此會增加一定的硬件成本。
外部獨立硬件看門狗,主要用于解決惡劣外部環境導致系統死機且無法人工干預的問題,也能應對硬件故障引發的系統死機重啟需求。
1.2 內置硬件看門狗內置硬件看門狗是利用處理器內部的定時器實現定時操作。它需要在系統中編寫驅動程序,初始化定時器并實現喂狗操作,甚至可以調整定時器的參數。這種看門狗的喂狗時間可調,還可以通過特殊指令關閉,成本較低。然而,在處理器死機的情況下,它可能會失效,因此適用于對硬件可靠性要求不是特別嚴格的場合。
內置硬件看門狗,系統驅動+應用程序喂狗,主要用于解決應用程序問題引起的復位重啟,也能應對部分外部環境導致的復位重啟。
2. 軟件看門狗
軟件看門狗的原理與硬件看門狗類似,只是將硬件電路上的定時器替換為處理器的內部定時器。這種方式可以簡化硬件電路設計,但在可靠性方面不如硬件定時器。例如,如果系統內部定時器自身發生故障,就無法檢測到問題。雖然可以通過雙定時器相互監視來提高可靠性,但這不僅會增加系統開銷,也無法解決所有問題,比如中斷系統故障導致定時器中斷失效。
軟件看門狗,系統驅動+應用程序喂狗,主要用于監控應用程序死機問題。
?看門狗的正確使用
看門狗本身并不是用來解決系統出現的問題。在調試過程中發現的故障,應該通過排查設計本身的錯誤來解決。加入看門狗的目的是應對程序潛在錯誤和惡劣環境干擾等因素導致的系統死機,在無人干預的情況下自動恢復系統正常工作狀態。然而,看門狗也不能完全避免故障造成的損失。畢竟從發現故障到系統復位恢復正常這段時間內,系統會處于停滯狀態。此外,一些系統還需要在復位前保護現場數據,并在重啟后恢復現場數據,這可能需要額外的軟硬件開銷。 ?可靠性排序與喂狗操作
綜合來看,看門狗的可靠性排序為:外部獨立看門狗>內置硬件看門狗>軟件看門狗。對于喂狗操作,外部獨立看門狗由系統自動完成,應用程序無需關心。而應用程序需要喂的狗要么是內置硬件看門狗,要么是軟件看門狗,這取決于平臺本身提供的資源。應用程序必須在規定時間內進行喂狗操作,以監控程序本身的運行健康狀況。如果程序編寫不當導致異常不喂狗,就會引發系統復位重啟。這就需要程序開發人員進行問題定位和排查,解決可能影響系統運行的各種潛在問題。
-
看門狗
+關注
關注
10文章
576瀏覽量
71439 -
嵌入式系統
+關注
關注
41文章
3662瀏覽量
130593 -
硬件
+關注
關注
11文章
3444瀏覽量
67009
發布評論請先 登錄
相關推薦
STM32中的獨立看門狗和窗口看門狗是什么

MCU獨立看門狗和窗口看門狗的區別
關于獨立看門狗的一點經驗

stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么
STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

STM32的看門狗配置詳情解說

基于STM32、FreeRTOS 實現硬件看門狗+軟件看門狗監測多任務的方法
MCU獨立看門狗與窗口看門狗的區別

STM32中的獨立看門狗和窗口看門狗
STM32中的獨立看門狗和窗口看門狗

什么是看門狗,工業路由器看門狗技術的功能優勢

評論