你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

bootloader跳入系统软件的方式

[复制链接]
everkimage 提问时间:2018-7-5 10:41 /
我用的是STM32F0系列的芯片,IDE是IAR,FLASH前16KB给了bootloader。
bootloader执行1秒后,通过下面代码跳入APP:
  1. __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
  2.    ((pFunction)(*(__IO uint32_t*) (APPLICATION_ADDRESS + 4)))();
复制代码

然后我优化了APP编译选项,导致bootloader无法跳入APP。降低优化条件,便可以。
不知道是bootloader跳入有问题,还是IDE优化有BUG所致。
收藏 评论9 发布时间:2018-7-5 10:41

举报

9个回答
wudianjun2001 回答时间:2018-7-5 11:20:14
没看出啥问题来,我都是这样跳的
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);
}

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

everkimage 回答时间:2018-7-5 13:17:34
wudianjun2001 发表于 2018-7-5 11:20
没看出啥问题来,我都是这样跳的
void execute_user_code(uint32_t Addr)
{

boot_jump()代码是怎么样的?
wudianjun2001 回答时间:2018-7-5 13:40:32
everkimage 发表于 2018-7-5 13:17
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
}
回答时间:2018-7-5 14:01:29
可能是楼主优化代码以后,部分问题导致。建议楼主仿真测试一下。带有boot的程序也可以仿真的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

everkimage 回答时间:2018-7-5 16:22:01
安 发表于 2018-7-5 14:01
可能是楼主优化代码以后,部分问题导致。建议楼主仿真测试一下。带有boot的程序也可以仿真的 ...

仿真可以的。
就是最优化后bootloader跳不过去,应该没有执行到APP的初始化代码,因为出来的是bootloader的HardFault处理打印信息。
后来我降低优化等级就可以了,然后再最优化编译,也可以了。不知道怎么地。
everkimage 回答时间:2018-7-5 16:24:39
wudianjun2001 发表于 2018-7-5 13:40
__asm void boot_jump( uint32_t address )
{
        LDR SP, [R0]                ;Load new stack pointer address

你是直接设置SP。
我是调用__set_MSP()设置的。还有一个函数__set_PSP(),不知道是不是跟这个有关系。
回答时间:2018-7-5 16:28:30
应该是把代码给优化掉了。
everkimage 回答时间:2018-7-5 16:30:22
本帖最后由 everkimage 于 2018-7-5 16:32 编辑
everkimage 发表于 2018-7-5 16:24
你是直接设置SP。
我是调用__set_MSP()设置的。还有一个函数__set_PSP(),不知道是不是跟这个有关系。 ...

像HardFault的处理,就需要判断MSP和PSP,这部分机制有点忘了,哪位大神提示一下?跳入APP时设置MSP还是PSP,还是都可以?
ZDPHPN 回答时间:2018-7-10 17:07:25
做个标记,之后写bootloader参考怎么让跳转

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版