在復(fù)雜的嵌入式應(yīng)用中,死機(jī)風(fēng)險無處不在。看門狗定時器以“監(jiān)督員”角色,通過預(yù)設(shè)的監(jiān)控周期與反饋協(xié)議,實時驗證程序健康度,若出現(xiàn)超時未響應(yīng)則執(zhí)行系統(tǒng)重置,其配置技巧是提升抗風(fēng)險能力的關(guān)鍵。
本文將分享正常運(yùn)行情況和模擬故障場景兩個示例,帶你快速了解看門狗定時器在嵌入式系統(tǒng)中的運(yùn)用要點(diǎn)。

最新源碼及實操教程詳見:https://docs.openluat.com/air8101/luatos/app/common/wdt/
注意:模組/芯片的內(nèi)部硬狗,能解決絕大多數(shù)情況下的死機(jī)問題。但如果有要求非常高的場景, 依然建議外掛硬件,然后通過gpio/i2c定時喂狗。
一、正常運(yùn)行情況
LuatOS的看門狗wdt操作庫,為嵌入式系統(tǒng)提供了關(guān)鍵的系統(tǒng)穩(wěn)定性保障機(jī)制。
在正常運(yùn)行情況下,示例代碼會初始化看門狗庫,并設(shè)置超時時間和喂狗周期。然后創(chuàng)建一個任務(wù),該任務(wù)會定期喂狗,以防止看門狗定時器超時。如果看門狗定時器超時,系統(tǒng)將自動重啟。
1.1 完整示例代碼
如下圖,初始化wdt庫,設(shè)置超時時間為9秒。設(shè)置一個定時器每3秒喂一次看門狗,確保設(shè)備在正常運(yùn)行的情況下不會重啟;若發(fā)生軟件崩潰或硬件故障,最多18秒后將自動重啟設(shè)備。

1.2 示例運(yùn)行結(jié)果
Air8101核心板/開發(fā)板通過LuaTools燒錄內(nèi)核固件和demo腳本代碼。燒錄成功后開機(jī)運(yùn)行,通過LuaTools日志查看運(yùn)行結(jié)果。
設(shè)備啟動,程序正常運(yùn)行:

二、添加死循環(huán)模擬故障場景
我們在原有正常運(yùn)行示例代碼中創(chuàng)建了一個新的任務(wù),命名為fault_task,它將進(jìn)入一個死循環(huán)。由于這個新任務(wù)阻斷了喂狗操作,設(shè)備將在超時后自動重啟。這樣,我們就可以有效地模擬看門狗的超時情況。
創(chuàng)建一個新的任務(wù)來模擬故障場景:

2.1 完整示例代碼


2.2 示例運(yùn)行結(jié)果
Air8101核心板/開發(fā)板通過LuaTools燒錄內(nèi)核固件和demo腳本代碼。燒錄成功后開機(jī)運(yùn)行,通過LuaTools日志查看運(yùn)行結(jié)果。
看門狗超時被觸發(fā),系統(tǒng)崩潰導(dǎo)致重啟:

今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
看門狗
+關(guān)注
關(guān)注
10文章
610瀏覽量
72938 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3747瀏覽量
133622
發(fā)布評論請先 登錄
【瑞薩RA × Zephyr評測】多線程和看門狗
從小白到大牛:Linux嵌入式系統(tǒng)開發(fā)的完整指南
嵌入式應(yīng)掌握的幾種能力
中科芯CKS32F107XX系列MCU的獨(dú)立看門狗介紹
中科芯CKS32F107XX系列MCU的窗口看門狗介紹
既然有獨(dú)立看門狗了,為啥還要窗口看門狗(WWDT),窗口看門狗的特色是什么?
看門狗定時器、復(fù)位源、異常處理機(jī)制科普
T113-I打造高可靠性嵌入式系統(tǒng),1.12秒極限下的看門狗喂狗之法
死機(jī)克星:嵌入式系統(tǒng)中看門狗定時器的關(guān)鍵作用與配置
【書籍評測活動NO.61】Yocto項目實戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)
TPS3430 具有可編程復(fù)位延遲的窗口看門狗定時器數(shù)據(jù)手冊
什么是看門狗?這樣的看門狗,你想領(lǐng)養(yǎng)一條嗎? #看門狗復(fù)位芯片 #WDT芯片 #單片機(jī)復(fù)位 #單片機(jī)方案
看門狗,你真的會用嗎?
看門狗技術(shù)實戰(zhàn):構(gòu)建嵌入式系統(tǒng)抗死機(jī)能力的核心策略
評論