static void JumpToApp(void) { if (((*(vu32*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000) { BspClose(); /* Jump to user application */ m_JumpAddress = *(vu32*) (ApplicationAddress + 4); JumpToApplication = (FunVoidType) m_JumpAddress; /* Initialize user application's Stack Pointer */ MSR_MSP(*(vu32*) ApplicationAddress); JumpToApplication(); } }
void Iap_load(uint32_t addr) { if(((*(vu32*)addr) & 0x2FFE0000) == 0x20000000) { jump = (iapfun) *(vu32*)(addr + 4); //强制转化为函数 MSR_MSP(*(vu32*)addr); jump(); } else { printf("Error\n"); while(1); } }