為了使工業路由器、DTU、串口服務器等聯網設備傳輸更穩定,這些設備中會帶有防浪涌、防靜電、防脈沖以及看門狗保護。這些硬件保護中,有一種是可以保持設備內部進程24小時不宕機的——看門狗技術。看門狗是如何工作和計算的呢?
看門狗芯片,又叫看門狗定時器。它是微控制器中的一塊硬件。如果系統卡在某個地方, 則看門狗定時器用于生成系統復位,如果系統進入執行的無窮循環,則看門狗定時器會將系統復位以擺脫無窮循環。看門狗是嵌入式系統中的安全機制,可使您的系統可靠,但是它取決于看門狗定時器的使用方式。
看門狗基本上是一個計數器,它從計數零開始并達到某個值。 如果計數器達到某個值,則看門狗硬件將生成看門狗復位。為了避免系統重置,軟件需要啟動看門狗, 即需要將計數器重置為零。萬一軟件陷入無休止的循環,系統將無法踢看門狗,因此計數器達到一定值并復位系統。
看門狗最初加載了某些值。該值是根據看門狗的超時時間計算的(進一步說明了如何根據超時值計算計數器值)。在超時之前,系統應重置計數器。
例如,如果您的系統定期執行3個任務并執行3個任務需要500毫秒。然后將超時時間視為600 ms(考慮最壞的情況),針對600 ms計算計數器值并將其加載到看門狗中。
考慮看門狗中的系統正在以4 kHz時鐘工作。系統在450毫秒內完成工作,最壞情況下,完成工作的時間為500毫秒。讓我們將500毫秒作為超時時間。
1/4 kHz = 0.25毫秒
1個時鐘節拍= 0.25毫秒。
500毫秒= 2000個滴答聲。
當時鐘滴答2000次時,完成500毫秒。與超時相關的技術器值為2000.
如果看門狗計數器達到2000,它將生成一個復位信號。在達到2000之前,系統需要將計數器復位為0。
在操作系統(多任務系統)的情況下,看門狗起著重要的作用。看門狗可以監視程序流,監視任務執行的頻率(活動監督)。如果看門狗發現程序流沖突或任務執行得太頻繁或不那么頻繁,則會生成看門狗復位。在進行在線監督的情況下,每個任務都會設置一個標志,以指示任務處于在線狀態,即已執行。看門狗監控器功能將檢查每個任務是否都報告了活動指示。如果任務未設置為激活指示,則看門狗監視器功能將永遠不會踢看門狗,最后看門狗將重置系統。