Last edited 11 months ago

STM32MP15 ecosystem errata sheet

Applicable for STM32MP15x lines


1. Article purpose[edit | edit source]

The STM32MP15xx device errata sheet[1] lists the different device limitations and explains the corresponding workarounds (software and/or hardware) if any.

The objective of this article is to explain which of the workarounds, described in this errata sheet, are applicable and implemented in ecosystem release v4.1.0 .

This article lists

  • errata to be workaround by the customers,
  • errata workaround implemented in STM32MPU Ecosystem releases,
  • and errata not applicable in STM32MPU Ecosystem releases.

Errata, present in STM32MP15xx device errata sheet[1] and not listed in this article, have no workaround implemented in STM32MPU Ecosystem releases.

2. Legend[edit | edit source]

The section column refers to the number of the erratum chapter in the errata sheet document.

Rev.Y columns , present in the tables below, refer to the availability and status of a given errata workaround for the described erratum in errata sheet document:

  • A = workaround available
  • P = partial workaround available
  • N = no workaround available

OpenSTLinux and CubeMP1 columns , present in the tables below, refer to the availability of a workaround for a given STM32MP13 ecosystem release:

  • U = workaround to implement by User
  • I = workaround Implemented
  • NA= Errata Not Applicable in ST software release

Wave your mouse over a status in the table to display the corresponding legend.

3. Workarounds to implement by customer[edit | edit source]

Function Section Limitation Rev.Z OpenSTLinux Distribution.png STM32CubeMP1.png Comment
Arm® Cortex®-A7 core 2.1.1 Memory locations might be accessed speculatively due to instruction fetches when HCR.VM is set A U NA OpenSTLinux distribution does not activate Arm® Cortex®-A7 Hypervisor mode and hence the Virtual Memory second stage of translation.

The customer should implement the workaround if the Hypervisor mode is used in his/her product.

Arm® Cortex®-M4 core 2.2.1 Interrupted loads to SP can cause erroneous behavior A NA U STM32CubeMP15_Package: Limitation only on hand-written assembly code. The customer should implement the workaround in the product assembly code.
2.2.2 VDIV or VSQRT instructions might not complete correctly when very short ISRs are used A NA U STM32CubeMP15_Package provided as example. The customer should implement the workarounds according to the user code and product configuration.
2.2.3 Store immediate overlapping exception return operation might vector to incorrect interrupt A NA U STM32CubeMP15_Package: Minor impact on the system. The customer should implement the workaround according to the MPU configuration.
DDRPHYC 2.4.2 DDR_CLK jitter out of JEDEC requirement for 32-bit LPDDR2/LPDDR3 at low device Tj A U U ST boards use DDR3 instead of LPDDR2/3. The customer should implement the workaround if he uses LPDDR2/3 in his board design.
2.4.3 Data corruption at low device Tj combined with low 32-bit LPDDR2/LPDDR3 I/O supply voltage A U U ST boards use DDR3 instead of LPDDR2/3. The customer should implement the workaround if he uses LPDDR2/3 in his board design.
DMAMUX 2.7.4 Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event A NA U STM32CubeMP15_Package: The customer should provide the right DMAMUX signal polarity configuration when calling the HAL_DMAEx_ConfigMuxSync() function provided in STM32CubeMP15_Package Src/stm32mp1xx_hal_dma_ex.c .
FMC 2.8.1 NOR Flash memory/PSRAM incorrect bus turnaround timing A U OpenSTLinux distribution: Delays to applied by customer device tree.
ADC 2.10.4 ADC_AWDy_OUT reset by non-guarded channels A U U OpenSTLinux distribution: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the device tree.

STM32CubeMP15_Package: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the application.

2.10.7 ADC ANA0/ANA1 resolution limited when Gigabit Ethernet is used P U U OpenSTLinux distribution: The customer should implement this workaround by limiting the ADC data resolution in the device tree

STM32CubeMP15_Package: The customer should implement this workaround by limiting the ADC data resolution in the application.

2.10.8 ADC missing codes in differential 16-bit static acquisition P U U OpenSTLinux distribution: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the device tree

STM32CubeMP15_Package: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the application.

DAC 2.11.1 Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before DAC initialization A NA U STM32CubeMP15_Package: Both Normal and Sample and hold modes are supported by the HAL drivers. The user should call properly HAL_DAC_Init before HAL_DAC_ConfigChannel to avoid the issue.
LPTIM 2.17.1 Device may remain stuck in LPTIM interrupt when entering Stop mode A NA U OpenSTLinux distribution: The LPTIM interrupt is not used.

STM32CubeMP15_Package: The customer should implement this workaround in MspDeinit().

4. Workarounds implemented in STM32MP15 ecosystem releases[edit | edit source]

Function Section Limitation Rev.Z OpenSTLinux Distribution.png STM32CubeMP1.png Comment
Arm® Cortex®-A7 core 2.1.2 Cache maintenance by set/way operations can execute out of order A I NA OpenSTLinux distribution: Implementation accepted by the community since Linux® kernel v5.3 in arch/arm/Kconfig (refer to ARM_ERRATA_814220).
System 2.3.3 HSE external oscillator required in some LTDC use cases P I OpenSTLinux distribution: Implemented in device tree.

Hardware implementation of the external oscillator connected to the HSE pins available on STM32MP157x-EV1 MB1263 Rev.C (aka "MB1263C") and STM32MP157x-DKx MB1272 Rev.C (aka "MB1272C").

