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.

TMS320F28075: Hibernate -> Bricking Device

Part Number: TMS320F28075


I flashed a program via JTAG which hibernates almost as soon as the program starts.  In retrospect, this was a very stupid thing to do.  I'm trying to figure out how to flash a different program on it now. 

If I try to normally flash, I get a debugger error that the probe can't connect - the device is hibernating.  If I try to toggle the GPIOHIBWAKE line, that doesn't work either though the exact error message varies.  I've tried driving the GPIOHIBWAKE line from another microcontroller using a PWM output (frequencies 10 khZ - 100 kHz) and never could get the device out of hibernate long enough for the debugger to connect.  I've also tried toggling the RST line though that was just by manually grounding it.

I don't think my debugger uses the JTAG_NTRST line which I thought might bring the chip out of hibernation.

My last thought was to try to lift GPIO 84 (boot mode pin 0).  Unfortunately, both the boot pins are connected to 3.3V and the traces can not be cut because they come from underneath the processor.  I've tried lifting the pin, but didn't have much luck.

Has anyone been able to re-flash a device after loading such a program?

  • Rob,

    This is tough. I am assuming you did not configure HIBBOOTMODE/IORESTOREADDR register also in your application code before entering into hibernate mode? And no IORERODE code as well. Right?

    Let's try this -

    1) Is it possible to hold the XRSn pin of the device low on this board? If yes then hold the XRSn low.
    2) Try to connect to CCS. This will through some error but you should be able to connect.
    3) Release the XRSn now.
    3) Now via CCS memory watch window write "Wait BOOT" value (refer BOOTROM section in TRM) in HIBBOOTMODE register.
    4) Disconnect the CCS.
    5) Toggle the GPIO to wake-up the device from Hibernate.
    6) Connect to CCS. If connected, you should be able to erase the flash now.

    Let us know how it goes.

    Regards,

    Vivek Singh
  • If I hold the XRS pin low, I get the following on the CCS console:

    C28xx_CPU1: GEL Output:
    Memory Map Initialization Complete
    C28xx_CPU1: Failed CPU Reset: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 6.0.576.0)
    C28xx_CPU1: Trouble Reading Register PC: (Error -1137 @ 0x0) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 6.0.576.0)
    C28xx_CPU1: Trouble Writing Register XAR0: (Error -1137 @ 0x7) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 6.0.576.0)
    C28xx_CPU1: GEL: Error while executing OnReset(1): Target failed to write register XAR0
    at XAR0=*((unsigned long *) 0x703F0) [f28075.gel:352]
    at SetupDCSM() [f28075.gel:31]
    at OnReset(1)
    C28xx_CPU1: Failed CPU Reset: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 6.0.576.0)
    C28xx_CPU1: Trouble Reading Register PC: (Error -1137 @ 0x0) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 6.0.576.0)
    C28xx_CPU1: Trouble Writing Register XAR0: (Error -1137 @ 0x7) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 6.0.576.0)
    C28xx_CPU1: GEL: Error while executing OnReset(1): Target failed to write register XAR0
    at XAR0=*((unsigned long *) 0x703F0) [f28075.gel:352]
    at SetupDCSM() [f28075.gel:31]
    at OnReset(1)

    It looks like if all these operations weren't happening automagically in a script, I could stop releasing the XRS pin (like you instruct) after the first error message. However, I don't know whether there is a script I could modify or if it's built into the CCS exe.
  • I'm also assuming that by "connect", you mean to begin debugging. Is that what you mean?
  • Rob,

    The Debug shortcut is probably too cumbersome for this exercise.

    I think it would be easier to manually launch the Target Configuration and then try to connect to the C28x CPU manually & repeatedly.

    -Tommy
  • Rob,

    Despite these errors, the target should get connected and you should be able to view the content in CCS memory watch window. If having issue with that then follow what tommy said. Instead of clicking on "Debug" launch the target configuration manually and then right click on each CPU target and choose connect option.

    Regards,

    Vivek Singh

  • Thanks to both Vivek and Tommy! I followed Vivek's process, but did not know how to connect to the target except via the Debug shortcut. Tommy's details of how to do that were very helpful. As a side note, I did not have to try to connect repeatedly.
  • Hi Rob,

    Are you able to reprogram the device now and issue is resolved.

    Regards,

    Vivek Singh

  • Yes.  The issue is completely resolved and I marked the 2 posts that I thought were the solution:

    yours - which gave the steps to fix the problem

    Tommy's - which pointed to the need to launch/connect manually (which I didn't know you could even do)