AnsweredAssumed Answered

Issue in Jump to Application from Bootloader

Question asked by Lakshmi S on Feb 12, 2020
Latest reply on Feb 14, 2020 by Raymundo Velarde

I am using S32K144 EVB, out of 512kb of PFlash 44kb is used for Bootloader, and remaining for Application.

 

app config

m_interrupts (RX) : ORIGIN = 0x0000E000, LENGTH = 0x00000400
m_flash_config (RX) : ORIGIN = 0x0000E400, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x0000E410, LENGTH = 512k - 0xE410

/* SRAM_L */
m_data (RW) : ORIGIN = 0x1FFF8000, LENGTH = 0x00008000

/* SRAM_U */
m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00007000

 

boot config

 

/* Flash */
m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400
m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0000B000

/* SRAM_L */
m_data (RW) : ORIGIN = 0x1FFF8000, LENGTH = 0x00008000

/* SRAM_U */
m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00007000

 

i wanted to jump from bootloader to application, but i am facing error like

No source available for "0xe478"

 

this is my code

#define APP_RESET_ADDRESS    0x0000E000

 

JumpToUserApplication(*((uint32_t*)APP_RESET_ADDRESS), *((uint32_t*)(APP_RESET_ADDRESS + 4)));  (Calling from main function)

 

 

void JumpToUserApplication( unsigned int userSP, unsigned int userStartup)
{
/* Check if Entry address is erased and return if erased */
if(userSP == 0xFFFFFFFF){
return;
}

/* Set up stack pointer */
__asm("msr msp, r0");
__asm("msr psp, r0");

/* Relocate vector table */
S32_SCB->VTOR = (uint32_t)APP_RESET_ADDRESS;

/* Jump to application PC (r1) */
__asm("mov pc, r1");
}

 

Please help me to solve this issue. Thanks in Advance

Outcomes