RT-Thread关于IAP升级自定义APP跳转MDK设置注意事项(测试OK)

BootLoader中引导跳转代码

void iap_load_app(u32 appxaddr)
{
    char i;
	if(((*(vu32*)appxaddr)&0x2FF00000)==0x20000000)	//检查栈顶地址是否合法.
	{
        __set_PRIMASK(1);//关闭所有中断
        jump2app=(iapfun)*(vu32*)(appxaddr+4);		//用户代码区第二个字为程序开始地址(复位地址)
        rcu_deinit();
        for(i=0; i<8; i++) {
            NVIC->ICER[i] = 0xFFFFFFFF;
            NVIC->ICPR[i] = 0xFFFFFFFF;
        }
        SysTick->CTRL = 0;
        SysTick->LOAD = 0;
        SysTick->VAL = 0;
        __set_CONTROL(0);
        __set_PSP(*(vu32*)appxaddr);
        __set_MSP(*(vu32*)appxaddr);
		jump2app();									//跳转到APP.
	}
    __set_PRIMASK(0); //开启所有中断
}

APP中设置3处关键点:

以下APP以向量表偏移0x8000,flash存储空间为0x20000为例。

step-1

 step-2

 step-3

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值