嵌入式 Linux 开发 11:增强稳定性

稳定性是工业产品的定心丸

工业产品往往是无人值守,需要 365x24 持续运行,稳定性是基础。
一旦出现故障,不但产品无法完成应有的功能,而且维保代价大,削弱了产品价值,降低了客户满意度和信心。

为什么产品会出故障

就算一款产品经过正确的设计开发,经过严格的测试,保证功能和性能。
然而,现实工作中,总会有考虑不到的事情发生,导致产品故障。

这些异常的来源很广,至少包括:温度超限,电磁干扰,电压不稳定,芯片宕机,组件损坏,人为破坏等。
检测这些故障,尽可能地修复,对于无法修复的故障能报警通知,就成了产品稳定性的最后一道守护设计。

如何检测并修复故障

首先,找到故障的根本原因是困难的,有时,甚至不可能。以前就遇到过 LoRa SX1262 芯片宕机,用户是不知道根本原因的(原厂可以)。
其次,寻找故障线索要容易些。如 SX1262 宕机时,它的 Status 寄存器会出现故障位。
最后,定期检测组件是否正常工作这是容易且可靠的机制。如增加 SX1262 心跳(keep alive)一旦发现无法 RX 就说明宕机了。

稳定性研究实例

以 LoRaWAN 网关产品为案例,研究稳定性方案。

组件 故障原因 故障线索 如何检测故障 解决办法
CPU 温度超限,电磁干扰等 指令跑飞 无法喂狗 外部看门狗掉电重启
Flash 意外断电,电压不稳定 Kernel或Init无法启动 增加掉电保护电路 保存重要数据,关闭文件系统
SX130x 未知 RX 失败 定期检测RX=0次数 重启 SX130x
PHY 未知 以太网掉线 丢失PULL_ACK心跳 重启 PHY 芯片
4G 未知 / ping 外网失败 复位或掉电重启 4G 模组

延伸阅读

如何避免现场设备系统损坏或丢数据?

posted @ 2022-09-22 13:34  KevinAshton  阅读(126)  评论(0编辑  收藏  举报