最近在进行硬件程序老化测试的时候,发现程序偶尔会复位,运行几天后,还会出现死机的情况。尝试按下复位按键,程序在运行初始打印一行开机log后继续死机。断电重启后,程序重新正常运行。
一开始判断是硬件“死锁”问题,造成这种情况的主要原因是单片机的某些引脚有强干扰侵入,应采取限流及各种抗干扰措施。
但是考虑到按键复位虽然会死机,但是还是打印了一行开机log,进而判断也有可能是程序问题。因为我是使用的freeRTOS操作系统,当初由于任务分配的堆栈较小,也曾导致程序无法运行(程序一开始运行一小段代码后无法运行,且按键复位后也是运行一小段代码就停止),和目前的情况比较相似,唯一的区别就是目前的代码会运行几天后停止。
目前在代码中添加了堆栈监测,现在怀疑是代码中某个地方在不停的消耗堆栈空间,等出结果了再进行博客更新。
2021-3-15最新更新:增加任务堆栈内存后,设备一直在正常运行中