跳到正文

看门狗与掉电保护:七乘二十四小时无人值守设备的可靠性设计

RT28 WiFi6 AX3000 边缘路由器 整机图

设备装在配电柜里、挂在杆上、放在无人值守的机房,一旦死机,恢复的唯一办法就是派人到现场断电重启。一次上门的人力成本,可能超过设备本身的利润。看门狗与掉电保护要解决的,就是让设备自己恢复。

看门狗为什么会失效

看门狗的机制很简单:一个定时器,程序必须定期「喂狗」,超时未喂就复位系统。听起来万无一失,但实践中最常见的错误是——用同一个已经卡死的线程去喂狗。

典型场景是主循环里既跑业务逻辑又喂狗。如果某个业务函数死循环或者阻塞在某个系统调用上,主循环根本走不到喂狗那一步,看门狗确实会触发复位,这种情况反而没问题。真正危险的是相反的情形:业务逻辑卡死,但喂狗由一个独立的定时器线程负责,定时器线程活得好好的,于是狗被一直喂着,系统永远不重启。设备看起来「活着」,实际已经不再干活。

正确的做法是把喂狗和健康检查绑定:只有当所有关键服务都自检通过时才喂狗。任何一个关键服务无响应,就停止喂狗,让看门狗复位。这样看门狗检查的是「系统是否真的在工作」,而不是「进程是否还在跑」。

窗口看门狗更严格

普通看门狗只检查「有没有按时喂」,窗口看门狗还检查「是不是喂得太早」。这能抓出一种隐蔽故障:程序跑飞后进入异常循环,反而以极高的频率喂狗,普通看门狗完全看不出问题,窗口看门狗则会因为喂得太快而触发复位。

片内看门狗还是外置看门狗

主控自带的看门狗方便、不增加成本,但它依赖主控内部的时钟和逻辑。如果主控本身锁死、时钟异常或者电源异常,片内看门狗可能一起失效。外置看门狗芯片独立供电、独立计时,可靠性更高,代价是一颗芯片和几根走线。对于现场维护成本很高的设备,外置看门狗通常是值得的。

03R EDGE-RT28 (RK3528) 工业路由器主板、05A IPA-RK3588 工业控制主板 与 02A EDGE-RK3576 V1.1 这类面向无人值守场景的平台,可靠性设计比性能指标更值得关注。选型时可以直接问供应商:是否支持外置看门狗、喂狗策略能不能由客户自定义。

掉电保护:真正的风险是写坏文件系统

突然断电本身不会损坏硬件,危险的是断电时正在进行的写操作。ext4 等日志文件系统能保证元数据一致,但挡不住「数据写到一半」导致的文件损坏;更麻烦的是存储器件内部的映射表在写入过程中断电,可能造成整片不可读。

工业上成熟的应对有三层。第一层是根文件系统只读,把可写数据集中到一个独立分区,减少写入面。第二层是用 overlayfs 做只读根加内存可写层,系统盘几乎不再写入,重启即恢复出厂状态,非常适合现场设备。第三层是掉电预警加干净关机:用一颗较大的电容或超级电容做储能,检测到输入电压跌落时,立刻停止一切写入、把关键数据落盘、然后主动关机。

第三层的储能容量需要算:需要的能量等于二分之一乘电容乘(起始电压平方减截止电压平方),要覆盖落盘和关机所需的时间。算完通常会发现需要的电容不小,所以这个方案要在硬件设计阶段就定,不能后期加。

别把掉电保护和 OTA 分开考虑

如果设备要远程升级,掉电风险和升级风险是叠加的:升级写到一半断电,非双分区的方案可能直接变砖。这就是为什么现场设备更推荐 A/B 双分区——升级写的是备用分区,断电了重来一次即可,主分区始终可用。两件事要放在一起设计。

结论

可靠性设计的顺序是:先把喂狗逻辑和健康检查绑定(这是零成本、收益最大的一步),再评估是否需要外置看门狗,然后按现场条件选择只读根或掉电预警方案,最后确认升级方案在断电下不会变砖。这四件事在硬件定型前定下来,成本最低。

延伸阅读

原厂工程师对接

需要选型建议、样品或批量报价?

告诉我们应用场景与预计用量,1 个工作日内给出选型建议、交期与报价。

  • 免费选型与方案评估
  • 样品与评估板支持
  • ODM / OEM 定制