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]