扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

同样的 bin,新板子反复重启了?

03/09 10:53
297
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

来源:公众号【鱼鹰谈单片机】,ID   :emOsprey

大家好,我是鱼鹰。

不知道你是否遇到这样的情况,一直正常使用的 bin 文件,当下载到一个新板子后,或者将主控板安装到新的环境中,出现了反复重启。

一般出现这种情况,鱼鹰第一反应是外部环境导致的软件 bug,而追根究底还是软件问题。

其实像这种复现率很高的反复重启的问题,使用在线调试是非常容易定位的,并且也必须解决(不要认为常规情况下不存在这种硬件环境就不解决),否则后患无穷。

这里主要讨论哪些环境可能导致重启:

1、断言失败。某种情况下导致的断言失败,比如 EEPROM 里面保存参数异常,或者 eeprom 有问题,导致使用了默认参数,而默认参数处理有问题。

2、堆不足。比如一块大内存一般情况下,只会在开机申请一次,但由于某种条件,出现多次申请,如 mdns 服务多次进行回调处理时。

3、无法及时喂狗。比如外部中断(IO、串口)频繁进入,导致无法及时喂狗,或者某个 I2C 外设出现问题,导致死等外设数据等。

4、运行时序不正常。比如程序检测某些外设异常,想通过 CAN 上报数据,而此时 CAN 外设没有进行初始化,一些指针未准备好导致。而一般正常的板子外设是正常的,也就不会使用 CAN 上报数据,因此不会触发 bug。

5、栈溢出。软件检测外设时遇到异常情况,需要进入一个异常分支,而这个异常分支函数调用非常深(或局部变量大),导致消耗了太多的栈,最终引发了 hardfault 问题。

总之,这些问题归根结底还是软件的 bug,必须重视,只有将这些异常 bug 一步步修复,你的软件才能算是稳定的。任何一个你没有找到 root case 的 bug,都有可能在客户手中出现,从而导致更严重的问题。

你还遇到哪些重启问题,可以评论区聊聊。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录