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 verify error

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE

Hi there,

I am using the serial programmer utility from C2000Ware V2.00.00.02 to program a 28377D on a custom PCB. It successfully loads the kernel which then runs successfully, erases the flash and then only mostly programs the flash with the application. It produces a verify error at address 0x8677a. A visual check on most other areas of the flash suggests that the rest of the flash is ok, just this one block of 0x3B words from 0x8677A- 0x867B4. The odd bit is that some of this block is all Fs and some is programmed correctly. It's as if the flash algorithm works on block of 4 words and some are programmed and some are skipped.

Here's a grab from the CCS Memory Browser:

0x00086770 94A8 930C 910F 95A9 9703 E280 00BE FFF1 7617 7602 FFFF FFFF FFFF FFFF FFFF FFFF
0x00086780 FFFF FFFF 0001 1A20 0003 761F FFFF FFFF FFFF FFFF FFFE 761F 17E0 CC00 FFFF FFFF
0x00086790 FFFF FFFF 761F 17E6 1A00 0002 FFFF FFFF FFFF FFFF CC00 FFF0 500A 9600 FFFF FFFF
0x000867A0 FFFF FFFF 0006 7622 761F 17E0 FFFF FFFF FFFF FFFF 1820 FFFC 1824 FFFE FFFF FFFF
0x000867B0 FFFF FFFF 56C3 FFFF 0006 FFFF FFFF FFFF FE08 7D48 7C47 1E42 761F 02A7 2B06 1B06
0x000867C0 0100 6709 8F00 AA00 5806 2B94 0A06 1B06 0100 68FB 2B01 2B02 2B06 2B00 2B05 2B03

If I program the flash directly from the .out file using CCS (V7.3) then this block of flash is programmed correctly so it's not like there is a hardware problem with the flash.

I'd really appreciate a solution to this.

Thanks,

Andrew

  • Andrew,

    Thank you for providing the info that you are able to program the image fine when using CCS.

    Please answer couple of questions for our team to analyze this further:

    1. In your linker cmd file, do you have all the sections (that are mapped to Flash) aligned on 64-bit boundary? If yes, then could you align them to 128-bit boundary and see if that helps?

    2. Can you inspect the hex file and see whether the expected data is in the hex file or not?

    Thanks and regards,
    Vamsi

  • Hi Vamsi,

    Thank you for the questions, they directed me to the solution. It was an alignment problem.

    I was using the the linker command:

       GROUP :
       {
       	ramfuncs
       	.TI.ramfunc
       }
       	 LOAD = FLASHD,
             RUN = RAMLS0,
             LOAD_START(_RamfuncsLoadStart),
             LOAD_END(_RamfuncsLoadEnd),
             RUN_START(_RamfuncsRunStart),
             PAGE = 0, ALIGN(8)
    

    This grouped the two RAM functions sections together for loading into RAM but didn't group the sections in the .out file so there was a separate section for .TI.ramfunc that was not aligned correctly.

    Thank you again.

    Regards,

    Andrew