Which registers in the UICR of the nRF5340 are reserved for user access?

As far as I know, UICR->OTP should be similar to the UICR->CUSTOM register in the nRF52 series. However, I have learned that the nRF Secure Immutable Bootloader (NSIB) writes some parameters to the OTP registers. So, I would like to know which registers are reserved for user access?

Parents Reply Children
  • Hi Gray,

    Both of the application and the network core (on nrf5340) have their own UICR registers.

    Application Core UICR are not accessible from the Network core.

    For writing to UICR registers, please see NVMC controller. 

    App-core UICR base address is 0x00FF8000, and its OTP offset is 0x100.

    Within the OTP region, there are 192 4-Byte registers which you can use to write your data values.

    I have just compiled the Provisioning_Image sample, and I can see the following memory report.

  • Hi Naeem,

    Sorry, my previous description might not be very clear.
    I can understand that the OTP area (0xff8100~0xff83fb) is writable, but since I need to upgrade mcuboot, I enabled nRF Secure Immutable Bootloader(NSIB). Then after compiling, I saw that some registers of OTP (Provision partition) are occupied in NSIB, can you help me determine whether there are only 31 4-Bytes registers left available?


    If yes, it is not enough for me, the parameter I want to flash is more than 31*4 bytes, can I move the Provision partition to the flash? Like the nRF52 series. If possible, can you provide an example?

  • Hi Gray,

    Thank you for clarifying that you are using NSIB.

    NSIB implements ROT (root of trust) for secure boot chain, and using NSIB the public key hashes are written to the device (called provisioning)

    On nrf5340, provisioned data is held in the OTP region instead of the internal flash memory, so that is why only some of the registers are available for user.

    I could confirm that 640 bytes from the otp are used for provision. 

    I was not able to find anything to release OTP from being used for provisioning using NSIB. 

    Regards,
    Naeem

Related