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.

UCD3138A: How to unbrick device.

Part Number: UCD3138A


I accidentally bricked my processor. I need to unbrick it. I was writing to its memory and inserted a valid checksum with invalid program and data flash data. Now I can't detect the device anymore. I can't detect it in ROM or Program Flash mode anymore. I have validated all my code and hardware. I am using Fusion Designer to check the device and it was working perfectly until this last write. I need to erase the checksum and get back into ROM mode. Is there a hard reset or erase?

  • Hi Matthew,

    The fact that you can not communicate with the device when in program flash mode may be due to the fact that you have too many interrupt firing, therefore the PMBus_handler can not execute.

    So as first step, you should ground the pins such as analog comparator inputs that may trigger interrupt to ground and see if you can gain back the communication.

    Also, if you have a condition like this one in your code (at the beginning of main):

    if(GioRegs.FAULTIN.bit.FLT3_IN == 0)

    {

       clear_integrity_word();

    }

    you can try to make this erase the checksum and then reset and go back to ROM.

    If none of the above works, then you need a JTAG connection to clear the checksum.

    Here is how to clear checksum through JTAG:

    1) Configure your Target configuration as ARM7 (Not UCD3138A).
    This is important because the GEL file of UCD3138A considers PFlash as read only and will not allow you to change anything in PFlash through JTAG.

    2) Set the value of FLASHILOCK(INTERLOCK_KEY) at address FFFFFE98 to 0x42DC157E.


    3) Set the value of  checksum at address 0x7FFC to 0x00000000.


    4) Reset, or power cycle the device.


    You should be now in ROM mode.

    Hope this helps,

    Regards,