关于H745xI双核板子Boot_IAP跳转APP程序的那些事
关于IAP跳转APP的程序,网上一大堆,官方CubeMX的例程也有,我就不废话了。直接上代码
这是M4内核的跳转代码
void Flash_M4_Class::iap_Jmp_To_app_M4(u32 appxaddr)
{
/* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
if (((*(__IO uint32_t*)appxaddr) & 0x1ffe0000 ) == 0x10000000)
{
/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (appxaddr + 4);
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) appxaddr);
JumpToApplication();
}
}
这里简单的分析一下
appxddr的传参就是APP代码的首地址,该首地址存放的栈顶指针(没记错的话),而这个0x1000_0000就是keil工程魔法棒的IRAM1,至于前面的0x1ffe0000其实就是一个判断的标志位,写成0x10000000也可以。
你的RAM的哪些位为1,就要写把那一位置1来判断。
JumpAddress+4就是程序的真正入口了。
__set_MSP(),上面一行有注释ÿ