看門狗,又叫 watchdog timer,是一個定時(shí)器電路,一般有一個輸入叫喂狗,一個輸出到MCU的RST端,MCU正常工作的時(shí)候每隔一段時(shí)間輸出一個信號到喂狗端,給 WDT 清零。如果超過規(guī)定時(shí)間不喂狗(一般在程序跑飛時(shí))WDT 定時(shí)超過,就會給出一個復(fù)位信號到MCU,使MCU復(fù)位防止MCU死機(jī),看門狗的作用就是防止程序發(fā)生死循環(huán)或者說程序跑飛。
工作原理:在系統(tǒng)運(yùn)行以后也就啟動了看門狗的計(jì)數(shù)器,看門狗就開始自動計(jì)數(shù),如果到了一定的時(shí)間還不去清看門狗,那么看門狗計(jì)數(shù)器就會溢出從而引起看門狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門狗的芯片時(shí)要注意清看門狗。
二、軟件、硬件看門狗的主要異同
兩者相同點(diǎn)如下:
都是通過定時(shí)器實(shí)現(xiàn);定時(shí)時(shí)間到?jīng)]有喂狗就進(jìn)行復(fù)位。
都是需要在規(guī)定的時(shí)間內(nèi)喂狗。
兩者都是靠軟件進(jìn)行喂狗。
兩者的主要差異如下:
附加功能:硬件看門狗芯片一般還附帶了延遲復(fù)位和電源檢 測的功能,軟件則沒有。
屏蔽方法:軟件看門狗很容易屏蔽關(guān)閉,只需修改其中的寄存器,而硬件看門狗一旦啟動不斷電就停不下來。
啟動方式:軟件看門狗很容易啟動,只需修改其中的寄存器。硬件一般是收到第一個喂狗信號后就啟動。
初始化:硬件看門狗上電后收到第一個喂狗脈沖就完成了初始化,軟件看門狗則需要配置相關(guān)的寄存器(或者調(diào)用相關(guān)的看門狗子程序)。
三、4G工業(yè)路由器為何需要看門狗
4G路由器軟件看門狗是在主程序里加入了程序監(jiān)測機(jī)制。 為了防止程序出錯或者內(nèi)存溢出等系列問題,在4G路由器軟件代碼里加入檢測代碼,一旦發(fā)現(xiàn)4G路由器某一部分軟件異常,或者出錯,4G路由器看門代碼會重新啟動軟件。
4G路由器硬件看門狗則是額外加了一個單片機(jī), 運(yùn)行一個小程序用來檢測整個4G路由器設(shè)備程序。4G路由器軟件看門狗也是會出現(xiàn)異常,4G路由器一旦整個程序死機(jī),軟件看門狗也無法喚醒。
4G路由器主程序功能多,結(jié)構(gòu)復(fù)雜, 相對容易會出現(xiàn)異常。而4G路由器的硬件看門狗則是一個比較簡單的程序,不會出現(xiàn)異常。所以,一旦4G路由器主程序出現(xiàn)異常,而4G路由器軟件看門狗無法喚醒的時(shí)候,4G路由器的硬件看門狗會斷電重啟,將4G路由器整個設(shè)備的程序復(fù)位。
由于全網(wǎng)通4G路由器一般應(yīng)用于智能系統(tǒng)、安防監(jiān)測、自助服務(wù)和工業(yè)無人職守的場所,4G路由器設(shè)備穩(wěn)定性就變的非常重要,因此在4G路由器上加一個硬件看門狗是全網(wǎng)通4G路由器非常關(guān)鍵性的一個功能,必不可少。