Last edited 2 months ago

STM32CubeProgrammer STPMIC1 NVM management

Applicable for STM32MP15x lines

STM32CubeProgrammer (STM32CubeProg) can be used to read and update the non-volatile memory (NVM) of the power management IC (PMIC) on the the STM32 MPU board, which is seen as a specific partition on the device.

This page describes the format of the partition used by the embedded programming service to allow PMIC NVM access by STM32CubeProgrammer (see AN5275: USB DFU/USART protocols used in STM32MP1 Series bootloaders for protocol details).

Refer to STM32CubeProgrammer article to know how to use the STM32CubeProgrammer, which is the official STMicroelectronics tool to update the PMIC NVM on STM32 MPU platforms.

1 PMIC NVM partition[edit source]

The PMIC NVM partition is identified by the reserved Id 0xF4 and is exported (when the IC is present on the board) as a specific alternate setting of the USB DFU [1].

This optional partition is programmed without header and is only supported in U-Boot when PMIC STPMIC1 is not handled in the secured world by OP-TEE; in ecosystem release ≥ v4.0.0 , this partition is not supported by default.

For read operation, the host requests the PMIC NVM partition data and the platform replies with all the partition content.

For write operation, the host must send the full partition containing one or more modifications (any reserved bit must be preserved).

2 STPMIC1 NVM partition[edit source]

For STPMIC1, the NVM partition has a fixed size of 8 bytes and exports in R/W the NVM shadow registers bytes (Address 0xF8 to 0xFF) as defined in STPMIC1 datasheet: DS12792.

STPMIC1 Reg STPMIC1 Address NVM offset
NVM_ON_OFF_CTRL_SHR 0xF8 0
NVM_BUCK_RANK_SHR 0xF9 1
NVM_LDO14_RANK_SHR 0xFA 2
NVM_LDO56_VREF_RANK_SHR 0xFB 3
NVM_BUCKS_VOUT_SHR 0xFC 4
NVM_LDO13_VOUT_SHR 0xFD 5
NVM_LDO56_VOUT_SHR 0xFE 6
NVM_DEV_ADDR_SHR 0xFF 7

3 Reference list[edit source]