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.

MSP430FR2512: Securing device causing internal memory read and crc calculation to fail

Part Number: MSP430FR2512
Other Parts Discussed in Thread: MSP-GANG

Hello, I am using a MSP430FR2512 and in my program I am performing a memory crc test by reading the contents of program memory and performing crc with the CRCDI and CRCINIRES registers. I am comparing the calculated crc against a constant, precalculated value stored outside of the bounds that I am checking. That is my constant stored at 0xE300 and my memory reads and calculation spanning 0xE302 - 0xfffe. I made sure to use the same seed value in my application calculation and pre programming calculation.

It seems to work fine programmed with the MSP-Gang programmer not secured but fails when I secure the device. I thought this just burned the jtag fuse and should not affect program memory contents correct?

In my power on self tests I am also checking the watchdog by allowing it to expire then checking the reset vector for a watchdog timeout, performing a write/readback test on the R registers, then setting up frequency locked loops and mclk then disabling the BSL. Don't believe that should have an interaction with the fuse but wanted to see if there was any insight. Thanks

  • Hi Noah,

    It seems to work fine programmed with the MSP-Gang programmer not secured but fails when I secure the device. I thought this just burned the jtag fuse and should not affect program memory contents correct?

    MSP430FR2xx devices implement a JTAG/SBW locking mechanism (electronic fuse) that is configured using signatures at 2 addresses in the device memory - this is what is affecting your CRC. The term "fuse" is what is likely what's causing confusion here - it goes back to earlier MSP430 devices e.g. the Flash MSP430F1xx/2xx/4xx parts that required a high voltage on a certain pin to blow a fuse. Then newer parts such as MSP430F5xx/6xx, MSP430FR2xx/4xx, and MSP430FR5xx/6xx used a new method so that the JTAG lock was electronically configurable instead of requiring a high voltage physically on the part, and the term "eFuse" or "Electronic Fuse" was used to try to differentiate this. You can find out more in the application note MSP Code Protection Features www.ti.com/lit/pdf/slaa685 in chapter 2 "Locking JTAG Across Different MSP Families"

    From the MSP430FR2xx/4xx user's guide www.ti.com/lit/pdf/slau445 section 1.11.1 JTAG and SBW Lock Mechanism (Electronic Fuse) describes how this works on your particular device, the MSP430FR2512:

    So when the MSP-GANG locks the device, it is writing something other than 0000h or FFFFh to the addresses 0FF80h and 0FF82h. This range is included in the range you mentioned you are including in your CRC calculation. So you would want to modify your code to skip these values, or to use 0FFFFh instead as that is what was likely there when you did your initial CRC calculation. 

    I hope this helps!

    Regards,

    Katie Pier

**Attention** This is a public forum