看門(mén)狗定時(shí)器(Watchdog Timer,WDT)是嵌入式系統(tǒng)中至關(guān)重要的組件,用于監(jiān)控和維護(hù)系統(tǒng)的穩(wěn)定性。主要是用來(lái)監(jiān)測(cè)單片機(jī)運(yùn)行狀態(tài)和解決程序引起的故障的模塊。在由單片機(jī)構(gòu)成的微型計(jì)算機(jī)系統(tǒng)中,由于單片機(jī)的工作常常會(huì)受到來(lái)自外界電磁場(chǎng)的干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運(yùn)行被打斷,由單片機(jī)控制的系統(tǒng)無(wú)法繼續(xù)工作,會(huì)造成整個(gè)系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對(duì)單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮,便產(chǎn)生了一種專(zhuān)門(mén)用于監(jiān)測(cè)單片機(jī)程序運(yùn)行狀態(tài)的芯片,俗稱(chēng)“看門(mén)狗”(watchdog)。根據(jù)功能不同,通常分為獨(dú)立看門(mén)狗和窗口看門(mén)狗。因?yàn)楠?dú)立看門(mén)狗受工作場(chǎng)合因素的影響會(huì)多一點(diǎn),僅適用于一些對(duì)時(shí)間精度要求較低的場(chǎng)合;窗口看門(mén)狗適用于對(duì)時(shí)間精度高的場(chǎng)合。
一、獨(dú)立看門(mén)狗
獨(dú)立看門(mén)狗本質(zhì)上是一個(gè)定時(shí)器,這個(gè)定時(shí)器有一個(gè)輸出端,可以輸出復(fù)位信號(hào)。該定時(shí)器是一個(gè) 12 位的遞減計(jì)數(shù)器,當(dāng)計(jì)數(shù)器的值減到 0 的時(shí)候,就會(huì)產(chǎn)生一個(gè)復(fù)位信號(hào)。如果在計(jì)數(shù)沒(méi)減到 0 之前,重置計(jì)數(shù)器的值的話(huà),那么就不會(huì)產(chǎn)生復(fù)位信號(hào),這個(gè)動(dòng)作我們稱(chēng)為喂狗。看門(mén)狗功能由 VDD 電壓域供電,在停止模式和待機(jī)模式下仍然可以工作。
從 IWDG 框圖整體認(rèn)知可得以下結(jié)論:
時(shí)鐘源:IWDG 的時(shí)鐘源通常來(lái)自一個(gè)低速內(nèi)部振蕩器(LSI),獨(dú)立于主系統(tǒng)時(shí)鐘,確保在主系統(tǒng)時(shí)鐘故障時(shí)仍能正常運(yùn)行。
分頻器:IWDG 使用分頻器來(lái)調(diào)整計(jì)時(shí)器的頻率。通過(guò)配置分頻器,可以改變 IWDG 的計(jì)時(shí)周期,從而靈活控制超時(shí)時(shí)間。
計(jì)數(shù)器:計(jì)數(shù)器是 IWDG 的核心部分,它會(huì)根據(jù)配置的分頻值進(jìn)行遞減計(jì)數(shù)。系統(tǒng)需要定期重置計(jì)數(shù)器(即“喂狗”),以防止計(jì)數(shù)器達(dá)到零觸發(fā)復(fù)位。
復(fù)位控制邏輯:當(dāng)計(jì)數(shù)器達(dá)到零時(shí),復(fù)位控制邏輯會(huì)生成一個(gè)復(fù)位信號(hào),觸發(fā)系統(tǒng)復(fù)位。
控制寄存器:IWDG 包含一組控制寄存器,用于配置分頻值、計(jì)數(shù)器初始值以及控制 IWDG 的啟停狀態(tài)。
- 看門(mén)狗啟動(dòng)邏輯:該邏輯用于啟用和禁用 IWDG。在一些系統(tǒng)中,IWDG 的啟動(dòng)邏輯可能是一次性的,即一旦啟動(dòng)便無(wú)法關(guān)閉,以增強(qiáng)系統(tǒng)的安全性。
IWDG 的工作流程可以概括為以下幾個(gè)步驟:
時(shí)鐘源供電:IWDG 通過(guò)低速內(nèi)部振蕩器(LSI)提供的時(shí)鐘信號(hào)進(jìn)行計(jì)時(shí),確保即使主系統(tǒng)時(shí)鐘發(fā)生故障,IWDG 仍然可以正常運(yùn)行。
配置分頻器:通過(guò)設(shè)置控制寄存器中的分頻器值,調(diào)整 IWDG 的計(jì)時(shí)頻率和超時(shí)時(shí)間。常見(jiàn)的分頻值范圍從 4 到 256 倍,以適應(yīng)不同的應(yīng)用需求。
初始化計(jì)數(shù)器:將計(jì)數(shù)器初始化為一個(gè)預(yù)設(shè)值,開(kāi)始計(jì)時(shí)。計(jì)數(shù)器會(huì)根據(jù)配置的分頻值逐漸遞減。
系統(tǒng)定期“喂狗”:在系統(tǒng)正常運(yùn)行過(guò)程中,主程序或定時(shí)任務(wù)需要定期重置計(jì)數(shù)器,以防止計(jì)數(shù)器達(dá)到零。如果計(jì)數(shù)器未在設(shè)定時(shí)間內(nèi)重置,IWDG 將認(rèn)為系統(tǒng)出現(xiàn)了故障。
觸發(fā)復(fù)位:當(dāng)計(jì)數(shù)器遞減至零時(shí),復(fù)位控制邏輯生成復(fù)位信號(hào),觸發(fā)系統(tǒng)復(fù)位。系統(tǒng)復(fù)位后,重新初始化 IWDG,并進(jìn)入正常工作狀態(tài)。
二、 窗口看門(mén)狗
窗口看門(mén)狗(Window Watchdog,WWDG)是一種高級(jí)看門(mén)狗定時(shí)器,主要用于檢測(cè)系統(tǒng)在指定時(shí)間窗口內(nèi)的運(yùn)行情況。相比于傳統(tǒng)的看門(mén)狗定時(shí)器,窗口看門(mén)狗通過(guò)限制系統(tǒng)“喂狗”的時(shí)間窗口,能夠更精準(zhǔn)地監(jiān)控系統(tǒng)的運(yùn)行狀態(tài),避免系統(tǒng)過(guò)早或過(guò)晚重置看門(mén)狗。本文將通過(guò)框圖介紹窗口看門(mén)狗的整體結(jié)構(gòu)和功能。
對(duì)于一般的看門(mén)狗,程序可以在它產(chǎn)生復(fù)位前的任意時(shí)刻刷新看門(mén)狗,但這有一個(gè)隱患,有可能程序跑亂了又跑回到正常的地方,或跑亂的程序正好執(zhí)行了刷新看門(mén)狗操作,這樣的情況下一般的看門(mén)狗就檢測(cè)不出來(lái)了,如果使用窗口看門(mén)狗,程序員可以根據(jù)程序正常執(zhí)行的時(shí)間設(shè)置刷新看門(mén)狗的一個(gè)時(shí)間窗口,保證不會(huì)提前刷新看門(mén)狗也不會(huì)滯后刷新看門(mén)狗,這樣可以檢測(cè)出程序沒(méi)有按照正常的路徑運(yùn)行非正常地跳過(guò)了某些程序段的情況。
窗口看門(mén)狗中有一個(gè)7位的遞減計(jì)數(shù)器T[6:0],它會(huì)在出現(xiàn)下述2種情況之一時(shí)產(chǎn)生看門(mén)狗復(fù)位:
當(dāng)喂狗的時(shí)候如果計(jì)數(shù)器的值大于某一設(shè)定數(shù)值W[6:0]時(shí),此設(shè)定數(shù)值在WWDG——CFR寄存器定義。(上窗口)
當(dāng)計(jì)數(shù)器的數(shù)值從0x40見(jiàn)到0x3F時(shí),【T6位跳變到0】。(下窗口)
如果啟動(dòng)了看門(mén)狗并且允許中斷,當(dāng)遞減計(jì)數(shù)器等于0x40時(shí),產(chǎn)生早期喚醒中斷(EWI),它可以用于喂狗以避免WWDG復(fù)位。
三、總結(jié)
窗口看門(mén)狗作為一種先進(jìn)的時(shí)間監(jiān)控機(jī)制,能夠有效提升系統(tǒng)的實(shí)時(shí)性和安全性。通過(guò)合理配置和使用窗口看門(mén)狗,開(kāi)發(fā)者可以確保系統(tǒng)在復(fù)雜環(huán)境中穩(wěn)定運(yùn)行,防止系統(tǒng)因時(shí)間偏差或異常操作而失控。未來(lái),隨著嵌入式系統(tǒng)技術(shù)的不斷發(fā)展,窗口看門(mén)狗將在系統(tǒng)安全和穩(wěn)定性保障方面繼續(xù)發(fā)揮重要作用。
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304816 -
監(jiān)測(cè)
+關(guān)注
關(guān)注
2文章
3593瀏覽量
44506 -
看門(mén)狗定時(shí)器
+關(guān)注
關(guān)注
0文章
38瀏覽量
16248
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論