赤炎之瞳 发表于 2021-12-31 11:28:13

关于IAP跳转不成功的原因

芯片FM33LC025NBoot区应用:执行跳转指令,地址0xA000

App区:Led闪烁
现阶段说明:①最大疑点Jump函数问题,表现为Boot区代码执行了跳转,调试确认执行了跳转函数
怀疑是因为在boot区执行Jump(0)后,Boot区代码没有正常运行。void App_Jump(uint32_t AppAddress)
{
        __disable_irq();
       /* 跳转到应用程序位置 */
        uint32_t JumpAddress = *(__IO uint32_t*) (AppAddress + 4);
        __set_MSP(*(__IO uint32_t*) AppAddress);
        (*( void (*)( ) )JumpAddress) ();
}
②App区代码没有正常执行,地址为0时确认程序可执行

③确认烧写选择

④Boot和App区编译文件的hex对应地址正确


问题:问程序跳转失败的原因。

顾博文 发表于 2022-1-4 08:57:38

用的bootload例程试的么。可以参考bootload例程里自带的AN说明的3.5章节修改。例程的引导程序与用户程序都是可以直接仿真的。相互不影响。 仿真用户程序时,需要先将引导程序用keil或iar下载进去就好。

顾博文 发表于 2022-1-4 09:03:41

修改了跳转的地址。程序需要修改哪些,AN文档里也有说明需要修改哪些地方,确保都修改到位了。

赤炎之瞳 发表于 2022-1-10 13:16:26

找到原因了,是编译器版本的问题,用5就可以
页: [1]
查看完整版本: 关于IAP跳转不成功的原因