在N32G455 HTTP_OTA升级上,下载很成功,DOWNLOAD也可以成功复制到APP中,到那时无法跳转到APP中,因为不是RTT生成的BOOTLOADER所以我是下载的BIN文件而不是RBL,我看了下载的数据,升级的版本内容和当前APP内容是一样的,只是我代码中修改的版本号不一样,说明下载的很成功,而且如果不进行更新的话,是可以正常跳转APP的,当更新了之后,用DOWNLOAD中的新版本替换了原来APP分区的旧版之后,跳转就不运行了
void iap_load_app(u32 appxaddr)
{
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.
{
printf("%X\n",*(__IO uint32_t*)appxaddr);
printf("---------------栈顶合法----------------\r\n");
/* Jump to user application */
SoftReset();
__disable_irq();
JumpAddress = *(__IO uint32_t*) (appxaddr + 4);
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) appxaddr);
JumpToApplication();
}
}
DUBEG的话,就卡在 JumpToApplication();这里,转不到APP
我验证了下载内容是完整合格的,擦除写入也都是成功的
typedef void (*app_func_t)(void);
void sys_jump_addr(uint32_t addr)
{
app_func_t jump2app;
if ((*(uint32_t *)addr) & 0x0FFFFFFF)
{
jump2app = (app_func_t) * (uint32_t *)(addr + 4);
jump2app();
}
}
试试这个?