嵌入式Linux的看门狗与电源管理
1. 添加看门狗
在嵌入式设备中,看门狗是常见需求。当关键服务停止工作时,通常需要采取行动,一般是重置系统。大多数嵌入式片上系统(SoC)都有硬件看门狗,可通过 /dev/watchdog 设备节点访问。看门狗在启动时会设置一个超时时间,之后必须在该时间段内重置,否则看门狗将触发,系统会重启。与看门狗驱动的接口在 Linux 内核源码的 Documentation/watchdog 中有描述,驱动代码位于 drivers/watchdog 目录。
如果有两个或更多关键服务需要看门狗保护,就会出现问题。 systemd 有一个实用功能,可在多个服务之间分配看门狗。 systemd 可以配置为期望从服务接收定期的保活调用,如果未收到则采取行动,从而为每个服务创建一个软件看门狗。要实现这一点,必须在守护进程中添加代码以发送保活消息。代码需要检查 WATCHDOG_USEC 环境变量是否为非零值,然后在该时间内调用 sd_notify(false, "WATCHDOG=1") (建议在看门狗超时时间的一半内)。 systemd 源代码中有相关示例。
要在服务单元中启用看门狗,可在 [Service] 部分添加如下内容:
WatchdogSec=30s
Restart=on-watchdog
Sta
超级会员免费看
订阅专栏 解锁全文
109

被折叠的 条评论
为什么被折叠?



