中级会员
 
- 积分
- 291
- 金钱
- 291
- 注册时间
- 2013-11-6
- 在线时间
- 31 小时
|
1金钱
我在stm32f407 上实现IAP,以下是bootloader 和app的地址设定,BootLoader 没有使用ucos系统,app使用ucos系统。目前问题是使用ucos跳转有问题,从bootloader可以跳转到app,app跳转到bootloader,不过再从bootloader跳转到app,app就不能运行了。当app不使用ucos时,两者跳转多少次也没有问题。请问这个问题怎么解决?谢谢
跳转部分的代码:
__asm void MSR_MSP(u32 addr)
{
MSR MSP, r0 //set Main Stack value
BX r14
}
void startBootloader(void)
{
typedef void (*iapfun)(void);
uint32_t RESET_IRQ_ADDR = BOOTLOADER_ADDR + RESET_OFFSET;
iapfun jump2app;
jump2app = (iapfun)*(volatile uint32_t *)RESET_IRQ_ADDR;
MSR_MSP(*(vu32*)BOOTLOADER_ADDR);
__disable_irq();
jump2app();
}
bootLoader 地址设定如图

app地址设定如图

|
|