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.

TM4C1290NCPDT: BOOTCFG reset

Part Number: TM4C1290NCPDT
Other Parts Discussed in Thread: UNIFLASH

Hello,

I misprogrammed BOOTCFG with a value FFFF3EFE which does not match the pin I'm using on my board.  I'm using the flash commands mentioned in other posts.  Since NW is 1, I assumed that I could still reprogram it with my new desired value of FFFF92FE.  However, every time I reboot it reverts back to the old value.

This made me think I needed to erase the flash first

I completed the Debug Port Unlock sequence using LM Flash Programmer with the Fury, DustDevil, TM4C123, and TM4C129 Classes selected.  I used the Stellaris ICDI board for this procedure.  I have been able to complete the unlock a few times using the sequence described by the dialogs.  However, every time I reboot the TM4C129 the BOOTCFG still retains the old value.

Am I on the right track here, and what am I doing wrong?  Is it possible for me to rewrite BOOTCFG on TM4C1290NCPDT ?

  • Here is a little more information on symptoms.  The screens below show the unlock procedure as completed.  After power cycling, there is no program execution so I assume at least that part of flash was erased.  However, when I download my new program and break part way through the boot, I notice that neither the BOOTCFG nor the EEPROM were reset, they retain their old values.

  • For the Unlock operation, I tried Uniflash too.  However, the Unlock button just results in an error saying Error! Module Closed.  Any insight on a reproducible procedure to set BOOTCFG back to original values with the TI tools is appreciated.  EEPROM ought to be erased as well according to the datasheet.

  • Hi,

      An unlock sequence should mass erase the device for its main flash, EEprom and any non-volatile registers (e.g. user0/user1/bootcfg). Do you have a LaunchPad that you can try again?

      I suppose you reprogram the BOOTCFG similar to what as described by Amit in this post, correct?

    https://e2e.ti.com/support/microcontrollers/other/f/908/t/535559?tisearch=e2e-sitesearch&keymatch=bootcfg

    volatile U32 bootCfgReg = HWREG(SYSCTL_BASE + BOOTCFG_OFFSET);
    bootCfgReg &= 0xfffffffcU;
    FLASH_CTRL->FMA = 0x75100000U;
    FLASH_CTRL->FMD = bootCfgReg;
    FLASH_CTRL->FMC = 0xa4420008U; 

  • Hi Charles,

    Yes, I'm programming it with a procedure that is similar to Amit's post.

    I had a breakthrough on our custom board, but it was a struggle to get there.  Firstly, I misspoke in my earlier post where I said the program area of flash was erased.  What I learned is that NONE of the flash was erased, even though LM Flash Programmer with Stellaris ICDI said "Unlock Complete".

    Other posts suggest that the unlock operation needs multiple tries to take effect.  I tried LM Flash Programmer with Stellaris ICDI about 5 times.  Every time it said "Unlock Complete", but after power cycle my program still ran indicating it wasn't erased, and both the EEPROM and BOOTCFG retained their old values (no reset to FFFF's).

    When I tried Stellaris ICDI in Uniflash, I got the error I mentioned previously.

    Finally I switched over to use the XDS110.  In Uniflash, I noticed the option to Unlock was not present in the GUI, even though it was present for ICDI.

    I went to command line and ran the command from there.  The path does not match documentation:

    C:\ti\uniflash_6.0.0\deskdb\content\TICloudAgent\win\ccs_base\common\uscif>dbgjtag -f @xds110 -Y unlock,mode=tiva

    Executing the unlock procedure.

    Assert and hold reset while powering up the device.
    Press any key to continue.

    Release reset.
    Press any key to continue.

    Power cycle the board to complete the unlock procedure.

    After the power cycle, my program did not run so I know it was erased.  BOOTCFG read back as 0xFFFFFFFE and then I was able to program my new value.  EEPROM was also erased.

    I guess my complaint here is that the documented methods using Stellaris ICDI did not work at all and wasted some hours.  I would have gone straight to XDS110 if ICDI wasn't shown first in the procedure.

    Thanks for jumping into the conversation!  I was worried this was going to take a lot of debug time, but it's working ok with XDS110.  If ICDI is still a supported method for the recovery, I'd like to hear whether others have been successful using ICDI on TM4C1290NCPDT.

    For others who might see my post, here is my Uniflash version info:

    C:\ti\uniflash_6.0.0\deskdb\content\TICloudAgent\win\ccs_base\common\uscif>dbgjtag.exe

    The utility build date was 'Mar 23 2020'.
    The utility build time was '17:45:31'.
    The utility package version is '9.1.1.00002'.
    The utility component version is '35.35.0.0'.

    Cheers,
    Chris Norris

  • Hi Chris,

      Glad you are able to unlock the device this time. Just wanted to say that we always support ICDI and LM flash programmer. I don't know why you are unable to unlock the device using ICDI. It was always successful for me. In case you run into the same problem and unable to unlock using ICDI/LM flash progrmmer, please open a new thread and we will be glad to assist.