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.

Corrupt Firmware

Other Parts Discussed in Thread: TMS320F28335

Processor: TMS320F28335
Code Composer Studio v6.6.0.0050
Compiler: TI v6.2.19
Spectrum: XDS100v2 USB JTAG Emulator

I have 5 production units using the processor above that are exhibiting the same symptom in the field. They all have the same revision of released firmware. The problem is that the firmware randomly resets for no apparent reason. Power failure is not the cause.

I was unable to duplicate the problem on the engineering prototype using the same revision of code so tried another production unit. I was able to duplicate the problem on the production unit so I decided to connected the emulator and try to debug the problem. After I was in debug mode I could NOT duplicate the original problem that was occurring on the production unit. I spent several days trying without success. Yesterday I received one of the field units and I confirmed that it had the same reset problem. The unit reset several times during testing and the problem was definitely there. Again I tried to debug the unit but the problem disappeared again.

At this point I am convinced all of the production units have corrupt firmware. The revision levels are all the same as well as the revision level of the source I am debugging with. I know the source project is good.

I need a way to confirm my suspicion and the only way to do this is to read the firmware from a defective unit and re-flash it into a known good unit. I am unaware of the software tools I need to read the flash of a defective unit and save it to a file so that I can reprogram it onto another unit.

Can anyone help with suggestions on how to do this?

Rudy

  • Hi Rudy,

    Two thoughts:
    1) I would recommend taking a look at the following wiki article.  The steps described at the end of the section describe what I would try next.  I've seen a fair amount of Reason 2 & 5.
    http://processors.wiki.ti.com/index.php/C2000_Flash_Common_Issues/FAQs#Code_Does_Not_Run_Standalone

    2) Assuming you connect to the device with the emulator without flashing the device, you can open up a Memory Browser (View -> Memory Browser) and then save the production flash image to a file (and similar with your development image).  You could then compare the production code image with your development code image using some file comparison utility.

    Hopefully this helps!


    Thank you,
    Brett

  • Hi Brett,

    Regarding the two thoughts:
    1) The code runs fine stand alone when I flash the device using my emulator and my copy of the project. I wasn't the one who programmed the production units so I don't know if their settings were incorrect. I don't think the FAQ common issues applies in this case because the corrupt code runs fine until the random reset occurs.

    2) This sounds like the way I should go but I just recently became involved with this project so I am very new to Code Composer. I am still learning how to use the IDE and features so I don't know how to connect to the device without flashing it (yet). Every time I go into Debug it automatically flashes the device so I assume there is another way to connect? I will do some more research on how to do this. If you can point me in the right direction I would appreciate it.

    Thanks,
    Rudy
  • HI Rudy,

    1)  Based on your explanation, you may be correct.  It wasn't clear that you were running your freshly programmed units successfully, without the emulator connected.

    2)  It's probably described better somewhere else, but...  See 1a-1b in the below:
    https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/328069/1151169#1151169


    Thank you,
    Brett