stm32iap跳转后停留在boot

stm32iap跳转后停留在boot,第1张

1、检查代码跳转方式是否正确:IAP程序为了跳转到bootloader中,使用函数指针+汇编指令的方式进行跳转,这样可以保证代码跳转的正确性。需要检查跳转代码中是否有误,确保可以正常跳转到指定的ROM段。

2、检查内存布局是否正确:在跳转前,需要确保在IAP和bootloader两段程序之间有足够的空间,以免跳转后出现内存溢出等问题。需要检查bootloader程序所在的ROM段以及可以被复制和更新的数据段是否设置正确。

bootloader写在0x08000000开始的地方,可以设置大小为0x10000,64kb大小。APP写在0x08010000开始。在bootloader去读0x08010000的值给MSP,0x08010004为程序开始的位置,都为16位数据,然后再跳转,注意跳转时最好关闭中断和外设,不同内核还需要设置终端向量表:SCB->VTOR=0x08000000|((ADDR_FLASH_SECTOR_2-0x08000000)&(uint32_t)0x1FFFFF80)ADDR_FLASH_SECTOR_2定义为0x08010000;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11064522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存