本文基于觸覺智能RK3506核心板/開發板介紹Watchdog看門狗,以及相關配置與使用教程。

Watchdog簡介
- Watchdog
Watchdog看門狗機制,是一種用于監控系統運行狀態的機制,用于檢測和恢復系統故障(如死鎖、崩潰或超時)。通過定期發送信號(稱為“喂狗”)來確保系統正常運行。若在設定時間內未收到喂狗(如 CPU 負載過高、進程卡死、內核鎖死,內核崩潰等),將自動觸發系統重啟,以防止系統崩潰或死鎖!
- Watchdog應用場景
Watchdog看門狗機制,通過自動檢測系統異常并觸發復位來防止設備“死機”,提升可靠性和抗干擾能力的重要機制,可廣泛應用于工業控制與自動化、商用無人值守終端、物聯網設備、汽車電子等場景。
Watchdog適配與測試方法
- 內核與DTS配置
根據Watchdog驅動文件,所在位置drivers/watchdog/dw_wdt.c進行內核與DTS配置節點。

完成內核配置并編譯,將編譯生成的
boot.img
燒錄進開發板。
測試方法
開啟有2種方法,通過內核系統自動喂狗或應用程序自動喂狗。
內核自動喂狗
寫入字母大寫V至看門狗節點,內核自動喂狗,命令如下:
echo V > /dev/watchdog
通過以下命令模擬內核卡死,執行命令后,等待1分鐘左右系統就會由看門狗觸發重啟:
echo c > /proc/sysrq-trigger
應用自動喂狗
命令如下:
#include #include #include #include #include int main() { int fd = open("/dev/watchdog", O_WRONLY); int ret = 0; if (fd == -1) { perror("watchdog"); exit(EXIT_FAILURE); } while(1) { ret = write(fd, "\0", 1); if (ret != 1){ ret = -1; break; } sleep (10); } close (fd); return ret; }
設置觸發重啟時間
Watchdog命令可以用來設置不喂狗后觸發重啟的間隔時間:
//usage:#define watchdog_trivial_usage //usage: "[-t N[ms]] [-T N[ms]] [-F] DEV" //usage:#define watchdog_full_usage "\n\n" //usage: "Periodically write to watchdog device DEV\n" //usage: "\n -T N Reboot after N seconds if not reset (default 60)" //usage: "\n -t N Reset every N seconds (default 30)" //usage: "\n -F Run in foreground" //usage: "\n" //usage: "\nUse 500ms to specify period in milliseconds" watchdog -t 5 -T 10 -F /dev/watchdog
Watchdog命令參數說明
-t N表示每N秒進行喂狗操作,若不指定則默認為30s;
-T N表示若超過N秒沒有喂狗操作,則觸發看門狗,自動重啟,若不指定則默認為60s;
-F DEV指定看門狗節點。
-
看門狗
+關注
關注
10文章
610瀏覽量
73043 -
嵌入式開發
+關注
關注
18文章
1147瀏覽量
50158 -
瑞芯微
+關注
關注
27文章
801瀏覽量
54454 -
Watchdog
+關注
關注
0文章
12瀏覽量
9732 -
RK3506
+關注
關注
0文章
96瀏覽量
947
發布評論請先 登錄
瑞芯微RK3506開發板必備之LVGL應用開發手冊,深圳觸覺智能出品
米爾基于瑞芯微RK3506核心板開發板
瑞芯微RK3506開發板必備攻略之Qt應用開發手冊(下),觸覺智能工控嵌入式方案商
保障系統穩定運行!瑞芯微RK3506開發板Watchdog看門狗配置與使用攻略
評論