在线时间25 小时
UID265218
注册时间2011-2-27
NXP金币0
TA的每日心情 | 奋斗 2017-7-7 17:21 |
---|
签到天数: 16 天 连续签到: 1 天 [LV.4]偶尔看看III
中级会员
 
- 积分
- 251
- 最后登录
- 1970-1-1
|
如题,请问怎么实现bootloader的跳转呢。我用的下面这个函数,但是每次在执行完跳转之后mcu就复位了。app程序里我设置是从0x8000开始的,跳转的时候SP是0x8000,Startup入口地址时0x8004。请问还需要设置什么吗?
void JumpToExecute(uint32_t SP, uint32_t Startup)
{
volatile uint32_t avoid_optimization;
/* In order to avoid optimization issue when -Os */
avoid_optimization = SP;
/* In order to avoid optimization issue when -Os */
avoid_optimization = Startup;
/* set up stack pointer */
__asm("msr msp, r0");
__asm("msr psp, r0");
/* Jump to PC (r1) */
__asm("mov pc, r1");
}
|
|