在线时间23 小时
UID1891584
注册时间2016-8-17
NXP金币0
该用户从未签到
注册会员

- 积分
- 189
- 最后登录
- 2019-5-21
|

楼主 |
发表于 2017-8-22 23:34:41
|
显示全部楼层
第二点
a、boot跳转到app函数
- appStack = *(uint32_t*)0x5000;
- appEntry = *(uint32_t*)(0x5000 + 4);
- JumpToUserApplication(*((unsigned long*)0x5000), *((unsigned long*)(0x5000+4)));
- void JumpToUserApplication( unsigned int userSP, unsigned int userStartup)
- {
- volatile unsigned int avoid_optimization;
- avoid_optimization = userSP; //In order to avoid optimization issue when -Os
- avoid_optimization = userStartup; //In order to avoid optimization issue when -Os
- // set up stack pointer
- __asm("msr msp, r0");
- __asm("msr psp, r0");
- // Jump to PC (r1)
- __asm("mov pc, r1");
- }
复制代码
b、app里面 复位进入boot
- __DSB();
- SCB->AIRCR=((0x5FA << SCB_AIRCR_VECTKEYSTAT_Pos)|SCB_AIRCR_SYSRESETREQ_Msk);
- __DSB();
- while(1);
复制代码 |
|