完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
然后我优化了APP编译选项,导致bootloader无法跳入APP。降低优化条件,便可以。
不知道是bootloader跳入有问题,还是IDE优化有BUG所致。 |
|
相关推荐
10个回答
|
|
没看出啥问题来,我都是这样跳的
void execute_user_code(uint32_t Addr) { /* Change the Vector Table to the USER_FLASH_START in case the user application uses interrupts */ SCB->VTOR = Addr & 0x1FFFFF80; boot_jump(Addr); } |
|
|
|
boot_jump()代码是怎么样的? |
|
|
|
__asm void boot_jump( uint32_t address ) { LDR SP, [R0] ;Load new stack pointer address LDR PC, [R0, #4] ;Load new program counter address } |
|
|
|
可能是楼主优化代码以后,部分问题导致。建议楼主仿真测试一下。带有boot的程序也可以仿真的
|
|
|
|
仿真可以的。 就是最优化后bootloader跳不过去,应该没有执行到APP的初始化代码,因为出来的是bootloader的HardFault处理打印信息。 后来我降低优化等级就可以了,然后再最优化编译,也可以了。不知道怎么地。 |
|
|
|
bbslsk 发表于 2019-6-14 14:27 你是直接设置SP。 我是调用__set_MSP()设置的。还有一个函数__set_PSP(),不知道是不是跟这个有关系。 |
|
|
|
应该是把代码给优化掉了。
|
|
|
|
本帖最后由 everkimage 于 2018-7-5 16:32 编辑 像HardFault的处理,就需要判断MSP和PSP,这部分机制有点忘了,哪位大神提示一下?跳入APP时设置MSP还是PSP,还是都可以? |
|
|
|
做个标记,之后写bootloader参考怎么让跳转
|
|
|
|
看下生成的汇编代码,中断和异常采用看MSP和PSP。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:51 , Processed in 1.034149 second(s), Total 93, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号