我在BOOT中使用如下跳转程序:
- __asm void MSR_MSP(u32 addr){
- MSR MSP, r0 //set Main Stack value
- BX r14
- }
- typedef void (*iapfun)(void);
- iapfun jump2app;
- void IAP_Load_App(u32 address){
- // 检查栈顶地址是否合法.
- if(((*(vu32*)address)&0x0FFFFFFF) < 1024*512){
- jump2app = (iapfun)*(vu32*)(address + 4);
- __set_MSP(*(vu32*)address); // 初始化堆栈指针
- jump2app(); // 跳转到APP.
- }
- }
IAP_Load_App(0x08001800)
Boot起始地址为: 0x08000000
APP的起始地址为: 0x08001800
但是上电后,跳转程序并未执行成功(貌似)。是否我的跳转程序有问题?
注:N32G003
|