This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28377D: Serial_flash_programmer

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE, , UNIFLASH

Tool/software:

Hi C2000-team, 

can you help with this request please: 

I am working with the TMS320F28377D and would like to update it through the serial interface. I am using the example project from C2000Ware called Serial_Flash_Programmer that already contains the matching bootloaders for CPU1 and CPU2.
Programming works for both CPUs, but an error occurs with CPU2. During the flash process, only the following error message appears:
ERROR STATUS: PROGRAM_ERROR
ERROR Address: 0x90006
Flash API Error: Incorrect Data Buffer Length.
FMSTAT Register Contents: 00

We assume that this error occurs because the address 0x90006 is not a multiple of 8 and therefore the Flash API correctly reports an error. For this reason, we have tried to always place our firmware on memory areas that are multiple of 8. We implemented this in the linker command file via ALIGN(8), for example:
CODESTART : > BEGIN, PAGE = 0, ALIGN(8)

Nevertheless, the address 0x90006 is affected, although it is not listed in the map file and we deliberately do not store anything there in our firmware. Interestingly, the firmware works if we flash the .out file with Uniflash, and then data is available at address 0x90006.
Could you explain why data is stored there even though the address does not appear in the map file? And is there a way to change or configure this address? 

Thank you, 

Marinus 

  • Hi ASM team, 

    do you have any updates to the topic? 

    Thank you, 

    Marinus 

  • Hi Marinus,

    1. Can you send a copy of the linker cmd file used to generate the text file? 

    2. Are you using the post-build step specified in section 3 of this app note? If so, can you add the --boot_align_sect option as well and see if that makes any difference? 

    "${CG_TOOL_HEX}" "${BuildArtifactFileName}" -boot -sci8 --boot_align_sect -a -o "${BuildArtifactFileBaseName}.txt"
    

    One possible cause for this behavior is a quirk with the C2000 Hex Utility output in this format. The -boot -sci8 -a format breaks the data into chunks, and each chunk has a corresponding 16-bit size value in the text file. If a chunk is larger than 0xFFFF then there can be some alignment issues with the next chunk where it may have a destination programming address that is not aligned properly.

    Kind regards,

    Skyler