Part Number: TMS320F28384S
Other Parts Discussed in Thread: C2000WARE
Hello,
We want to download an own-written flash application over SCI8 interface to the TMS320F28384S CPU1 core and program that flash application via the C2000 flash API inside the CPU1 flash memory. So basically something that the C2000Ware flash_kernel example project does. Note that the flash API requires a 128[bit] aligned address when accessing the flash, otherwise the flash programming results in an error.
The hex2000 tool creates a binary-file in the TI boot-table format for us:

Unfortunately, the length information inside that binary file is just 16[bit] wide, see here marked in red:

We have quite big arrays/structures inside our application firmware, which are initialized by the .const output section:

Unfortunately, the hex2000 tool does not split the output section .const at a 128[bit] aligned address. I verified that with an own written PC tool, which evaluates the flash address and length information inside the binary file, generated by the hex2000 tool, and writes the data into a text file. Please look how the boot-table binary is being constructed in terms of flash address and length information, especially block 6 & 7 holding .const output section data:

You can see in the map file, that the array c_DriveSpecialCommands[] is being the one, that crosses the block numbers 6 & 7 in the previous picture. That array is declared as follows:
EXTERN const struct SpecialCMDList c_DriveSpecialCommands[] INIT_VAR(=DRV_SPECIAL_COMMANDS_TABLE);
So trying to program data at address0x97FFE results in an error of the flash API program function.
Is there a way to instruct the hex2000 tool, splitting output sections at a 128[bit] aligned address? If not, what other options do we have to avoid such problems?
Thanks,
Inno

