完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
使用MCU: MSP430F5438 编译环境: IAR V4.21
使用语言: C 现象: 正常销售的产品在更改了一些程序后测试过程中出现两次死机想象。 情况: 1.该程序很大,有50多K,程序有不太合理的地方,很多地方有清狗。因此怀疑死机是进入死循环,而循环中有清狗,导致死机而非看门狗复位。 经认真排查,未发现可疑死循环,或数值指针越界。 2.怀疑子程序嵌套太深,堆栈溢出。 IAR仿真再打开STACK提示总堆栈160个字节,使用142字节。没有堆栈溢出。 3.网上查资料看到,IAR中局部变量也使用堆栈,怀疑在很深的堆栈时用了较大局部变量导致溢出。 做实验,在怀疑的子程序中人为申请一个200字长度数值,单步调试发现堆栈的确溢出。全速调试,故障现象和那两次死机一致。 现在初步认为IAR中最大160,使用142的142是指嵌套堆栈的深度,而不包括局部变量。因此最差情况下,堆栈只有160-142=18字节的裕量,可能在申请大局部变量的时候堆栈溢出。 求证,请问我这个判断成立吗?还有别的可能吗?还有就是堆栈溢出死机但是看门狗没有复位,是因为程序大量地方清狗,导致溢出跑飞的地方还能清狗造成的吗? |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
3051个成员聚集在这个小组
加入小组2957 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3666 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2359 浏览 1 评论
4823 浏览 1 评论
2585 浏览 1 评论
1359浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3669浏览 2评论
2960浏览 1评论
1552浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:27 , Processed in 1.097290 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号