I am trying to create a custom flash bootloader for TM4C1230H6PM which needs to update my application firmware over the CAN bus. Until now, I have accomplished the following things-
1)Erasing and writing data to flash memory by using functions from "driverlib/flash.h"
2)Switching execution between the bootloader app residing at 0x00000000 address and another app residing at 0x00004000 by setting the MSP value to the start address of the respective app and by calling the reset handler located at (start address+4)
3) I am not changing the offset value in Vector table offset register while switching execution still my interrupts are working fine and this is confusing me.
Now I will list down the queries that I have-
1) I went through the Bootloader demo app provided in Tivaware and I found that bootloader contents are first copied to SRAM and then executed from SRAM. I want to know why it is done that way exactly when bootloader can be executed from flash itself.
2)Why my interrupt handlers are running fine even if I haven't set any offset value in VTOR.
Hoping for a quick response.