如何做APP跳转到IAP的程序?

2019-07-21 04:23发布

想做一个从APP到IAP无缝跳转进行程序升级的程序,刚做了一个,发现能从APP程序转到IAP,但不能正常运行,不知道是不是堆栈没有做好,一从APP跳转到IAP,能执行一小段IAP和程序,然后就死机了,因为没法用Debug调试,不知道问题错在哪里,请各位指点迷津。
下面是跳转代码:
#define FLASH_IAP_ADDR                0x08000000          //IAP程序起始地址(存放在片内FLASH)
void app_load_iap(u32 iapxaddr)
{
        if(((*(vu32*)iapxaddr)&0x2FFE0000) == 0x20000000)        //检查栈顶地址是否合法
        {
                jumptoiap = (iapfun)*(vu32*)(iapxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)
                MSR_MSP(*(vu32*)iapxaddr);                                        //初始化IAP堆栈指针(IAP代码区的第一个字用于存放栈顶地址)
                jumptoiap();                                                        //跳转到IAP
        }
}

void IAP_Command(void )
{
        app_load_iap(FLASH_IAP_ADDR);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。