PEmicro Blog

Programming MCU Fuses, OTP, and Option Bytes

Jan 07, 2020

Article updated Aug. 2021 to describe automatic fuse generation for NXP i,MX RT devices.

Some ARM devices have areas of flash memory dedicated to programming user configuration data. Writes to such areas can be sensitive or permanent for some devices, so it is important that the developer is able to write these options in an intuitive way in order to minimizes human error. PEmicro's PROGACMP v7.78 and Cyclone software installer v10.41 introduce a set of new "user options" commands:

  • Create/Modify User Options File (CU)
  • Specify User Options File (SU)
  • Program User Options (PU)

These commands allow the developer to individually program user options through the use of an IDE.

What are User Options?

Some ARM devices have areas of flash memory dedicated to programming user configuration data. Examples include NXP's fuses and OTP, Microchip's NVM User Row, and STMicroelectronics' Option Bytes. Such areas can include specific bits for programming options, such as a watchdog timer enable, or the bootloader size. Because some writes to such areas can be sensitive or permanent, it is important that the developer is able to write these options correctly the first time and avoid mis-programming adjacent options that they wish to leave untouched.

PEmicro User Options Support

As of August 2021, PROGACMP v8.59 and Cyclone installer v10.79 support the user options commands (CU, SU, and PU) for the following families with memory-mapped user options:

NXP

    i.MX RT1010

    i.MX RT1015

    i.MX RT1020

    i.MX RT1050

    i.MX RT1060

    i.MX RT1064

    LPC55x

    LPC55Sx

    SJA1110
STMicroelectronics

    STM32F0

    STM32F1

    STM32F2

    STM32F3

    STM32F4

    STM32F7

    STM32G0

    STM32G4

    STM32L0

    STM32L1

    STM32L4

    STM32L4+

    STM32W1

    STM32WB

Microchip

    ATSAMC20/21

    ATSAMD09/10/11

    ATSAMD20/21

    ATSAMDA1

    ATSAMD5x/E5x

    ATSAMHA1

    ATSAML10/11

    ATSAML21/22

    ATSAMR21

MindMotion

    MM32SPIN

How to Use the User Options Commands

Previously an object file was used to support the programming of user options in PEmicro's PROGACMP software and Cyclone standalone mode. A set of three new commands has now been introduced in PROGACMP (version 7.78) and the Cyclone Image Creation Utility (version 7.80):

  • Create/Modify User Options File (CU)
  • Specify User Options File (SU)
  • Program User Options (PU)

These commands allow the developer to individually program user options through the use of an IDE.  

Create/Modify User Options File (CU)

When the Create/Modify User Options File (CU) command is selected in interactive PROGACMP or the Cyclone Image Creation Utility, it allows the developer to create a new user options (.OPT) file from scratch, or modify an existing .OPT file. This JSON-type file represents the user options that the developer wishes to write, and will be used by the Specify User Options File (SU) and Program User Options (PU) commands later.

The CU dialog lists the names of existing user area(s) and options available on the device. In interactive PROGACMP only, the current value of each option will also be displayed. For each user option, the developer will have the ability to either "Write [a new] Value" or "Leave [the option] Unmodified." New values must be written in hexadecimal format.

If "Import from File" is selected, the developer can choose an existing .OPT file to modify. 


The values specified in that file will be displayed in their appropriate fields.


At this point, the developer can choose to modify any contents of the file. The developer can either overwrite the selected file, or save the modified contents to a new filename, leaving the selected file as it was before.

Once all new values have been written in their appropriate fields, the developer can save them to a new user options (.OPT) file.



Specify User Options File (SU) and Program User Options (PU)

Once a user options (.OPT) file has been created, it can be used to program the device's user options in either the PROGACMP software or in Cyclone standalone mode by using the Specify User Options File (SU) and Program User Options (PU) commands.

With the Specify User Options File (SU) command, the developer can select an existing user options (.OPT) file. In interactive PROGACMP, the "User Options File" path will show up in the Configuration window.

Once a file has been specified, the Program User Options (PU) command can be used to write the values specified by the file. For most devices, new option values won't take effect until the device is reset.

Example of SU and PU commands used in Cyclone Image Creation

In CPROGACMP (command-line PROGACMP), user options can be programmed via the SU and PU commands in the following format in a .CFG file:

SU filepath
PU

Where "filepath" is the path to the .OPT file to use (e.g. C:\PEMicro\PROGACMP\supportFiles_ARM\Atmel\SAME\myFile.OPT in the example above).

Fuse Generation/Programming on NXP i.MX RT devices

PEmicro's secure boot utility (part of the Cyclone Image Creation utility) can be used to both sign an application for programming and generate all of the fuse values necessary for programming i.MX RT devices to a security level the user desires. The secure boot utility essentially generates the OPTions file as needed. This process is described here:


There is a walk-through of the configuration process here :

 

Tags related to this Blog Post

Cyclone     Cyclone FX     Multilink     Multilink FX     Prog ACMP     ARM     Microchip     STMicroelectronics     Production Programming