2.3.4 RCC cannot exit Stop and Low-power Stop modes A I
2.3.5 Incorrect reset of glitch-free kernel clock switch P I OpenSTLinux distribution: By default, STPMIC1 performs a VDDCORE reset on NRST activation.
2.3.6 Limitation of aclk/hclk5/hclk6 to 200 MHz when used as SDMMC1/2 kernel clock P I OpenSTLinux distribution: Implemented in device tree with a clock tree that uses a SDMMC1/SDMMC2 kernel clock source different from the aclk/hclk5/hclk6 bus clock.
2.3.9 Cortex-M4 cannot use I/O compensation on Standby mode exit A I NA OpenSTLinux distribution: Implemented in device tree with a clock tree that uses a SDMMC1/SDMMC2 kernel clock source different from the aclk/hclk5/hclk6 bus clock.
2.3.14 Boundary scan data unduly sampled on TCK falling edge A I OpenSTLinux distribution: Implemented in device tree with a clock tree that uses a SDMMC1/SDMMC2 kernel clock source different from the aclk/hclk5/hclk6 bus clock.
QUADSPI 2.9.1 Memory-mapped read of last memory byte fails P I
VREFBUF 2.12.2 Overshoot on VREFBUF output A I
DTS 2.13.1 DTS incorrect operation with LSE as reference clock and PCLK enabled P I
LPTIM 2.17.2 MCU may remain stuck in LPTIM interrupt when clearing event flag P NA I
RTC and TAMP 2.18.2 Calendar initialization may fail in case of consecutive INIT mode entry P I
I2C 2.19.1 Wrong data sampling when data setup time (tSU;DAT) is shorter than one I2C kernel clock period P I I OpenSTLinux distribution: Workaround implemented in device tree with a clock tree that configures the I2C kernel clock source to a frequency higher than 20 MHz.
SPI 2.21.1 Master data transfer stall at system clock much faster than SCK A I I OpenSTLinux distribution: SPI is disabled after each EOT

STM32CubeMP15_Package: SPI is disabled after each EOT.

2.21.3 TXP interrupt occurring while SPI disabled A I I OpenSTLinux distribution: all interrupts are disabled before the SPI is disabled.
ETH 2.24.6 ARP offload function not effective A I

5. Workarounds not applicable in STM32MP15 ecosystem releases[edit | edit source]

Function Section Limitation Rev.Z OpenSTLinux Distribution.png STM32CubeMP1.png Comment
System 2.3.21 Wrong value in Coresight M4 ROM table A NA NA STM32CubeMP15_Package: DeviceID not used. All the examples provided are compiled for MP15.
DMAMUX 2.7.1 SOFx not asserted when writing into DMAMUX_CFR register N NA OpenSTLinux distribution: DMA synchronization event is not used.
2.7.2 OFx not asserted for trigger event coinciding with last DMAMUX request N NA OpenSTLinux distribution: DMA Trigger event is not used.
2.7.3 OFx not asserted when writing into DMAMUX_RGCFR register N NA OpenSTLinux distribution: DMA Trigger event is not used.
2.7.4 Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event A NA U OpenSTLinux distribution: DMA synchronization event is not used.
FMC 2.8.2 Incorrect FMC_CLK clock period when CLKDIV value is changed on-the-fly in continuous clock mode A NA OpenSTLinux distribution: CLKDIV can't be changed on-the-fly.
2.8.3 NAND Flash memory IREF/IFEF flags wrongly asserted just after enabling in FMC_IER A NA OpenSTLinux distribution: IREF/IFEF flags are not used.
2.8.4 Command sequencer accesses NAND Flash memory device while PBKEN bit is cleared in FMC_PCR A NA OpenSTLinux distribution: PBKEN bit is set at probe time and never cleared on the flag.
2.8.5 NAND Flash memory IREF flag wrongly asserted after reset A NA
ADC 2.10.1 New context conversion initiated without waiting for trigger when writing new context in ADC_JSQR with JQDIS = 0 and JQM = 0 A NA OpenSTLinux distribution: JQDIS = 1, this issue occurs only when JQDIS = 0.
2.10.2 Two consecutive context conversions fail when writing new context in ADC_JSQR just after previous context completion with JQDIS = 0 and JQM = 0 A NA OpenSTLinux distribution: JQDIS = 1, this issue occurs only when JQDIS = 0.
2.10.3 Unexpected regular conversion when two consecutive injected conversions are performed in Dual interleaved mode A NA OpenSTLinux distribution: Dual mode is not implemented.
2.10.5 Injected data stored in the wrong ADC_JDRx registers A NA OpenSTLinux distribution: Injected conversion not implemented.
2.10.6 ADC slave data may be shifted in Dual regular simultaneous mode A NA OpenSTLinux distribution: Dual mode is not implemented.
DAC 2.11.1 Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before DAC initialization A NA U OpenSTLinux distribution:The Linux DAC driver uses only the Normal mode. It never needs to modify the MODE bitfield.
LPTIM 2.17.1 Device may remain stuck in LPTIM interrupt when entering Stop mode A NA U OpenSTLinux distribution: LPTIM interrupt is not used
2.17.2 MCU may remain stuck in LPTIM interrupt when clearing event flag P NA I OpenSTLinux distribution: LPTIM interrupt is not used
RTC and TAMP 2.18.5 REFCKON write protection associated to INIT KEY instead of CAL KEY A NA OpenSTLinux distribution: REFCKON is not implemented in linux driver
I2C 2.19.3 Spurious master transfer upon own slave address match P NA STM32CubeMP15_Package: The multimaster mode implementation of I2C HAL driver prevents such case from happening.
USART 2.20.1 Anticipated end-of-transmission signaling in SPI slave mode A NA OpenSTLinux distribution: SPI slave mode is not implemented
SPI 2.21.2 Corrupted CRC return at non-zero UDRDET setting P NA OpenSTLinux distribution: CRC is not supported
2.21.4 Possible corruption of last-received data depending on CRCSIZE setting A NA OpenSTLinux distribution: CRC is not supported

6. References[edit | edit source]