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