保障系统稳定运行!瑞芯微RK3506开发板Watchdog看门狗配置与使用攻略

描述

本文基于触觉智能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指定看门狗节点。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分