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.

TMS320F28379D: How to "undo" OTP programming

Part Number: TMS320F28379D
Other Parts Discussed in Thread: UNIFLASH

Tool/software:

Hi,

I accidently programmed with incorrect hex file where OTP memory is burned. I use code protection zones, bootctrl and password-lock etc.
I would like to change OTP or OTP-ECC so that CPU will behave like it was not programmed. Just it ignores the settings.

Is it possible to use mismatch between OTP and OTP-ECC to achieve the goal? How to do this in CCS or Uniflash?

I know that I can change LINKPOINTERS to make block section ignored. How are treated other registers were OTP-ECC is incorrect.

Regards,

Piotr Romaniuk

  • Hi 

    little update from my experiments:

    1. When I changed LINKPOINTERS (1FFF.FFFF -> 1FFF.FFFE) all settings like passwords, zone intities configuration are changed to unprogrammed state (this is due to changing OTP block by new linkpointers)
    2. By changing high 16bits in BOOTCTRL register I can obtain desired value of BootMode and BKey and still have correct ECC in the corresponding OTP
    3. Passwords in old block (no longer pointed by LINKPOINTERS) can be altered by programing some zeros in positions of ones.

    I have some doubts to step [3].
    Can I program in the unused block such bits that their ECCs will be incorrect without any consequences in cpu and jtag work?
    I recall that sometimes CCS complained about OTP checksum mismatch.

    Regards,
    Piotr Romaniuk

  • Hi Piotr,

    You should be able to do this as long as you have disabled the "verify" option in the CCS On-Chip flash tool.

    Thank you,

    Luke

  • Hi Luke,

    You should be able to do this as long as you have disabled the "verify" option in the CCS On-Chip flash tool.

    Thank you,

    So I will lose verification functionality, or I can verify a result of programming by separated step?

    How OTP ECC mismatch in unused block (not pointed by LINKPOINTERS) will be perceived by CPU? 
    The CPU will not even check it, ignore and use some defaults or trigger some exception.
    Does it affect prorgamming the flash by CPU?

    What happens if such a mismatch is in singular (i.e. not located in blocks) register (e.g. BOOTCTRL)?

    Are there any consequences of PSWDLOCK programmed to active state when PSWD registers are unprogrammed?

    Regards,

    Piotr Romaniuk

  • Hi Piotr,

    You can disable verification only for OTP programming by using the range avoidance feature in the On-Chip flash tool.

    Any locations not programmed by your .out file should be ignored, ECC mismatches in unprogrammed blocks should not affect flash programming.

    If verify is disabled then a mismatch in bootctrl should not cause an issue.

    When PSWDLOCK is disabled, this simply means that the CSMPSWD locations will always be unsecure. When PSWDLOCK is enabled, CSMPSWDs will be treated the same as the rest of USER OTP.

    Thank you,

    Luke