#include "Z20K148M.h" typedef void (*jump_callback)(void); int jump_app(int app_addr) { int jump_addr; jump_callback cb; while(1) { int32_t msp = (*( int*)app_addr); if ((msp>0x1FFE0000)&&(msp<=0x20020000) ) { jump_addr = *(int*) (app_addr + 4); //ResetHandler cb = (jump_callback)jump_addr; //__set_MSP(*(uint32_t*)app_addr); /* __asm("LDR R0, =__STACK_TOP",) __asm("LDR R0, [R0]") __asm("MSR MSP, R0") __asm("nop"); */ cb(); return 1; } } return 0; } int PVTOR = Z20_SCB_BASE ; int main(void) { int i = Z20_SCB->VTOR ; int appAddr = 0x00040000; jump_app(appAddr); while(1) { } }