AnsweredAssumed Answered

Jump from bootloder to Application

Question asked by Ambarish Hundekar on Feb 5, 2018
Latest reply on Oct 28, 2018 by ranshalit

Hi NXP team,

 

I am using S32K144 controller in our project.

I am facing some problems with " jump to application from boot loader".

my application may starts from 0xA000 or 0x9000 address as per our requirement.

 

Problem 1:

code is

 

JumptoApp(T_U32 *ptr)

   DISABLE_INTERRUPTS();

      asm("ldr r0,=0x0000A000");

      asm("blx r0");

 

}

__attribute__((section (".App_codearea"))) void Application(void)

{

int b;

b = 10;

while(1);

// ENABLE_INTERRUPTS();

 

}

 

.App_codearea section starts from 0x0000A000;

If I run the above code , then it goes to default isr, it is not jumping to application.

if I use asm("bl 0x0000A000") it is jumping to the application address.

if I load the PC with 0x9000 address also , it jumps to application and goes to default ISR.

why above code is not jumping to application? 

 

Problem 2 :

 

could you please tell me how to load the other registers with  pointer value?

 

JumptoApp(T_U32 *ptr)

{

//how to load the register with pointer value (passed as input argument to this function)

    asm("ldr r1, ptr"); ????

}

 

 

 

address 0xA000 (or 0x9000)  application entry point -  Application() function start address.

yes, by default S32DS projects start with IRQ, flash config etc, as you mentioned it in the above reply and it jump to main(changed to BLC_Main()).

 

I have created the App_codeArea section in the linker file , placed the Application() code to the App_codeArea section.

Application() starts from the 0x0A000.

 

 

I need to copy App start address to some register( Application start address is not fixed, OX0A000 or 0x09000) and jump to the register address.

 

facing problems with blx and loading the address to PC , it goes to f\default isr.

 

 

Regards,

Ambarish.

Outcomes