網(wǎng)站開發(fā) 需求優(yōu)化設計答案四年級上冊語文
嵌入式C語言–WatchDog最全概念
嵌入式C語言--WatchDog最全概念
- 嵌入式C語言--WatchDog最全概念
- 一. 什么是Watchdog
- 1)什么是“被狗咬”
- 2)什么是喂狗
- 二. 基本思想
- 三. 作用
- 四. 監(jiān)視目標
- 1) 監(jiān)視一個進程
- 2)監(jiān)視一個操作系統(tǒng)
- 五. 系統(tǒng)初始化時關閉watchdog的原因
- 六. WATCHDOG模塊
- 七. WatchDog總結
一. 什么是Watchdog
Watchdog,又稱watchdog timer,它是計算機可靠性(dependability)領域中一個極為簡單同時非常有效的檢測(detection)工具。
WatchDog硬件的邏輯就是,其硬件上有個記錄超時功能,然后要求用戶需要每隔一段時間(此時間可以根據(jù)自己需求而配置)去對其進行一定操作,比如往里面寫一些固定的值,俗稱“喂狗”,發(fā)現(xiàn)超時了,即過了這么長時間還不給狗喂食,那么偶就認為你系統(tǒng)是死機了,出問題了,狗狗就幫你重啟系統(tǒng)。說白了就是弄個看家狗Dog,你要定期給它喂食,如果超時不喂食,那么狗就認為你,他的主人,你的系統(tǒng),死機了,就幫你reset重啟系統(tǒng)。
Softwere Watchdog Timeout,顧名思義就是軟件超時監(jiān)控狗。
1)什么是“被狗咬”
當看門狗啟動后,計數(shù)器開始自動計數(shù),經(jīng)過一定時間,如果沒有被復位,計數(shù)器溢出就會對CPU產(chǎn)生一個復位信號使系統(tǒng)重啟。
簡單理解就是當不喂狗時,狗就要來咬你了,這個時候就系統(tǒng)重啟了。
2)什么是喂狗
系統(tǒng)正常運行時,需要在看門狗允許的時間間隔內(nèi)對看門狗計數(shù)器清零,從而不讓復位信號產(chǎn)生。
如果系統(tǒng)不出問題,程序保證按時“喂狗”,一旦程序跑飛,沒有“喂狗”,系統(tǒng)“被咬”復位。
這就好比你的身邊有一只時刻饑餓的狗,你不按時給它肉吃,它就會吃你的肉,被狗咬…然后掛了,投胎轉世,徹底重新做人。
二. 基本思想
WatchDog的基本思想是針對被監(jiān)視的目標設置一個計數(shù)器和一個閾值,WatchDog會自己增加計數(shù)值,并等待被監(jiān)視的目標周期性地重置計數(shù)值。一旦目標發(fā)生錯誤,沒來得及重置計數(shù)值,watchdog會檢測到計數(shù)值溢出,并采取恢復措施(通常情況下是重啟)。
總結一下就是計數(shù)——溢出——觸發(fā)。
一個正常運行的系統(tǒng),它的執(zhí)行流應該是可預測的,因此可以在它正常執(zhí)行路徑上設置一些周期性重置watchdog的點;但如果系統(tǒng)發(fā)生故障,它可能執(zhí)行不到下一個重置watchdog的點,此時故障將被watchdog捕捉到??吹竭@兒,您應該知道watchdog對于檢測死循環(huán)或死鎖這類故障非常有效。
三. 作用
watchdog 一般是一個硬件模塊(也可以軟件實現(xiàn)),其作用是在嵌入式操作系統(tǒng)中,很多應用情況是系統(tǒng)長期運行且無人看守,所以難免或者怕萬一出現(xiàn)系統(tǒng)死機,那就狗屁了,這時,watchdog就會自動幫你重啟系統(tǒng)來完成初始化。
它的工作方式是事件觸發(fā)的,它可以對任何合理的事件計數(shù)(如CPU指令)。其中時間事件(timeout)最常使用,這也是為什么watchdog又叫做watchdog timer。Watchdog系統(tǒng)起到非常重要的作用,相當于系統(tǒng)警察,當系統(tǒng)發(fā)生嚴重錯誤(如程序進入死循環(huán)等)不能恢復的時候,WatchDog能夠讓系統(tǒng)重啟。WatchDog的應用主要是在嵌入式操作系統(tǒng)中,避免了系統(tǒng)在無人干預時長時間掛起的情況。
總結:保證系統(tǒng)在出現(xiàn)不可恢復錯誤時,能夠自動讓系統(tǒng)重啟。
四. 監(jiān)視目標
Watchdog是一種檢測手段,它監(jiān)視的目標可以是一個進程也可以是整個操作系統(tǒng)。
1) 監(jiān)視一個進程
如果監(jiān)視目標只是一個進程,那么利用操作系統(tǒng)提供的定時功能即可實現(xiàn)一個Watchdog。
2)監(jiān)視一個操作系統(tǒng)
如果要監(jiān)視操作系統(tǒng),就得使用操作系統(tǒng)之外的工具,通常是一個附加的計數(shù)器。現(xiàn)代Intel CPU都包含的performance counter也可以提供這樣的功能,從而不需要額外的設備就能實現(xiàn)監(jiān)視操作系統(tǒng)的watchdog。
五. 系統(tǒng)初始化時關閉watchdog的原因
如果不禁用watchdog,那么就要單獨寫程序去定期“喂狗”。bootloader的作用是初始化必要的硬件資源和系統(tǒng)資源,保證產(chǎn)品軟件能夠正常啟動。bootloader不必長期留在內(nèi)存中,所以用不到這個watchdog的機制。
六. WATCHDOG模塊
在比較高檔的嵌入式硬件都有一個WATCHDOG模塊。如果在MCUMPU是沒有集成WATCHDOG,一般會在此嵌入式系統(tǒng)中加一個專門的WATCHDOG芯片來實現(xiàn)WATCHDOG機制。
此模塊主要的功能包括:
- 提供WATCHDOG控制寄存器和配置寄存器,供軟件開發(fā)人員根據(jù)系統(tǒng)需要進行靈活配置。
- 提供一接口,使應用軟件能夠定時給WATCHDOG“喂狗”。
- 提供WATCHDOG機制,當系統(tǒng)進入不可恢復錯誤時,能產(chǎn)生一個不可屏蔽中斷來通知系統(tǒng)自動重啟(一般這樣,也有改變?yōu)槠渌幚矸绞降?,只有相應的復位信號才能清除它。
七. WatchDog總結
- 看門狗 (Watch Dog)在嵌入式系統(tǒng)中很常見,常用于保證系統(tǒng)的可靠性??撮T狗有軟件與硬件兩種,有的MCU,本身有看門狗定時器,可以借助【外部獨立的看門狗芯片】,實現(xiàn)程序【監(jiān)控】功能。
- 看門狗是一個獨立的【定時器模塊】,有獨立的定時器控制器,程序可以設置定時器的超時時間,時間到了,會進入看門狗定時器中斷,并觸發(fā)系統(tǒng)【復位】
- 當系統(tǒng)異常,如程序跑飛后,由于無法確保按時【喂狗】,也就是不能及時的【重置看門狗定時器】,造成看門狗超時,觸發(fā)系統(tǒng)【復位】而重新運行程序
- 使用看門狗完成重啟能夠解決大部分的嵌入式系統(tǒng)的問題。因為出現(xiàn)錯誤重啟系統(tǒng),能夠解決大部分的問題。