看門狗定時(shí)器(WDT)強(qiáng)制嵌入式微處理器或微控制器響應(yīng)無(wú)效的軟件狀態(tài)而進(jìn)行復(fù)位(硬件復(fù)位)。這樣的狀態(tài)可能很簡(jiǎn)單,例如由軟件錯(cuò)誤、宇宙射線或EMI(電磁干擾)之類的事件引起的觸發(fā)寄存器位。我們常見的聯(lián)網(wǎng)設(shè)備中,串口服務(wù)器、DTU、工業(yè)路由器等都有看門狗保護(hù)功能。
防止微處理器鎖定是WDT的典型應(yīng)用。通常,嵌入式軟件具有一個(gè)“主循環(huán)”,該主循環(huán)可調(diào)用多個(gè)子程序來(lái)指導(dǎo)各種活動(dòng)。然后,在循環(huán)的頂部將WDT復(fù)位一次。如果循環(huán)由于任何原因無(wú)法正確執(zhí)行,則看門狗將啟動(dòng),并且設(shè)備將被重置。
具有WDT的系統(tǒng)特別適合檢測(cè)誤碼。瞬時(shí)位錯(cuò)誤是由中斷引起的,包括軟存儲(chǔ)故障以及EMI放電到存儲(chǔ)設(shè)備及其接口中。這些位錯(cuò)誤會(huì)導(dǎo)致暫時(shí)的極性反轉(zhuǎn),導(dǎo)致數(shù)據(jù)進(jìn)出嵌入式處理器。當(dāng)在獲取程序信息時(shí)發(fā)生此位錯(cuò)誤時(shí),微處理器將開始執(zhí)行錯(cuò)誤代碼。潛在地,處理器可能開始執(zhí)行操作數(shù)而不是操作碼。當(dāng)處理器開始執(zhí)行此錯(cuò)誤代碼時(shí),它將無(wú)法正確執(zhí)行為看門狗服務(wù)的代碼。在超時(shí)間隔之后,看門狗將導(dǎo)致處理器復(fù)位。在正確設(shè)計(jì)的系統(tǒng)中,此重置將更正原始錯(cuò)誤。
還要注意,WDT無(wú)法立即檢測(cè)到故障。根據(jù)定義,WDT必須在重置處理器之前達(dá)到預(yù)定時(shí)間間隔的末尾。這個(gè)事實(shí)解釋了為什么在WDT可以糾正失控條件之前,應(yīng)選擇最短的超時(shí)間隔來(lái)到期。
WDT可以位于微處理器(例如MAXQ2000微控制器)內(nèi)部,也可以作為獨(dú)立IC外部使用,也可以作為支持ASIC的一部分嵌入。無(wú)論WDT是內(nèi)部的還是外部的,每種設(shè)備類型都有其優(yōu)點(diǎn)和缺點(diǎn)。內(nèi)部計(jì)時(shí)器可以節(jié)省金錢,但可能會(huì)受到失控代碼的影響。外部WDT的實(shí)現(xiàn)成本稍高,但它具有獨(dú)立的時(shí)鐘源,因此具有更好的可靠性。如果配置正確,則無(wú)法通過(guò)失控代碼來(lái)繞過(guò)或禁用它。
● 如果設(shè)計(jì)正確,則不能意外禁用其軟件。
● 時(shí)鐘源與系統(tǒng)時(shí)鐘分開。
● 在最小/最大看門狗超時(shí)周期內(nèi)可用。
● 復(fù)位輸出可以連接到其他需要復(fù)位的系統(tǒng)IC。
● 監(jiān)視一個(gè)或多個(gè)電源軌(某些微處理器中的內(nèi)部掉電電路不太準(zhǔn)確)。
● 超時(shí)時(shí)間可通過(guò)使用電容器完全調(diào)節(jié)。
● 實(shí)施需要一些成本。
● 溫度范圍內(nèi)的超時(shí)時(shí)間可能會(huì)有很大差異。
● 需要一根微處理器I / O線。
● 由于微處理器具有節(jié)能功能,因此必須計(jì)算超時(shí)以匹配高速和低速時(shí)鐘模式。
● 成本基本上為零。
● 為了保存調(diào)試信息,它可以在重置之前觸發(fā)中斷。
● 使用方便。
缺點(diǎn)
● 有時(shí)雙向復(fù)位引腳可以連接到其他需要復(fù)位的系統(tǒng)IC。
● 當(dāng)處理器從高速更改為低速或進(jìn)入睡眠模式時(shí),可以修改超時(shí)。
● 看門狗超時(shí)時(shí)間隨溫度的變化較小。
每個(gè)WDT的核心都是計(jì)數(shù)器寄存器。時(shí)鐘源連續(xù)遞增計(jì)數(shù)器寄存器,當(dāng)它溢出時(shí),看門狗邏輯將強(qiáng)制系統(tǒng)復(fù)位。為防止這種復(fù)位,您必須定期執(zhí)行“維修看門狗”過(guò)程中的清零計(jì)數(shù)器寄存器。外部WDT IC具有數(shù)字輸入,可在每次從低到高或從高到低的轉(zhuǎn)換時(shí)清除計(jì)數(shù)器寄存器。對(duì)于內(nèi)部WDT,“服務(wù)”實(shí)現(xiàn)有所不同。例如,可以通過(guò)設(shè)置寄存器位(MOVE WDCN.0,#1)來(lái)服務(wù)MAXQ2000的WDT。PIC微控制器和其他微處理器使用專用指令(CLRWDT)來(lái)服務(wù)計(jì)數(shù)器寄存器。
正確運(yùn)行的軟件應(yīng)提供具有足夠規(guī)律性的數(shù)字信號(hào)轉(zhuǎn)換,以使計(jì)數(shù)器寄存器永遠(yuǎn)不會(huì)溢出。但是軟件可能陷入無(wú)限循環(huán)或開始失控執(zhí)行,因此不會(huì)清除計(jì)數(shù)器寄存器。這種情況最終會(huì)觸發(fā)重置。WDT周期是計(jì)數(shù)器溢出所需的時(shí)間。為防止復(fù)位,看門狗服務(wù)之間的間隔必須短于超時(shí)時(shí)間。
一些WDT包含比基本計(jì)數(shù)器結(jié)構(gòu)更高級(jí)的功能。常見的變化是“窗口式”或“最小/最大” WDT。當(dāng)看門狗維修太慢或太快時(shí),此功能會(huì)發(fā)出復(fù)位信號(hào)。如果在計(jì)數(shù)器寄存器中的數(shù)字低于某個(gè)閾值時(shí)有清除計(jì)數(shù)器寄存器的信號(hào)到達(dá),則器件將觸發(fā)系統(tǒng)復(fù)位。簡(jiǎn)而言之,如果維修太快,看門狗會(huì)發(fā)出系統(tǒng)復(fù)位信號(hào),從而在晶體振蕩器開始以晶體標(biāo)稱頻率的諧波運(yùn)行時(shí)阻止微處理器工作。另一個(gè)功能是通過(guò)邏輯輸入(外部看門狗)或寄存器位(內(nèi)部看門狗)禁用WDT。
WDT的變化豐富,而工業(yè)路由器中的看門狗功能是對(duì)產(chǎn)品穩(wěn)定運(yùn)行的保護(hù)方式,是看門狗定時(shí)器中的一種。這種保護(hù)機(jī)制可以助力聯(lián)網(wǎng)項(xiàng)目通訊過(guò)程中的穩(wěn)定性,達(dá)到不因聯(lián)網(wǎng)設(shè)備宕機(jī)造成的數(shù)據(jù)中斷。為數(shù)據(jù)傳輸工作提供良好的應(yīng)用基礎(chǔ)。