嵌入式设备最让人头疼的一类故障,往往不是“上电就不能运行”,而是:
刚开始一切正常,运行几个小时甚至几天以后,突然没有任何响应。
通信停止了,按键没反应,控制逻辑也不再运行。
但奇怪的是:
按一下复位键,设备马上又恢复正常。
于是工程师通常会想到:
“是不是程序死循环了?”
然后再加一个看门狗:
程序异常
↓
看门狗超时
↓
自动复位
↓
系统恢复
结果实际设备运行后:
还是会卡死。
更奇怪的是,人工按复位按钮却能够恢复。
这类问题说明,不能简单把它归结为“代码死循环”。
真正需要回答的是三个问题:
系统到底有没有真正崩溃?
看门狗到底有没有正常运行?
为什么硬件复位可以恢复,而看门狗没有恢复?
把这三个问题拆开,很多看似玄学的“偶发死机”,其实都能找到明确的故障路径。
一、第一件事:先搞清楚“上一次为什么复位”
嵌入式系统发生异常后,最宝贵的信息往往不是重新启动后的程序,而是:
