在嵌入式開發(fā)中,系統(tǒng)一旦“跑飛”,工程師最怕的不是 bug,而是程序卡死無人知。這時,芯片自身的自我保護(hù)機(jī)制就至關(guān)重要。看門狗、復(fù)位源和異常處理機(jī)制,是保證系統(tǒng)可靠性的三大基石。本文帶你梳理清楚它們的作用、原理與應(yīng)用。
一、看門狗定時器(Watchdog Timer)
1. 原理
看門狗定時器本質(zhì)上是一個獨(dú)立定時器,持續(xù)倒計時:
- 軟件在規(guī)定時間內(nèi)“喂狗”(重置看門狗計數(shù)器),系統(tǒng)繼續(xù)運(yùn)行。
- 如果程序死循環(huán)或跑飛,沒有及時喂狗,看門狗觸發(fā)復(fù)位,將 MCU 拉回初始狀態(tài)。
示例:STM32 獨(dú)立看門狗 IWDG 喂狗代碼
- #include"stm32f4xx_hal.h"
- IWDG_HandleTypeDef hiwdg;
- voidWatchdog_Init(void){
- hiwdg.Instance=IWDG;
- hiwdg.Init.Prescaler=IWDG_PRESCALER_64;
- hiwdg.Init.Reload=0x0FFF;// 最大計數(shù)
- HAL_IWDG_Init(&hiwdg);
- }
- voidFeed_Watchdog(void){
- HAL_IWDG_Refresh(&hiwdg);// 喂狗
- }
- intmain(void){
- HAL_Init();
- Watchdog_Init();
- while(1){
- // 主循環(huán)任務(wù)
- Feed_Watchdog();// 喂狗
- HAL_Delay(100);// 模擬其他操作
- }
- }
2. 應(yīng)用場景
3. 開發(fā)注意點(diǎn)
- 喂狗操作應(yīng)放在主循環(huán)關(guān)鍵路徑或任務(wù)完成后,而不是單純在中斷中定時喂,否則失去意義。
- 某些 MCU 提供獨(dú)立看門狗(IWDG)與窗口看門狗(WWDG),后者要求“既不能太早喂,也不能太晚喂”,增加可靠性。
二、復(fù)位源(Reset Source)
復(fù)位讓 MCU 回到確定的起點(diǎn),觸發(fā)來源多樣:
- 上電復(fù)位(POR)
- 外部復(fù)位(External Reset)
- 看門狗復(fù)位
- 低電壓復(fù)位(Brown-out Reset)
- 軟件復(fù)位(Software Reset)
示例:軟件復(fù)位 STM32
- #include"stm32f4xx_hal.h"
- voidSoftware_Reset(void){
- NVIC_SystemReset();// 觸發(fā)軟件復(fù)位
- }
復(fù)位意義
- 保證系統(tǒng)回到安全初始狀態(tài)
- 避免在電源或邏輯異常下繼續(xù)運(yùn)行
- 給系統(tǒng)“第二次機(jī)會”
三、異常處理機(jī)制(Exception Handling)
即使有看門狗和復(fù)位,系統(tǒng)運(yùn)行中仍可能遇到不可避免的異常,如訪問非法地址、總線錯誤或中斷嵌套沖突。
1. 異常來源
- 硬件異常:除零錯誤、非法指令、總線錯誤
- 系統(tǒng)異常:中斷優(yōu)先級沖突、棧溢出
- 軟件異常:數(shù)組越界、指針錯誤
2. 處理方式
- 異常向量表:啟動時建立,不同異常對應(yīng)不同入口函數(shù)。
- 硬件保護(hù):部分 MCU 自動保存現(xiàn)場寄存器,便于恢復(fù)。
- 軟件處理:開發(fā)者可編寫異常處理函數(shù)(如HardFault_Handler),打印或記錄錯誤信息。
示例:Cortex-M HardFault 處理
- voidHardFault_Handler(void){
- // 可以點(diǎn)亮 LED 或輸出日志
- while(1){
- // 死循環(huán),等待復(fù)位或調(diào)試
- }
- }
3. 應(yīng)用實踐
- Cortex-M 系列常見異常:
- HardFault(硬錯誤)
- MemManage(存儲器管理錯誤)
- BusFault(總線錯誤)
- UsageFault(用法錯誤)
- 異常處理函數(shù)中可加入死循環(huán) + LED 閃爍或日志打印,方便調(diào)試。
四、三者關(guān)系
- 看門狗:主動防御程序“卡死”
- 復(fù)位源:系統(tǒng)“重啟按鈕”,確保安全狀態(tài)
- 異常處理:運(yùn)行中診斷問題
它們共同構(gòu)成系統(tǒng)的三道保險:
- 1.異常處理發(fā)現(xiàn)問題
- 2.看門狗在關(guān)鍵時刻觸發(fā)復(fù)位
- 3.復(fù)位源保證重啟后系統(tǒng)穩(wěn)定
總結(jié)
在嵌入式開發(fā)中,功能跑通只是第一步,系統(tǒng)可靠性才是真正考驗。
- 看門狗確保程序不會永久卡死
- 復(fù)位源保證系統(tǒng)能安全回到起點(diǎn)
- 異常處理機(jī)制幫助定位問題
三者配合,才能讓嵌入式系統(tǒng)在無人值守的環(huán)境下長期穩(wěn)定運(yùn)行。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
看門狗
+關(guān)注
關(guān)注
10文章
610瀏覽量
73069 -
定時器
+關(guān)注
關(guān)注
23文章
3368瀏覽量
124017 -
異常處理
+關(guān)注
關(guān)注
0文章
15瀏覽量
7474
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
一文詳解看門狗定時器
看門狗定時器由獨(dú)立的1 Mhz 片內(nèi)振蕩器驅(qū)動。這是VCC = 5V 時的典型值。請參見特性數(shù)據(jù)以了解其他VCC 電平下的典型值。通過設(shè)置看門狗定時
發(fā)表于 09-02 16:40
?5009次閱讀
看門狗定時器的設(shè)計、工作原理及看門狗定時器的操作
看門狗定時器(WDT,Watch Dog Timer)是單片機(jī)的一個組成部分,它實際上是一個計數(shù)器,一般給看門狗一個數(shù)字,程序開始運(yùn)行后看門狗
發(fā)表于 05-23 09:14
?8660次閱讀
看門狗喂狗時間及程序
,過一段時間CPU應(yīng)發(fā)出指令讓看門狗復(fù)位,重新開始倒計數(shù)。如果看門狗減到0就認(rèn)為程序沒有正常工作,強(qiáng)制整個系統(tǒng)復(fù)位。 看門狗分硬件
發(fā)表于 10-16 09:19
?1.9w次閱讀
看門狗定時器的作用
讓看門狗復(fù)位,重新開始倒計數(shù)。如果看門狗減到0就認(rèn)為程序沒有正常工作,強(qiáng)制整個系統(tǒng)復(fù)位。 看門狗定時器
發(fā)表于 10-20 14:41
?7291次閱讀
dsp看門狗定時器的作用解析
看門狗在外圍監(jiān)控DSP中軟件的運(yùn)行以及硬件的操作,當(dāng)CPU出現(xiàn)故障時,看門狗將執(zhí)行系統(tǒng)復(fù)位。如果軟件進(jìn)入了一個不正確的循環(huán)或者CPU出現(xiàn)暫時的混亂,看門狗
發(fā)表于 11-21 16:52
?1.5w次閱讀
基于VxWorks的看門狗定高效定時機(jī)制設(shè)計實現(xiàn)
VxWorks提供了一個看門狗定時器(watchDog timer),它由以下四個函數(shù)維護(hù):
wdCreate( ) 創(chuàng)建并初始化一個看門狗定時器;wdDelete( ) 終止并
發(fā)表于 03-06 09:22
?5544次閱讀
TB3123 - PIC?單片機(jī)的窗口看門狗定時器
窗口看門狗定時器(Windowed Watchdog Timer,WWDT)是PIC單片機(jī)的增強(qiáng)型看門狗定時器。該定時器是PIC單片機(jī)現(xiàn)有
發(fā)表于 03-26 14:35
?0次下載
看門狗定時器防止溢出復(fù)位程序
看門狗定時器用來防止程序因供電電源、空間電磁干擾或其它原因引起的強(qiáng)烈干擾噪聲而跑飛的事故。程序中設(shè)置看TL=WDTPW+WDTCNTCL,當(dāng)程序跑飛不能及時清零看門狗,導(dǎo)致看門狗溢出
發(fā)表于 04-23 09:59
?5246次閱讀
可配置電源監(jiān)視器為多軌系統(tǒng)集成了可調(diào)看門狗和復(fù)位定時器
可配置電源監(jiān)視器為多軌系統(tǒng)集成了可調(diào)看門狗和復(fù)位定時器
發(fā)表于 03-21 06:26
?7次下載
LPC2294看門狗定時器
看門狗定時器(WDT)特點(diǎn)1.如果不定期重新裝載,會內(nèi)部重置芯片2.調(diào)試模式3.由軟件啟動,但是需要硬件復(fù)位或者看門狗復(fù)位/中斷才能禁用。4
發(fā)表于 12-04 10:36
?8次下載
看門狗定時器
看門狗定時器(WDT,Watch Dog Timer)是單片機(jī)的一個組成部分,它實際上是一個計數(shù)器,一般給看門狗一個數(shù)字,程序開始運(yùn)行后看門狗
發(fā)表于 12-09 09:21
?7次下載
使用高速微型看門狗定時器
在惡劣環(huán)境中使用的高速微控制器應(yīng)用的設(shè)計人員將使用看門狗定時器來防止軟件失控。DS80C320高速微控制器集成了看門狗
內(nèi)部和外部看門狗定時器的比較
本文比較了內(nèi)部(與微處理器集成)和外部(基于硬件)看門狗定時器(WDT)的優(yōu)缺點(diǎn)。它解釋了內(nèi)部看門狗定時器易于實現(xiàn),但容易發(fā)生故障。MAXQ
看門狗定時器、復(fù)位源、異常處理機(jī)制科普
評論