【導讀】看門(mén)狗定時(shí)器是一種專(zhuān)用定時(shí)器模塊,可幫助微處理器從故障中恢復。如果看門(mén)狗定時(shí)器到達其計數周期的末尾,它將重置整個(gè)處理器系統。為了防止這種情況,處理器必須執行某種類(lèi)型的特定操作來(lái)重置看門(mén)狗。因此,可以配置看門(mén)狗定時(shí)器,使其僅在發(fā)生處理器故障時(shí)才到達其計數周期的末尾,并且通過(guò)強制系統復位,看門(mén)狗定時(shí)器幫助處理器脫離故障模式并繼續正常運行。
什么是看門(mén)狗定時(shí)器?(一個(gè)非常規的類(lèi)比)
看門(mén)狗定時(shí)器是一種專(zhuān)用定時(shí)器模塊,可幫助微處理器從故障中恢復。如果看門(mén)狗定時(shí)器到達其計數周期的末尾,它將重置整個(gè)處理器系統。為了防止這種情況,處理器必須執行某種類(lèi)型的特定操作來(lái)重置看門(mén)狗。因此,可以配置看門(mén)狗定時(shí)器,使其僅在發(fā)生處理器故障時(shí)才到達其計數周期的末尾,并且通過(guò)強制系統復位,看門(mén)狗定時(shí)器幫助處理器脫離故障模式并繼續正常運行。
為了形象化 WDT 的功能,我有一個(gè)非常規的類(lèi)比供您考慮。
迷失是一部廣受歡迎的電視劇,講述了一群幸存者在飛機失事后被困在一個(gè)神秘的島嶼上的故事。其中一個(gè)次要情節涉及的角色認為他們必須在屏幕上的計數器變?yōu)?0 或世界末日之前輸入一串簡(jiǎn)短的數字。
輸入系列后,計數器將重置并再次開(kāi)始倒計時(shí)。目前尚不清楚輸入這一系列數字只是心理實(shí)驗的一部分,還是世界的命運岌岌可危。找出答案的方法是不輸入數字。角色可以自由出門(mén)、尋找食物、游泳——但他們必須及時(shí)返回以重置計數器。從計算機的角度來(lái)看,接收到正確的輸入意味著(zhù)有人在正常操作并為柜臺提供服務(wù)。沒(méi)有收到正確的輸入表明出現了問(wèn)題。
看門(mén)狗定時(shí)器的運行方式類(lèi)似于《迷失》中的計算機系統。微控制器的其余部分是壓力過(guò)大的角色,他們可以自由地做任何事情,但必須定期維護計數器或微控制器重置(又名世界末日)。正確運行的軟件和硬件將在固定的時(shí)間內為看門(mén)狗提供服務(wù),而有故障的軟件或硬件可能不會(huì )。
內部看門(mén)狗定時(shí)器的類(lèi)型
有兩種類(lèi)型的看門(mén)狗,非窗口和窗口。如果服務(wù)計數器延遲,這兩種類(lèi)型都會(huì )導致重置。
如果服務(wù)發(fā)生得太早,窗口式看門(mén)狗也會(huì )導致復位。此圖顯示了使用遞增計數器的看門(mén)狗的時(shí)序。有些看門(mén)狗使用遞減計數器,但原理是一樣的。
看門(mén)狗定時(shí)器的時(shí)序
對于非窗口或窗口看門(mén)狗,計數器達到上限值之前的任何服務(wù)都會(huì )重置計數器,一切正常。窗口看門(mén)狗添加一個(gè)下限并創(chuàng )建一個(gè)計數窗口。下限和上限之間的任何服務(wù)都可以。這是圖表的詳細說(shuō)明。
A - 啟動(dòng)后不久,程序用計數器的上限初始化看門(mén)狗并啟用計數。對于窗口看門(mén)狗,還設置了下限。
B和C - 軟件在計數器達到上限之前成功為計數器提供服務(wù),對于窗口看門(mén)狗,在達到下限之后。維修后,計數器重置為 0 并重新開(kāi)始計數。一切都好。
D - 程序不為計數器服務(wù),計數達到上限??撮T(mén)狗重置微控制器。
D 到 E - 微控制器啟動(dòng)并初始化并啟用看門(mén)狗。
E - 看門(mén)狗開(kāi)始計數。
F - 程序在達到上限之前為計數器提供服務(wù),對于窗口看門(mén)狗,在達到下限之后提供服務(wù)。計數器重置為 0 并重新開(kāi)始計數。一切都好。
G - 程序在計數達到窗口看門(mén)狗的下限之前為計數器提供服務(wù)。對于沒(méi)有下限的非窗口看門(mén)狗,沒(méi)有復位,計數器變?yōu)?0 并再次開(kāi)始向上計數。對于窗口看門(mén)狗,微控制器被重置。
看門(mén)狗的細節差異很大。他們可以向上或向下計數。他們使用不同的時(shí)鐘。他們對上限和下限有不同的選擇。以下部分介紹了許多特性,但只是概述。
看門(mén)狗初始化
初始化看門(mén)狗可能很棘手。例如,一些看門(mén)狗在微控制器啟動(dòng)時(shí)自動(dòng)啟用。
如果不使用看門(mén)狗,則必須在啟動(dòng)時(shí)包含代碼以禁用它。我目前使用的看門(mén)狗就是這種情況。如果我的程序需要運行超過(guò)一秒,我必須禁用看門(mén)狗或更改窗口設置!
一些看門(mén)狗只允許對控制寄存器進(jìn)行寫(xiě)入作為一項安全功能。此功能可防止失控的軟件在初始化后更改設置。如果您在具有此功能的看門(mén)狗中使用默認設置,請確保覆蓋默認設置,即使位值相同。這“鎖定”了值并維護了安全性。
如果您使用 C 語(yǔ)言編程,請注意啟動(dòng)代碼中可能會(huì )初始化看門(mén)狗,它在您的 main() 函數之前運行。此代碼有時(shí)會(huì )作為運行標準 C 程序的一部分由開(kāi)發(fā)環(huán)境自動(dòng)包含。此代碼設置內存和中斷向量表。查看您的啟動(dòng)代碼以了解對看門(mén)狗的操作,并根據您的系統要求進(jìn)行修改。
窗口設置
看門(mén)狗可以是非窗口和窗口的。通過(guò)將窗口的下限作為選項來(lái)提供兩種類(lèi)型的單個(gè)定時(shí)器是很常見(jiàn)的。窗口的大小隨看門(mén)狗的不同而不同。
我目前使用的看門(mén)狗下限固定為上限的75%。另一個(gè)看門(mén)狗可以選擇上限的 75%、50%、37.5% 或 25%。另一個(gè)看門(mén)狗獨立設置上限和下限。關(guān)于如何選擇上限也有很多差異。
維修 AKA 看門(mén)狗定時(shí)器重置
定期重置看門(mén)狗計數器稱(chēng)為“維修”定時(shí)器。不同的看門(mén)狗定時(shí)器會(huì )有不同的服務(wù)要求。所有服務(wù)要求都使用在失控軟件執行期間不太可能發(fā)生的操作。
我目前使用的看門(mén)狗需要兩次寫(xiě)入“服務(wù)寄存器”,值為 0x55,后跟 0xAA。如果將 0x55 或 0xAA 以外的任何值寫(xiě)入服務(wù)寄存器,在任何時(shí)候,微控制器都會(huì )立即復位。
另一個(gè)看門(mén)狗需要單次寫(xiě)入值為 0xAAAA 的服務(wù)寄存器。數字 0xA 和 0x5 以及它們的交替位模式 1010 和 0101 似乎令人著(zhù)迷。一個(gè)定時(shí)器通過(guò)使用具有幻數 0x5743 的單次寫(xiě)入來(lái)違背這一趨勢。
睡眠模式
睡眠和其他低功耗模式使事情變得復雜。如果處理器進(jìn)入休眠并停止執行,看門(mén)狗應該做什么?看門(mén)狗時(shí)間應該保持不變嗎?
當處理器進(jìn)入和退出深度睡眠時(shí),我當前使用的看門(mén)狗會(huì )在初始計數時(shí)停止并重新啟動(dòng)。這個(gè)話(huà)題很復雜,當微控制器使用低功耗模式時(shí),您需要研究看門(mén)狗的操作。
漸進(jìn)反應
完全重置微控制器可能過(guò)于苛刻。一些看門(mén)狗具有允許漸進(jìn)式響應的功能。
例如,看門(mén)狗可以在復位之前的某個(gè)時(shí)間選擇中斷請求。此功能允許中斷服務(wù)例程在看門(mén)狗繼續計數時(shí)修復或記錄問(wèn)題。如果中斷例程無(wú)法使事情回到正軌,則會(huì )發(fā)生重置。
WDT策略
我使用術(shù)語(yǔ)“策略”來(lái)確定在何處設置看門(mén)狗的時(shí)間限制。簡(jiǎn)單的策略是使用一個(gè)非窗口看門(mén)狗,其超時(shí)時(shí)間比服務(wù)看門(mén)狗之間程序的任何可能執行時(shí)間都長(cháng)得多。我將其稱(chēng)為“重置按鈕”策略,因為它代替了按下重置按鈕的人。醫療設備或制造機器人等關(guān)鍵系統的策略需要更快的響應。
看門(mén)狗策略可以考慮很多因素:
? 系統是否使用可預測的主循環(huán)或基于實(shí)時(shí)操作系統的復雜多任務(wù)結構?
? 看門(mén)狗重置是否應該啟動(dòng)一系列自動(dòng)系統檢查?
? 看門(mén)狗是一系列診斷和修復問(wèn)題嘗試的階段嗎?
? 是否要在系統啟動(dòng)時(shí)測試看門(mén)狗以及其他檢查?
看門(mén)狗策略是一個(gè)復雜的話(huà)題并且非常依賴(lài)于應用程序。
在復位微控制器之前,看門(mén)狗在復位后仍然存在的狀態(tài)寄存器中設置一個(gè)位。通常該位與其他復位狀態(tài)一起存儲,例如掉電復位位。測試看門(mén)狗復位位應該是策略的一部分。
至少,在啟動(dòng)期間測試這個(gè)位并做一些事情來(lái)指示問(wèn)題。否則,失敗可能會(huì )被忽視,尤其是不常見(jiàn)的失敗。例如,在顯示器上輸出消息或點(diǎn)亮 LED。
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。
推薦閱讀:
如何利用1200 V EliteSiC MOSFET 模塊,打造充電更快的車(chē)載充電器?
采用增強互連封裝技術(shù)的1200 V SiC MOSFET單管設計高能效焊機