本帖最后由 红娃子 于 2018-10-15 09:45 编辑 硬件环境:stm32f303 32k ram 128k flash 软件环境: IAR FOR ARM 8.20 现象:程序使用jlink现在可以正常运行,但是上电重启就感觉程序没有跑起来 已经做的测试: 1.屏蔽掉程序的某个比较大的函数调用(减小ROM和RAM的使用量),jlink调试和上电都没有问题 2.通过map,icf文件已经确认STACK,HEAP都是足够的,我是查看map文件max call stack,选择最大的值+一定的余量,jlink调试没有报栈溢出。 3.在启动文件中systeminit里面点亮一个灯,在main中去关闭,jlink调试的时候,灯可以显示完全符合操作,但是在上电的时候却发现灯一直亮着,应该是没有进入到main函数,应该是在__iar_program_start里面出现了问题 4.在系统的所有异常中断中加入关闭led的代码,在HardFault_Handler关闭led代码会被执行 5.出现栈溢出现象是,没有拔掉jlink的时候出现的,如果在拔掉jlink,真正实现断电,则led灯一直亮,说明执行了systeminit,但是卡死在__iar_program_start 按理还没有进入到main函数对栈的需求应该不大吧。为什么会出现这样的问题,请各位大侠指点下,谢谢! |
评分
查看全部评分
谢谢,这个应该没有问题吧,因为我去掉一部分代码,就可以上电运行了。感觉是固件太大的缘故。我现在把固件缩小后就没有这个问题了。