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

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



