一、定義
看門狗,又叫watchdog timer,是乙個定時器電路,一般有乙個輸入,叫餵狗(kicking the dog/service the dog),乙個輸出到mcu的rst端,mcu正常工作的時候,每隔一段時間輸出乙個訊號到餵狗端,給 wdt清零,如果超過規定的時間不餵狗(一般在程式跑飛時),wdt定時超過,就會給出乙個復位訊號到mcu,使mcu復位。防止mcu宕機. 看門狗的作用就是防止程式發生死迴圈,或者說程式跑飛。
二、基本原理:
看門狗是一種監控系統的執行狀況的手段,通過軟硬體結合的方式實現對系統執行狀況的監控。穩定執行的軟體會在執行完特定指令後進行餵狗,若在一定週期內看門狗沒有收到來自軟體的餵狗訊號,則認為系統故障,會進入中斷處理程式或強制系統復位。系統上電後根據不同的工作模式可以選擇使能看門狗的時機,若看門狗被使能則計數器開始計數,如果在設定的時間內沒有及時餵狗則會發生看門狗超時。看門狗主要由暫存器、計數器和狗叫模組構成:通過暫存器對看門狗進行基本設定,計數器計算狗叫時間,狗叫模組決定看門狗超時後發出的中斷或復位方式。
三、分類:
3.1硬體看門狗:
硬體看門狗是利用了乙個定時器,來監控主程式的執行,也就是說在主程式的執行過程中,我們要在定時時間到之前對定時器進行復位。如果出現死迴圈,或者說pc指標不能回來,那麼定時時間到後就會使微控制器復位。常用的wdt晶元如max813,5045,imp 813等。
3.2軟體看門狗:
而在某些情況下,也會採用純軟體的方法來設定看門狗,如在微控制器系統中,利用閒置的定時器/計數器就可以設計乙個軟體看門狗。具體實現步驟如下:
首先,在初始化程式中設定定時器/計數器的方式以控制暫存器(tmod) 和定時時間的初值,並且開啟中斷。然後,根據定時器的時間,在主程式中按一定的時間間隔插人復位定時器的指令(餵狗), 兩條餵狗指令之間的時間間隔可以根據系統時鐘與指令週期計算出來,而且該時間週期應該小於定時器的定時時間。最後,在定時器的中斷服務程式中,設定一條無條件轉移指令,將程式計數器pc轉移到初始化程式的入口。
在非微控制器系統,如powerpc系統中,也可以採用多執行緒的方式來設定軟體狗,其主要的步驟如下所述:
首先,新建乙個看門狗執行緒,該執行緒維護乙個全域性變數陣列,該陣列相當於每個工作執行緒的計數器。看門狗執行緒為一乙個死迴圈,每隔一段時間就會迴圈一次,並將全域性變數陣列的每乙個值都加1後判斷是否超過預定義的上限值,若發現某個執行緒對應的變數數值超過最大值,則看門狗執行緒會重置該執行緒。
然後,每個工作執行緒中,每隔一段時間就會將對應的全域性變數置0 (餵狗)。軟體看門狗的優點是無需額外的硬體支援,但當系統存在嚴重的錯誤時(例如:中斷服務出錯),則有可能導致軟體看門狗失效。
四、遮蔽方法:
看門狗的存在雖然使得程式變得更加健壯,但在某些時候它的存在會使的我們很困擾,例如在想要逆向分析除錯ecu上的程式時,看門狗的存在成了我們不得不面對的一道難題,為了使得ecu能夠除錯起來就必須遮蔽掉看門狗。
由看門狗的原理可知,看門狗最終的輸出訊號時作用到mcu的rst引腳的,所遮蔽的核心就是如如何斷開外部訊號和mcu的rst引腳的聯絡。此處以汽車ecu的看們狗電路為例。
4.1、找基礎晶元:
汽車ecu中硬體看門狗,通常整合在電源管理晶元,通訊轉換晶元等此類基礎晶元中。(如tle9263bqx、nvc8518b、uja113x)該類晶元中均存在乙個引腳控制著看門狗,需要做的就時按照該晶元的資料手冊描述對該引腳進行拉高或拉低即可遮蔽看門狗電路)。
4.2、找外圍復位電路:
對於一些ecu中看門狗不存在基礎晶元中,而是由晶振、電阻、電容等電子元器件組成,對於此類看門狗的遮蔽方法就只能通過分析電路走線了,將於mcu中rst引腳相接的電阻或電容斷開,該電阻、電容大概率出現在有晶振存在的區域,該類的看門狗遮蔽比較複雜,基本上時通過排除法來嘗試的。
4.3、提供外圍干擾訊號
對於那些即找不到基礎晶元、有找不到外圍看門狗電路的ecu,可以嘗試通過外部給mcu的rst引腳乙個拉高(rst通過乙個小阻值的電阻接到電源上)或拉低(rst通過乙個小阻值的電阻接到地上)的訊號。該方法存在些許風險,請謹慎嘗試。
rl濾波器原理 濾波電路基本原理
濾波電路基本原理 整流電路的輸出電壓不是純粹的直流,從示波器觀察整流電路的輸出,與直流相差很大,波形中含有較 大的脈動成分,稱為紋波。為獲得比較理想的直流電壓,需要利用具有儲能作用的電抗性元件 如電容 電感 組成的濾波電路來濾除整流電路輸出電壓中的脈動成分以獲得直流電壓。常用的濾波電路有無源濾波和有...
關於放大電路的基本原理
doc 在直流電路中,電晶體中的基極電流是直流電流lb,集 電極電流是直流電流lc。如果在此電路的基極迴路中施加乙個比直流 電壓vb小很多的交流電壓vb。mako,你能說說此時的基極電流和集電 極電流有什麼變化嗎?mako 好。我覺得對應施加的交流電壓vb,基極電流將會產生乙個變 化i。這樣一來,集...
爬蟲基本原理及概念
爬蟲在網路中爬行的時候,將web 上的網頁集合看成是乙個有向圖,從給定的起始 1 深度優先演算法 該演算法是指網路爬蟲會從選定的乙個超連結開始,按照一條線路,乙個乙個鏈結訪 問下去,直到達到這條線路的葉子節點,即不包含任何超連結的html 檔案,處理完這 到達葉子結點。這個方法有個優點是網路爬蟲在設...