看门狗是独立计时器,软件必须在系统健康时定期喂狗,超时则复位。它不能修复错误,但能把永久卡死从“设备一直失联”变成“设备带着原因重新启动”。关键是让喂狗条件代表系统真的健康,而不是让任意一个仍在跑的循环掩盖其他任务已经死掉。
各任务上报心跳→监控任务检查完整性→健康则喂狗→异常则停止喂狗→复位并记录原因
任务心跳每个关键任务按自己的周期报告进展,而不是只报告“还活着”。截止期监控任务知道每类心跳多长时间不来就算异常。健康检查还可以检查队列积压、关键状态和传感器通讯。喂狗令牌只有检查通过才允许刷新硬件看门狗。复位原因启动后尽早读取并保存 watchdog reset 的原因。重启限流连续失败时进入降级或恢复模式,避免无限重启。
心跳要表示任务完成了关键工作
控制任务的心跳应在一次控制周期成功结束后更新,通信任务的心跳应在收发链路仍可用时更新。若每个 while 循环都直接喂狗,某个线程卡在锁里、传感器失联或队列永远满时,设备仍会持续喂狗,监控就失去意义。
看门狗超时时间应大于正常最长工作周期和调度抖动,但小于系统失控后可接受的恢复时间。这个值要用实测的负载和温度数据调整,不能只凭经验写一个很大的常量。
复位后的第一件事是保留线索
启动代码应尽早读取复位原因,保存上一次的任务心跳、错误码和最小转储。若多次复位发生在同一启动阶段,设备应限制自动重试,并提供安全模式或维护接口。看门狗不是安全急停,涉及人身或设备风险的链路仍需硬件独立保护。
参考:EmbedSummary