I am integrating a bare-metal flash bootloader with a TI-RTOS application. I want to make sure I have made all the changes necessary to relocate the TI-RTOS application in flash memory and run it after it has been burned to flash by the bootloader.
The bootloader successfully flashes and runs a simple bare-metal test application. When I use the bootloader to load my TI-RTOS application I believe it is successfully flashed but the application fails to successfully run.
On power-on the M3 processor BOOTROM jumps to 0x00200030 and executes the bare-metal bootloader. When the bootloader is finished loading the application into flash it looks in flash memory where it is expecting to find the application code's reset vector table and uses the second 4-byte value from the table as the address to which it will branch to start the application code.
I have made the following changes to the placement of the TI-RTOS application code on the M3 processor:
- Modified my linker command file to allow space for the bootloader and relocate the application in flash memory
- Moved the application flash memory Reset Vector Table address so that the bootloader should pick up _c_int00 from the table as the start address of the application code.
- Moved the BOOT_FLASH memory segment from 0x00200030 to a spot in the new application code area
On the C28 I've made the following changes:
- Modified my linker command file to allow space for the bootloader and relocate the application in flash memory
- Changed the BEGIN linker command file memory segment to the new application code area