关于IAP跳转不成功的原因
芯片FM33LC025NBoot区应用:执行跳转指令,地址0xA000App区: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对应地址正确
问题:问程序跳转失败的原因。
用的bootload例程试的么。可以参考bootload例程里自带的AN说明的3.5章节修改。例程的引导程序与用户程序都是可以直接仿真的。相互不影响。 仿真用户程序时,需要先将引导程序用keil或iar下载进去就好。 修改了跳转的地址。程序需要修改哪些,AN文档里也有说明需要修改哪些地方,确保都修改到位了。 找到原因了,是编译器版本的问题,用5就可以
页:
[1]