Other Parts Discussed in Thread: UNIFLASH, SEGGER, , RM48L952, HALCOGEN, TMS570LS0432, LAUNCHXL-TMS57004, RM42L432, LAUNCHXL-RM42
We have a Hercules application that links to the F021 Flash API library for flash programming. When loading the application using the CCS 11 debugger, the Flash API section is not loaded, but the rest of the application is loaded. When loading the same application using Segger tools, Uniflash 7, or CCS 10.4, this behavior is not reproduced: All sections are loaded as expected.
Environment:
- MCU: TMS570LS3137
- Programmer: Segger J-Link Pro
- IDE: Code Composer Studio 11.0.0.00012 on Windows and Linux (reproduced on both)
Steps to reproduce:
1. Write a Hercules application that uses the F021 Flash API. Flash API is configured to be copied from flash into RAM. We link the Flash API library with the following linker script (excerpt):
flashAPI : fill = 0xFFFFFFFF // This guarantees that the holes will be filled with this value. { Fapi_UserDefinedFunctions.obj (.text) bl_flash.obj (.text) --library= ../../common/flash_lib/F021_API_CortexR4_BE.lib (.text) . += FLASH_API_LENGTH - .; // Aforementioned hole that will be filled (remaining flash in this section). } load = FLASH_API, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)
2. Obtain a TMS570 device with empty flash memory, or erase the flash on a previously-used device. Empty flash ensures that you detect if the Flash API section was not loaded.
3. Load the application onto the device using the CCS 11 debugger.
4. Using the debugger, observe that the section of memory reserved for the Flash API section is not programmed (0xFF).
The following tools load the Flash API section as desired when operating on the same ELF binary:
1. Code Composer Studio 10.4.0.00006
2. Uniflash 7.0.0.3615
3. SEGGER J-Flash 7.56.d