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 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.
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 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 |