CrossStudio for ARM supports the TI TMS470 running applications from both RAM and FLASH.
The following sections describe the TI TMS470 support in more detail.
The default memory map file $(StudioDir)/targets/TI_TMS470/TMS470_MemoryMap.xml has been provided. This file is used to describe the memory layout of the target and is used for linking and debugging. The placement of program sections within the memory map for both RAM and FLASH configurations is described by the non-target-specific default memory maps $(StudioDir)/targets/multi_flash_placement.xml and $(StudioDir)/targets/sram_placement.xml.
The Build | Target Processor project property specifies which of the TMS470 family memory map files are used.
The internal FLASH memory has been split into two banks (FLASH1 & FLASH2) in the default memory map. The address range of FLASH1 is 0x10000000 to 0x10001FEF and the address range for FLASH2 is 0x10002000 onwards (the final address is dependant on the hardware). The internal FLASH memory has been split in this way to allow for the FLASH protection keys which reside in the last four words of the first FLASH sector (0x10001FF0 to 0x10001FFF). See FLASH Protection Key Support for more information on the FLASH protection keys. For simplicity the default section placement file for the FLASH configuration ($(StudioDir)/targets/multi_flash_placement.xml) places the exception vectors and startup code in FLASH1 and the rest of the program in FLASH2, this has the disadvantage that a large part of the first (8K) FLASH sector is wasted. Should FLASH space become an issue you can import and modify the FLASH placement file and move sections from the FLASH2 bank to FLASH1 in order to reclaim the lost space.
The default startup code is in $(StudioDir)/targets/TI_TMS470/TMS470_Startup.s. It contains the exception vectors and the default exception handlers. The FLASH version of the code (specified by defining __FLASH_BUILD) is also responsible for configuring memory to match the above memory map and copying the exception vectors into RAM.
The MCU F05 FLASH module implements a FLASH protection key scheme in order to prevent un-authorized or accidental erasure of the FLASH memory. The scheme uses four 32 bit keys which are located at the end of the first FLASH sector. To unlock the FLASH memory, and therefore permit modification of the FLASH memory, the four keys (which are not visible to the CPU until the FLASH has been unlocked) must be written to the FLASH controller.
By default all of the FLASH keys are assumed to be 0xFFFFFFFF and in order to prevent accidental programming of the keys with unknown values the FLASH loader has code specifically to prevent any writes to the FLASH key region. Should you wish to use the FLASH protection keys you will need to do the following: