30 boatload跳转到app反复重启,难道你们编译器有问题?

发布于 2020-08-03 21:20:14

远程升级中, boatload跳转到app,为什么app内存使用多少,会导致跳转过去能否正常执行,否则会反复重启,难道你们编译器有问题?就是说正常能跳转过去,但是app再增加一点静态内存使用量,就跳不过去,反复死机复位,但是app多出的内存用动态内存就没问题,动态内存可以不用释放也没事,奇怪,汇编跟踪也没看出啥/
详细描述:
u8 W25QXX_BUFFER; W25QXX_BUFFER = (u8 ) rt_calloc(1, 4096);//指针用动态获取同样大小的内存就没问题
// u8 W25QXX_BUFFER[4096];//这样用静态数组就有问题

跳过去后立即就复位了,没有来得及打印LOG,
内存超出不太可能,连使用一半还不到啊,BOOTLOAD和APP加起来的内存是可能超过了64K,单APP也就20K,肯定不会,静态分配只是一个数组几百个字节的,怎么会错。

391760a2aac75f7d564660dd8f2ae561.png
9fba93847933e56c9c04eb28ca372bd9.png

b37ef4d98ca1176391d13a77779160e5.png

查看更多

关注者
0
被浏览
683
3 个回答
JQRR_7669
JQRR_7669 认证专家 2020-08-03

u8 W25QXX_BUFFER[4096];是在哪定义的,在前面加上static试试可以不

JYFP_3506
JYFP_3506 2020-08-05

为什么加上__disable_irq();就跳不过去,理论上不应该啊,我看人家都是加上的

geniusgogo
geniusgogo 认证专家 2020-08-05

看样子你的bootloader也是使用了RT-Thread哈?那就不奇怪了,试想问一下是否也同样是在CortexM处理器上跑的?那就更加不奇怪了,你想哈,你在跳转前,bootloader的CPU模式是什么?handle、thread?
如果是thread模式下你能正常修改msp吗?如果没法修改msp,那你的跳转是否就存在问题了?栈飞了吧!!!

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览