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.

TMS320F280039C: Hex address offset issue using flasing tool

Part Number: TMS320F280039C
Other Parts Discussed in Thread: UNIFLASH

Hi All,

i am using flashing tool to load application hex.

Tool is not sending all data . because of address offset issue. 

Address offset in hex is shift by 0x10 because i selected ROM width 16 in CCS hex utility.  hence tool is sending half data only ( 16 bytes only ).

Flashing tool require memory offset 0x20 to send all 32 bytes data. is there any option in CCS hex utility to make address offset 0x20 ?

if i keep room width blank (0)  in hex utility then hex address offset is 0x20 but this hex will not work properly with uniflash tool so it is incorrect hex.

Flashing tool company is telling their script require 0x20 address offset which is standard format of hex. 

It is very high priority topic please help me to resolve this issue.

please check blow snap for more understanding.

  • I've been through this pain myself. The cause is that the minimum addressable unit (MAU) for C2000 is 16bits. In your hex file Column 2  is strictly correct because that is the correct starting address for the next 16 words (32 octets) in the record. If you change the "offset" in column 2 that would be the wrong address for the device.

    The flashing tool however (I presume) does not know that the MAU is 16 bits so creates the serial byte stream incorrectly.

    As an interim containment measure, can flashing tool use .bin files?

    You could try playing around with romwidth and memwidth settings but this often produces more than one hex file spanning the same address space. I never found a solution that would produce a single hex file.

  • Hi Rahul,

    Did you try --memwidth=16 and --romwidth=16 --intel as well?  

    Thanks and regards,

    Vamsi

  • The description of the problem by Kier is accurate.

    What file formats does your flashing tool accept?

    Thanks and regards,

    -George

  • Hi All,

    the tool vendor informed me that their tool supports standard intel hex file (data length 0x20 with memory offset 0x20.)

    CCS hex utility generated hex with data length 0x20 with memory offset 0x10 ( becuase of romwidth  16) hence vendor tool does not support to such kind of format. 

    vendor tool script check memory offset and length in transfer service of UDS. 

  • Hi Vamsi ,

    I applied these setting in CCS hex utility but creating same hex file ( data length 0x20 with memory offset 0x10).

    Thank you

  • Rahul,

    As George (from our compiler team) suggested above, please find out the other formats that your flash tool vendor can support - George can comment further based on that.

    Thanks and regards,
    Vamsi

  • I presume this ...

    the tool vendor informed me that their tool supports standard intel hex file

    ... means the only format the flashing tool accepts is Intel hex.  

    Unfortunately, TI has no utility, or some other straightforward method, to offer as a solution.

    Thanks and regards,

    -George

  • Hi ,

    Tool vendor inform me ECU Flasher in tool is generic and it's not any controller specific then what is the issue with  TI intel hex file format.

    Thanks,

    Rahul Jathar 

  • what is the issue with  TI intel hex file format

    The reply by Kier explains the issue.  I'll say the same thing a different way.

    The smallest unit of memory the C28x CPU can address is not an 8-bit byte, but a 16-bit word.  That is, each address corresponds not to an 8-bit byte, but a 16-bit word.  One place this shows up is in the output of the hex utility.  One line of output typically contains 256 bits of code or data.  Presume the next line is contiguous in memory.  It is natural to expect it to increment the address by 256/8 = 32 (0x20).  That is not what happens.  Because each C28x CPU address corresponds to a 16-bit word, the address increments by 256/16 = 16 (0x10).

    Thanks and regards,

    -George

  • Hi George,

    Thank you of final clarification. 

    conclusion is we cannot use external flashing tool with C2000 ware controller.

    external flashing is mandatory for my client. 

    I need to think about C2000 ware controller.

    Thank you,

  • conclusion is we cannot use external flashing tool with C2000 ware controller.

    No, that's incorrect. You just need the right flashing tool that understands the specifics to the C2000. Check out this tool: c2prog.com