STM32CubeProgrammer STPMIC1 NVM management

STM32CubeProgrammer can be used to read and update the non volatile memory (NVM) of the PMIC on the board which is seen as a specific partition on the device.

This page describes the format of the partition used by 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 that is the official STMicroelectronics tool for update PMIC NVM on STM32 platforms.

1 PMIC NVM Partition[edit]

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.

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 needs to send the full partition, containing one or more modifications (any reserved bit must be preserved).

2 STPMIC1 NVM Partition[edit]

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]