Hello ,
I have used same program. for K344, it's OK to jump from bootloader to APP. But when I used same way to test K311. it doesn't jump. Could you give some suggestion? Thanks.
appStack= *(uint32_t *)(APP_START_ADDRESS);
appEntry= *(uint32_t *)(APP_START_ADDRESS+0XC);
//appEntry= *(uint32_t *)(APP_START_ADDRESS);
appEntry= *(uint32_t *)((uint32_t)appEntry+0X4);
//appEntry = (((uint32_t)appEntry)& 0xFFFFFFFEU);
//(* (void (*) (void)) appEntry)();
Bootup_Application(appEntry,appStack);
#define APP_START_ADDRESS 0X440200// APP 开始地址
void Bootup_Application(uint32_t appEntry, uint32_t appStack)
{
static void(*jump_to_application)(void);
static uint32_t stack_pointer;
/*把应用程序入口地址赋值给函数指针*/
jump_to_application = (void(*)(void))appEntry;
stack_pointer = appStack;
/*重新定向中断向量表*/
S32_SCB->VTOR = (uint32_t)APP_START_ADDRESS;
/*设置堆栈指针*/
__asm volatile("cpsie i": : : "memory");//关闭总中断指令
__asm volatile("MSR msp, %0 \n" : : "r" (stack_pointer) : "sp");//设置堆栈到mSP
__asm volatile("MSR psp, %0 \n" : : "r" (stack_pointer) : "sp");//设置堆栈到pSP
jump_to_application();
}