硬件看門狗是什么
硬件看門狗是什么
你們知道什么是硬件看門狗嗎?跟著學(xué)習(xí)啦小編一起學(xué)習(xí)什么是硬件看門狗吧。
硬件看門狗介紹
看門狗,又叫watchdog timer,主要用來監(jiān)控、管理CPU的運行狀態(tài),并對處于異常狀態(tài)中的CPU進(jìn)行復(fù)位操作,使其能重新工作。
看門狗可分為硬件看門狗和軟件看門狗兩種。
硬件看門狗的主體是一個定時電路,并由被監(jiān)控CPU提供周期性“喂狗”信號,對定時器清零(俗稱“清狗”)。CPU正常工作時,由于能定時“清狗”,看門狗內(nèi)的定時器不會溢出。當(dāng)CPU出現(xiàn)故障,則不能繼續(xù)提供“清狗”信號,使得看門狗內(nèi)定時器不斷累加而溢出,從而觸發(fā)一個復(fù)位信號對CPU進(jìn)行復(fù)位,使CPU重新工作。
軟件看門狗原理上一樣,只是將硬件電路上的定時器用處理器的內(nèi)部定時器代替,這樣可以簡化硬件電路設(shè)計,但在可靠性方面不如硬件定時器,比如系統(tǒng)內(nèi)部定時器自身發(fā)生故障就無法檢測到。當(dāng)然也有通過雙定時器相互監(jiān)視,這不僅加大系統(tǒng)開銷,也不能解決全部問題,比如中斷系統(tǒng)故障導(dǎo)致定時器中斷失效。
看門狗本身不是用來解決系統(tǒng)出現(xiàn)的問題,在調(diào)試過程中發(fā)現(xiàn)的故障應(yīng)該要查改設(shè)計本身的錯誤。加入看門狗目的是對一些程序潛在錯誤和惡劣環(huán)境干擾等因素導(dǎo)致系統(tǒng)死機(jī)而在無人干預(yù)情況下自動恢復(fù)系統(tǒng)正常工作狀態(tài)??撮T狗也不能完全避免故障造成的損失,畢竟從發(fā)現(xiàn)故障到系統(tǒng)復(fù)位恢復(fù)正常這段時間內(nèi)是不能正常工作的。同時一些系統(tǒng)也需要復(fù)位前保護(hù)現(xiàn)場數(shù)據(jù),重啟后恢復(fù)現(xiàn)場數(shù)據(jù),這可能也需要一筆軟硬件的開銷。
1).MR#:Manual-Reset,手動復(fù)位輸入信號,低電平有效,當(dāng)此管腳的輸入電平低于0.6V時,會觸發(fā)Reset#管腳輸出一個復(fù)位信號,此管腳內(nèi)部有 70uA 上拉電流。如要不使用此管腳,需要將此管腳接到VCC或者懸空,不可接地;
2).VCC:芯片工作電壓,接5V或3.3V;
3).GND:芯片參考地,直接與單板GND相連;
4).PFI:Power-Fail Comparator Input,電壓監(jiān)控輸入管腳,當(dāng)此管腳的輸入電壓低于1.25V時,F(xiàn)PO#及Reset#會輸出低電平信號;
5).PFO#:Power-Fail Output,電壓監(jiān)控輸出管腳,當(dāng)PFI的輸入電平低于1.25V時,輸出低電平,不使用此管腳時可將其懸空;
6).WDI:Watchdog Input,清狗信號輸入,WDI遇到一個上升沿/下降沿,內(nèi)部看門狗定時器都將清0。WDI的輸入信號超過1.6S不發(fā)生跳變時,看門狗內(nèi)部定時器將會溢出并觸發(fā)WDO#輸出低電平;
7).WDO#:Watchdog Output,看門狗輸出,WDI超過1.6S不發(fā)生跳變時,WDO#將輸出低電平,另外,VCC低于1.25V時也會觸發(fā)WDO#輸出低電平;
8).RESET#:復(fù)位信號輸出,低電平有效,低電平寬度為200ms,Reset#信號只會被VCC或MR#觸發(fā),WDO#有效時不會觸發(fā)Reset#,除非將WDO#接到RESET#上。
雖然MAX706與ADM706芯片在封裝上相互兼容,但兩者還是存在一些差異,具體如下:
1).MAX706R是商業(yè)級器件,工作溫度范圍為:0-70 oC,而ADM706R是工業(yè)級器件,工作溫度范圍為:-40-85 oC,所以大家在選型的時候,一定要產(chǎn)品的工作環(huán)境是否對溫度有要求;
2).MAX706R的最小復(fù)位脈沖寬度為140ms,ADM706R的最小脈沖寬度為160ms;
3).ADM706R的WDI管腳若懸空處于高阻狀態(tài)時會禁止芯片工作,所以設(shè)計時,需要將WDI管腳通過4.7K電阻上拉到VCC。而MAX706不能被禁止,一上電就開始工作,所以WDI不需要上拉;
4).ADM706R的PFO#信號不但會被PFI信號觸發(fā),同時也會被MR#信號觸發(fā),當(dāng)MR#出現(xiàn)負(fù)電平時,會觸發(fā)PFO#輸出10KHz方波并保持,但MAX706的PFO#僅僅和輸入PFI有關(guān),不會受MR#管腳電平的影響;
5).當(dāng)MR#出現(xiàn)低電平時,對于MAX706芯片,WDO#將先于RESET#跳變,而ADM706卻相反,WDO#后于RESET#跳變。
為了使硬件看門狗更可靠,使用起來更靈活,當(dāng)今主流的設(shè)計方式都是看門狗芯片配合邏輯器件(CPLD)來使用。
此時,看門狗有三種清狗方式:
1).正常工作時,CPU輸出WDI信號清狗;
2).CPU關(guān)閉看門狗(不輸出WDI信號),由CPLD輸出WDI清狗信號,此方法不推薦使用,容易出問題,有的設(shè)計規(guī)范中是嚴(yán)禁CPU關(guān)閉看門狗的;
3).CPU掛死后,CPLD主動輸出WDI清狗信號一段時間,如果CPU仍未恢復(fù)正常,則不再繼續(xù)清狗,等待看門狗芯片內(nèi)部定時器溢出后輸出復(fù)位信號對CPU進(jìn)行復(fù)位。
在CPU上電啟動期間內(nèi),是不能輸出WDI信號去清狗的,而外部硬件看門狗是一上電就開始工作的,CPU的啟動時間一般在一兩分鐘,而看門狗的定時器只有1.6s,超過這個時間不清狗就會輸出復(fù)位信號對CPU進(jìn)行復(fù)位,如果這樣的話,CPU就會每隔1.6s重啟一次,不能正常工作,如何規(guī)避這種問題的?
在實際設(shè)計中是這樣做的,如下圖所示,在CPU上電啟動的這段時間內(nèi),利用系統(tǒng)時鐘信號CLK清狗,等CPU啟動完成后,SWITCH自動將清狗信號切換成WDI。定時器和切換開關(guān)(SWITCH)是用邏輯模擬的,定時器的溢出時間可設(shè)(一般比CPU啟動時間稍長一點點),等CPU啟動完成后,定時器也隨之溢出,并產(chǎn)生溢出信號,SWITCH接收到此溢出信號后,立即采取動作,將清狗信號從系統(tǒng)時鐘切換到WDI。
早期的硬件看門狗設(shè)計方式如下圖所示,將WDO#通過100歐姆電阻接到MR#管腳上,當(dāng)看門狗溢出時,WDO#輸出低電平,并傳遞給MR#,觸發(fā)看門狗RESET#管腳輸出低電平去復(fù)位CPU。另外,MR#管腳還接了一個按鍵開關(guān)S1,當(dāng)手動按下開關(guān)時,MR#被拉成低電平,從而觸發(fā)RESET#信號產(chǎn)生。在MR#管腳上,我們還看到了一個二極管D1,這個二極管有何用?我們來分析下,在正常情況下,WDO#輸出為高電平,它會對MR#管腳上的去抖電容C1充電,當(dāng)WDO#輸出低電平時,C1會通過WDO#放電,將MR#電平拉高,D1的作用就是防止C1通過WDO#放電對MR#電平產(chǎn)生影響。
硬件看門狗是什么相關(guān)文章: