共找到7條詞條名為看門狗的結果 展開
看門狗
監控晶元
在由單片機構成的微型計算機系統中,由於單片機的工作常常會受到來自外界電磁場的干擾,造成各種寄存器和內存的數據混亂,會導致程序指針錯誤,不在程序區,取出錯誤的程序指令等,都會陷入死循環,程序的正常運行被打斷,由單片機控制的系統無法繼續正常工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果。
看門狗,又叫watchdog,從本質上來說就是一個定時器電路,一般有一個輸入和一個輸出,其中輸入叫做喂狗,輸出一般連接到另外一個部分的複位端,一般是連接到單片機。看門狗的功能是定期的查看晶元內部的情況,一旦發生錯誤就向晶元發出重啟信號。看門狗命令在程序的中斷中擁有最高的優先順序。
看門狗,又叫watchdog timer,是一個定時器電路,一般有一個輸入,叫喂狗(kicking the dog/service the dog),一個輸出到MCU的RST端,MCU正常工作的時候,每隔一段時間輸出一個信號到喂狗端,給WDT清零,如果超過規定的時間不喂狗(一般在程序跑飛時),WDT定時超過,就會給出一個複位信號到MCU,使MCU複位。防止MCU死機。看門狗的作用就是防止程序發生死循環,或者說程序跑飛。
看門狗是一種監控系統的運行狀況的手段,通過軟硬體結合的方式實現對系統運行狀況的監控。穩定運行的軟體會在執行完特定指令後進行喂狗,若在一定周期內看門狗沒有收到來自軟體的喂狗信號,則認為系統故障,會進入中斷處理程序或強制系統複位。系統上電后根據不同的工作模式可以選擇使能看門狗的時機,若看門狗被使能則計數器開始計數,如果在設定的時間內沒有及時喂狗則會發生看門狗超時。看門狗主要由寄存器、計數器和狗叫模塊構成:通過寄存器對看門狗進行基本設置,計數器計算狗叫時間,狗叫模塊決定看門狗超時后發出的中斷或複位方式。
看門狗電路的應用,使單片機可以在無人狀態下實現連續工作,其工作原理是:看門狗晶元和單片機的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機其他控制語句中間的,一旦單片機由於干擾造成程序跑飛后而陷入某一程序段進入死循環狀態時,寫看門狗引腳的程序便不能被執行,這個時候,看門狗電路就會由於得不到單片機送來的信號,便在它和單片機複位引腳相連的引腳上送出一個複位信號,使單片機發生複位。即程序從程序存儲器的起始位置開始執行,這樣便實現了單片機的自動複位。
硬體看門狗是利用了一個定時器,來監控主程序的運行,也就是說在主程序的運行過程中,我們要在定時時間到之前對定時器進行複位。如果出現死循環,或者說PC指針不能回來,那麼定時時間到后就會使單片機複位。常用的WDT晶元如MAX813,5045,IMP 813等。
而在某些情況下,也會採用純軟體的方法來設置看門狗,如在單片機系統中,利用閑置的定時器/計數器就可以設計一個軟體看門狗。具體實現步驟如下:
首先,在初始化程序中設置定時器/計數器的方式以控制寄存器(TMOD)和定時時間的初值,並且打開中斷。
然後,根據定時器的時間,在主程序中按一定的時間間隔插人複位定時器的指令(喂狗),兩條喂狗指令之間的時間間隔可以根據系統時鐘與指令周期計算出來,而且該時間周期應該小於定時器的定時時間。
最後,在定時器的中斷服務程序中,設置一條無條件轉移指令,將程序計數器PC轉移到初始化程序的入口。
首先,新建一個看門狗線程,該線程維護一個全局變數數組,該數組相當於每個工作線程的計數器。看門狗線程為一一個死循環,每隔一段時間就會循環一次,並將全局變數數組的每一個值都加1后判斷是否超過預定義的上限值,若發現某個線程對應的變數數值超過最大值,則看門狗線程會重置該線程。
然後,每個工作線程中,每隔一段時間就會將對應的全局變數置0(喂狗)。
軟體看門狗的優點是無需額外的硬體支持,但當系統存在嚴重的錯誤時(例如:中斷服務出錯),則有可能導致軟體看門狗失效。