Arm Cortex ST Stellar: OTP memory programming fails

01-Aug-2024

winIDEA supports ST Stellar and Centauri MCUs like SR6G7 and SR6P7. Their non-volatile memory (NVM, also Flash) parts, of which some are one-time-programmable (OTP), are represented in winIDEA through programmable memory devices such as CODE, DATA, and the two OTP BCS and UTEST. NVM also has two ports: one for read access and one for write access. When programming any of these parts with winIDEA, for example adding a new device configuration format (DCF) record, NVM read access port addresses should be used. winIDEA will automatically add the NVM write access port address offset when programming. If NVM write access port addresses are used with winIDEA, programming will fail.


Possible solution

1. Perform a test write to the non-OTP part of the NVM (CODE or DATA), using its read access port address.

Programming OTP memory is disabled by default in winIDEA. It can be enabled through the Hardware | Options | Programming. More information in How to write to the OTP memory?

2. Verify that programming on this address succeeded and also that the value is correct (endianness,...).

3. Revert this modified part of the non-OTP NVM to its previous state.

4. Perform write to the desired OTP part of the NVM through the read access port address.

5. Verify that the desired OTP value is programmed there.


Carefully go through all related MCU and tools documentation first. Programming OTP memory with wrong values or in the wrong way can render the device unusable!



More resources

  • Programming the OTP memory - winIDEA Help (insight into how similar OTP programming of the Power Architecture MCUs is done best with BlueBox tools)
Was this answer helpful?