AnsweredAssumed Answered

bootloader process

Question asked by shaoshuai ren on Jul 27, 2017

Hi there,

now i have one CAN bootloader code, i can use PCAN device to download APP code to new flash address.

the following is the APP flash parameter:

at S32K144_64_flash.ld : 

m_interrupts (RX) : ORIGIN = 0x00004000, LENGTH = 0x00000400 // set new interrupt, used for reload this part.
m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010// same with bootloader code
m_text (RX) : ORIGIN = 0x00004400, LENGTH = 0x0007BC00//new flash address.


at: startup.c: 


// {
// /* Copy the vector table from ROM to RAM */
// for (n = 0; n < (((uint32_t)__RAM_VECTOR_TABLE_SIZE)/sizeof(uint32_t)); n++)
// {
// }
// /* Point the VTOR to the position of vector table */
// S32_SCB->VTOR = (uint32_t)__VECTOR_RAM;
// }
// else
// {
// /* Point the VTOR to the position of vector table */
// S32_SCB->VTOR = (uint32_t)__VECTOR_TABLE;
// }

S32_SCB->VTOR = (uint32_t)0x4004;// i just use this line code, and comment original code.


through the above set, i can download code to board by CAN bootloader.


my question is:

if i want to use __VECTOR_RAM, how to set the parameter in S32K144_64_flash.ld file?

is it ok to comment the original bold S32_SCB->VTOR code?



part II:

there have two ways to start CAN bootloader process.

1. power off and power on 

2. press reset button.


do these two way lead to same process(both use __VECTOR_TABLE? )?

could you explain the difference between __VECTOR_TABLE and __VECTOR_RAM in S32_SCB->VTOR?