Registered User mNo edit summary |
Registered User mNo edit summary |
||
(25 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
<noinclude>{{ApplicableFor | |||
|MPUs list=STM32MP15x | |||
|MPUs checklist=STM32MP13x,STM32MP15x | |||
}}</noinclude> | |||
{{InternalInfo | Data coming from excel sheet: : [https://stmicroelectronics.sharepoint.com/:x:/r/teams/MCD-AppliTools-MPUEmbSW/Fw%20Dev%20Documents/Projects%20Planning%20%26%20Tracking/OSTL/MP1_ErrataSheet.xlsx MP1_ErrataSheet.xlsx]}} | |||
==Article purpose== | |||
The STM32MP15xx device errata sheet<ref name=errata>[[STM32MP15 resources#Errata sheets|STM32MP15 Errata sheets]]</ref> lists the different device limitations and explains the corresponding workarounds (software and/or hardware) if any.</br> | The STM32MP15xx device errata sheet<ref name=errata>[[STM32MP15 resources#Errata sheets|STM32MP15 Errata sheets]]</ref> lists the different device limitations and explains the corresponding workarounds (software and/or hardware) if any.</br> | ||
The objective of this article is to explain which of the workarounds described in this errata sheet are implemented in | The objective of this article is to explain which of the workarounds, described in this errata sheet, are '''applicable''' and '''implemented''' in {{EcosystemRelease | revision=4.1.0}}.<br /> | ||
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<ref name=errata>[[STM32MP15 resources#Errata sheets|STM32MP15 Errata sheets]]</ref> and not listed in this article, have no workaround implemented in STM32MPU Ecosystem releases'''. | |||
==Legend== | |||
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 | * A = workaround available | ||
* P = partial 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 '''U'''ser | |||
* I = workaround '''I'''mplemented | * I = workaround '''I'''mplemented | ||
* NA= Errata '''N'''ot '''A'''pplicable in ST software release | |||
* NA= | |||
Wave your mouse over a status in the table to display the corresponding legend. | Wave your mouse over a status in the table to display the corresponding legend. | ||
== Workarounds to implement by customer == | |||
{| class="st-table" | {| class="st-table" | ||
! style="text-align: center" | Function | ! style="text-align: center" | Function | ||
! style="text-align: center" | Section | ! style="text-align: center" | Section | ||
! style="text-align: center" | Limitation | ! style="text-align: center" | Limitation | ||
! style="text-align: center | ! style="text-align: center" | Rev.Z | ||
! style="text-align: center" | | ! style="text-align: center" | [[File:OpenSTLinux_Distribution.png|75px|link=STM32_MPU_OpenSTLinux_release_note]] | ||
! style="text-align: center" | | ! style="text-align: center" | [[File:STM32CubeMP1.png|75px|link=STM32CubeMP1_Package_release_note]] | ||
! style="text-align: center" | Comment | ! style="text-align: center" | Comment | ||
|- | |- | ||
| rowspan=" | | rowspan="1" | [[Arm Cortex-A7|Arm<sup>®</sup> Cortex<sup>®</sup>-A7 core]] | ||
| style="text-align: center;" | 2.1.1 | | style="text-align: center;" | 2.1.1 | ||
| Memory locations might be accessed speculatively due to instruction fetches when HCR.VM is set | | Memory locations might be accessed speculatively due to instruction fetches when HCR.VM is set | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]] does not activate Arm<sup>®</sup> Cortex<sup>®</sup>-A7 Hypervisor mode and hence the Virtual Memory second stage of translation.</br> | |||
| style="text-align: center;" | | The customer should implement the workaround if the Hypervisor mode is used in his/her product. | ||
| | |||
|- | |- | ||
| rowspan="3" | [[Arm Cortex-M4|Arm<sup>®</sup> Cortex<sup>®</sup>-M4 core]] | | rowspan="3" | [[Arm Cortex-M4|Arm<sup>®</sup> Cortex<sup>®</sup>-M4 core]] | ||
| style="text-align: center;" | 2.2.1 | | style="text-align: center;" | 2.2.1 | ||
| Interrupted loads to SP can cause erroneous behavior | | Interrupted loads to SP can cause erroneous behavior | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| Limitation only on hand-written assembly code. | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: Limitation only on hand-written assembly code. The customer should implement the workaround in the product assembly code. | |||
|- | |- | ||
| style="text-align: center;" | 2.2.2 | | style="text-align: center;" | 2.2.2 | ||
| VDIV or VSQRT instructions might not complete correctly when very short ISRs are used | | VDIV or VSQRT instructions might not complete correctly when very short ISRs are used | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| [[STM32CubeMP1 | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:STM32CubeMP1|STM32CubeMP1_Package]] provided as example. The customer should implement the workarounds according to the user code and product configuration. | |||
|- | |- | ||
| style="text-align: center;" | 2.2.3 | | style="text-align: center;" | 2.2.3 | ||
| Store immediate overlapping exception return operation might vector to incorrect interrupt | | Store immediate overlapping exception return operation might vector to incorrect interrupt | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| style="text-align: center;" | <span title="workaround to implement by user" >U</span> | |||
| [[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: Minor impact on the system. The customer should implement the workaround according to the MPU configuration. | |||
| style="text-align: center;" | <span title="workaround | |||
| | |||
| | |||
|- | |- | ||
| rowspan="2" | [[DDRCTRL and DDRPHYC internal peripherals|DDRPHYC]] | |||
| style="text-align: center;" | 2.4.2 | | style="text-align: center;" | 2.4.2 | ||
| DDR_CLK jitter out of JEDEC requirement for 32-bit LPDDR2/LPDDR3 at low device Tj | | DDR_CLK jitter out of JEDEC requirement for 32-bit LPDDR2/LPDDR3 at low device Tj | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| ST boards use DDR3 instead of LPDDR2/3. | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| ST boards use DDR3 instead of LPDDR2/3. The customer should implement the workaround if he uses LPDDR2/3 in his board design. | |||
|- | |- | ||
| style="text-align: center;" | 2.4.3 | | style="text-align: center;" | 2.4.3 | ||
| Data corruption at low device Tj combined with low 32-bit LPDDR2/LPDDR3 I/O supply voltage | | Data corruption at low device Tj combined with low 32-bit LPDDR2/LPDDR3 I/O supply voltage | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| ST boards use DDR3 instead of LPDDR2/3. | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| ST boards use DDR3 instead of LPDDR2/3. The customer should implement the workaround if he uses LPDDR2/3 in his board design. | |||
|- | |- | ||
| rowspan="1" | [[DMAMUX internal peripheral|DMAMUX]] | | rowspan="1" | [[DMAMUX internal peripheral|DMAMUX]] | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.7.4 | ||
| Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event | | Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: The customer should provide the right DMAMUX signal polarity configuration when calling the HAL_DMAEx_ConfigMuxSync() function provided in [[:Category:STM32CubeMP1|STM32CubeMP1_Package]] {{CodeSource | STM32CubeMP1 | Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma_ex.c | Src/stm32mp1xx_hal_dma_ex.c}}. | |||
|- | |- | ||
| rowspan="1" | [[ | | rowspan="1" | [[FMC internal peripheral|FMC]] | ||
| style="text-align: center;" | 2.8.1 | | style="text-align: center;" | 2.8.1 | ||
| | | NOR Flash memory/PSRAM incorrect bus turnaround timing | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround to implement by user" >U</span> | |||
| style="text-align: center;" | | | style="text-align: center;" | | ||
| | | [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Delays to applied by customer device tree. | ||
|- | |- | ||
| | | rowspan="3" | [[ADC internal peripheral|ADC]] | ||
| | | style="text-align: center;" | 2.10.4 | ||
| ADC_AWDy_OUT reset by non-guarded channels | |||
| style="text-align: center;" | 2. | |||
| | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the device tree. | |||
[[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the application. | |||
|- | |- | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.10.7 | ||
| ADC ANA0/ANA1 resolution limited when Gigabit Ethernet is used | | ADC ANA0/ANA1 resolution limited when Gigabit Ethernet is used | ||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| The customer | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: The customer should implement this workaround by limiting the ADC data resolution in the device tree | |||
[[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: The customer should implement this workaround by limiting the ADC data resolution in the application. | |||
|- | |- | ||
| style="text-align: center;" | 2.8 | | style="text-align: center;" | 2.10.8 | ||
| ADC missing codes in differential 16-bit static acquisition | | ADC missing codes in differential 16-bit static acquisition | ||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| The customer | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the device tree | |||
[[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: The customer should implement this workaround by configuring only ADC channels that are guarded by a watchdog in the application. | |||
|- | |- | ||
| rowspan="1" | [[DAC internal peripheral|DAC]] | | rowspan="1" | [[DAC internal peripheral|DAC]] | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.11.1 | ||
| Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before DAC initialization | | Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before DAC initialization | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | <span title="workaround to implement by user" >U</span> | |||
| [[:Category:STM32CubeMP1|STM32CubeMP1_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. | |||
|- | |||
| rowspan="1" | [[LPTIM internal peripheral|LPTIM]] | |||
| style="text-align: center;" | 2.17.1 | |||
| Device may remain stuck in LPTIM interrupt when entering Stop mode | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | <span title="workaround to implement by user" >U</span> | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: The LPTIM interrupt is not used. | |||
[[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: The customer should implement this workaround in MspDeinit(). | |||
|} | |||
== Workarounds implemented in STM32MP15 ecosystem releases == | |||
{| class="st-table" | |||
! style="text-align: center" | Function | |||
! style="text-align: center" | Section | |||
! style="text-align: center" | Limitation | |||
! style="text-align: center" | Rev.Z | |||
! style="text-align: center" | [[File:OpenSTLinux_Distribution.png|75px|link=STM32_MPU_OpenSTLinux_release_note]] | |||
! style="text-align: center" | [[File:STM32CubeMP1.png|75px|link=STM32CubeMP1_Package_release_note]] | |||
! style="text-align: center" | Comment | |||
|- | |||
| rowspan="1" | [[Arm Cortex-A7|Arm<sup>®</sup> Cortex<sup>®</sup>-A7 core]] | |||
| style="text-align: center;" | 2.1.2 | |||
| Cache maintenance by set/way operations can execute out of order | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Implementation accepted by the community since Linux® kernel v5.3 in arch/arm/Kconfig (refer to ARM_ERRATA_814220). | |||
|- | |||
| rowspan="6" | System | |||
| style="text-align: center;" | 2.3.3 | |||
| [[RCC internal peripheral|HSE]] external oscillator required in some [[LTDC internal peripheral|LTDC]] use cases | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Implemented in device tree. | |||
Hardware implementation of the external oscillator connected to the HSE pins available on [[STM32MP157x-EV1 - hardware description|STM32MP157x-EV1]] [[MB1263]] Rev.C (aka "MB1263C") and [[STM32MP157x-DKx - hardware description|STM32MP157x-DKx]] [[MB1272]] Rev.C (aka "MB1272C"). | |||
|- | |- | ||
| style="text-align: center;" | 2.3.4 | |||
| style="text-align: center;" | 2. | | [[RCC internal peripheral|RCC]] cannot exit Stop and Low-power Stop modes | ||
| | |||
| | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| | |||
|- | |- | ||
| style="text-align: center;" | 2.3.5 | |||
| style="text-align: center;" | 2. | | Incorrect reset of glitch-free kernel clock switch | ||
| | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: By default, STPMIC1 performs a VDDCORE reset on NRST activation. | |||
|- | |- | ||
| style="text-align: center;" | 2.3.6 | |||
| style="text-align: center;" | 2. | | Limitation of aclk/hclk5/hclk6 to 200 MHz when used as SDMMC1/2 kernel clock | ||
| | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Implemented in device tree with a [[STM32MP15 clock tree|clock tree]] that uses a SDMMC1/SDMMC2 kernel clock source different from the aclk/hclk5/hclk6 bus clock. | |||
|- | |- | ||
| | | style="text-align: center;" | 2.3.9 | ||
| style="text-align: center;" | | | Cortex-M4 cannot use I/O compensation on Standby mode exit | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Implemented in device tree with a [[STM32MP15 clock tree|clock tree]] that uses a SDMMC1/SDMMC2 kernel clock source different from the aclk/hclk5/hclk6 bus clock. | |||
|- | |||
| style="text-align: center;" | 2.3.14 | |||
| Boundary scan data unduly sampled on TCK falling edge | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Implemented in device tree with a [[STM32MP15 clock tree|clock tree]] that uses a SDMMC1/SDMMC2 kernel clock source different from the aclk/hclk5/hclk6 bus clock. | |||
|- | |- | ||
| | | rowspan="1" | [[QUADSPI internal peripheral|QUADSPI]] | ||
| | | style="text-align: center;" | 2.9.1 | ||
| style="text-align: center;" | | Memory-mapped read of last memory byte fails | ||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| | |||
|- | |- | ||
| rowspan="1" | [[ | | rowspan="1" | [[VREFBUF internal peripheral|VREFBUF]] | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.12.2 | ||
| | | Overshoot on VREFBUF output | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| | |||
|- | |- | ||
| rowspan=" | | rowspan="1" | [[DTS internal peripheral|DTS]] | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.13.1 | ||
| | | DTS incorrect operation with LSE as reference clock and PCLK enabled | ||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| | |||
|- | |- | ||
| rowspan="1" | [[LPTIM internal peripheral|LPTIM]] | |||
| style="text-align: center;" | 2.17.2 | | style="text-align: center;" | 2.17.2 | ||
| | | MCU may remain stuck in LPTIM interrupt when clearing event flag | ||
| style="text-align: center; | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| style="text-align: center;" | <span title=" | | style="text-align: center;" | <span title="implemented" >I</span> | ||
| | | | ||
|- | |- | ||
| | | rowspan="1" | [[RTC internal peripheral|RTC]] and [[TAMP internal peripheral|TAMP]] | ||
| | | style="text-align: center;" | 2.18.2 | ||
| style="text-align: center;" | | Calendar initialization may fail in case of consecutive INIT mode entry | ||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | | style="text-align: center;" | <span title="partial workaround available" >P</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| style="text-align: center;" | | |||
| style="text-align: center;" | | |||
| | | | ||
|- | |- | ||
| rowspan=" | | rowspan="1" | [[I2C internal peripheral|I2C]] | ||
| style="text-align: center;" | 2.19.1 | | style="text-align: center;" | 2.19.1 | ||
| Wrong data sampling when data setup time (tSU;DAT) is shorter than one I2C kernel clock period | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | |||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | |||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | |||
| [[:Category:OpenSTLinux distribution|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. | |||
|- | |||
| rowspan="2" | [[SPI internal peripheral|SPI]] | |||
| style="text-align: center;" | 2.21.1 | |||
| Master data transfer stall at system clock much faster than SCK | | Master data transfer stall at system clock much faster than SCK | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| SPI is disabled after each EOT | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: SPI is disabled after each EOT | |||
[[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: SPI is disabled after each EOT. | |||
|- | |- | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.21.3 | ||
| | | TXP interrupt occurring while SPI disabled | ||
| style="text-align: center; | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title=" | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| style="text-align: center;" | <span title="workaround | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: all interrupts are disabled before the SPI is disabled. | ||
|- | |- | ||
| | | rowspan="1" | [[ETH internal peripheral|ETH]] | ||
| | | style="text-align: center;" | 2.24.6 | ||
| style="text-align: center;" | | ARP offload function not effective | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | style="text-align: center;" | | ||
| | |||
|} | |||
== Workarounds not applicable in STM32MP15 ecosystem releases == | |||
{| class="st-table" | |||
! style="text-align: center" | Function | |||
! style="text-align: center" | Section | |||
! style="text-align: center" | Limitation | |||
! style="text-align: center" | Rev.Z | |||
! style="text-align: center" | [[File:OpenSTLinux_Distribution.png|75px|link=STM32_MPU_OpenSTLinux_release_note]] | |||
! style="text-align: center" | [[File:STM32CubeMP1.png|75px|link=STM32CubeMP1_Package_release_note]] | |||
! style="text-align: center" | Comment | |||
|- | |- | ||
| style="text-align: center;" | 2. | | rowspan="1" | System | ||
| | | style="text-align: center;" | 2.3.21 | ||
| style="text-align: center;" | | Wrong value in Coresight M4 ROM table | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| [[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: DeviceID not used. All the examples provided are compiled for MP15. | |||
|- | |||
| rowspan="4" | [[DMAMUX internal peripheral|DMAMUX]] | |||
| style="text-align: center;" | 2.7.1 | |||
| SOFx not asserted when writing into DMAMUX_CFR register | |||
| style="text-align: center;" | <span title="no workaround available" >N</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: DMA synchronization event is not used. | |||
|- | |||
| style="text-align: center;" | 2.7.2 | |||
| OFx not asserted for trigger event coinciding with last DMAMUX request | |||
| style="text-align: center;" | <span title="no workaround available" >N</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: DMA Trigger event is not used. | |||
|- | |||
| style="text-align: center;" | 2.7.3 | |||
| OFx not asserted when writing into DMAMUX_RGCFR register | |||
| style="text-align: center;" | <span title="no workaround available" >N</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: DMA Trigger event is not used. | |||
|- | |||
| style="text-align: center;" | 2.7.4 | |||
| Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: DMA synchronization event is not used. | |||
|- | |- | ||
| rowspan=" | | rowspan="4" | [[FMC internal peripheral|FMC]] | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.8.2 | ||
| Incorrect FMC_CLK clock period when CLKDIV value is changed on-the-fly in continuous clock mode | |||
| | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: CLKDIV can't be changed on-the-fly. | |||
|- | |- | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.8.3 | ||
| | | NAND Flash memory IREF/IFEF flags wrongly asserted just after enabling in FMC_IER | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: IREF/IFEF flags are not used. | |||
|- | |- | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.8.4 | ||
| | | Command sequencer accesses NAND Flash memory device while PBKEN bit is cleared in FMC_PCR | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: PBKEN bit is set at probe time and never cleared on the flag. | |||
|- | |- | ||
| style="text-align: center;" | 2.8.5 | |||
| style="text-align: center;" | 2. | | NAND Flash memory IREF flag wrongly asserted after reset | ||
| | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| style="text-align: center;" | | |||
| | | | ||
|- | |- | ||
| style="text-align: center;" | 2. | | rowspan="5" | [[ADC internal peripheral|ADC]] | ||
| | | style="text-align: center;" | 2.10.1 | ||
| style="text-align: center;" | | New context conversion initiated without waiting for trigger when writing new context in ADC_JSQR with JQDIS = 0 and JQM = 0 | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: JQDIS = 1, this issue occurs only when JQDIS = 0. | |||
|- | |||
| style="text-align: center;" | 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 | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: JQDIS = 1, this issue occurs only when JQDIS = 0. | |||
|- | |||
| style="text-align: center;" | 2.10.3 | |||
| Unexpected regular conversion when two consecutive injected conversions are performed in Dual interleaved mode | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Dual mode is not implemented. | |||
|- | |- | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.10.5 | ||
| | | Injected data stored in the wrong ADC_JDRx registers | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Injected conversion not implemented. | |||
|- | |- | ||
| style="text-align: center;" | 2. | | style="text-align: center;" | 2.10.6 | ||
| | | ADC slave data may be shifted in Dual regular simultaneous mode | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: Dual mode is not implemented. | |||
|- | |- | ||
| | | rowspan="1" | [[DAC internal peripheral|DAC]] | ||
| | | style="text-align: center;" | 2.11.1 | ||
| style="text-align: center;" | | Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before DAC initialization | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span title="workaround not | | style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | ||
| | | style="text-align: center;" | <span title="workaround to implement by user" >U</span> | ||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]:The Linux DAC driver uses only the Normal mode. It never needs to modify the MODE bitfield.<br> | |||
|- | |- | ||
| | | rowspan="2" | [[LPTIM internal peripheral|LPTIM]] | ||
| | | style="text-align: center;" | 2.17.1 | ||
| style="text-align: center;" | | Device may remain stuck in LPTIM interrupt when entering Stop mode | ||
| style="text-align: center;" | <span title="workaround available" >A</span> | | style="text-align: center;" | <span title="workaround available" >A</span> | ||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | <span title="workaround to implement by user" >U</span> | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: LPTIM interrupt is not used | |||
|- | |||
| style="text-align: center;" | 2.17.2 | |||
| MCU may remain stuck in LPTIM interrupt when clearing event flag | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | <span title="workaround implemented" >I</span> | | style="text-align: center;" | <span title="workaround implemented" >I</span> | ||
| | | [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: LPTIM interrupt is not used | ||
|- | |||
| rowspan="1" | [[RTC internal peripheral|RTC]] and [[TAMP internal peripheral|TAMP]] | |||
| style="text-align: center;" | 2.18.5 | |||
| REFCKON write protection associated to INIT KEY instead of CAL KEY | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: REFCKON is not implemented in linux driver | |||
|- | |||
| rowspan="1" | [[I2C internal peripheral|I2C]] | |||
| style="text-align: center;" | 2.19.3 | |||
| Spurious master transfer upon own slave address match | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | |||
| style="text-align: center;" | | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| [[:Category:STM32CubeMP1|STM32CubeMP1_Package]]: The multimaster mode implementation of I2C HAL driver prevents such case from happening. | |||
|- | |||
| rowspan="1" | [[USART internal peripheral|USART]] | |||
| style="text-align: center;" | 2.20.1 | |||
| Anticipated end-of-transmission signaling in SPI slave mode | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: SPI slave mode is not implemented | |||
|- | |||
| rowspan="2" | [[SPI internal peripheral|SPI]] | |||
| style="text-align: center;" | 2.21.2 | |||
| Corrupted CRC return at non-zero UDRDET setting | |||
| style="text-align: center;" | <span title="partial workaround available" >P</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: CRC is not supported | |||
|- | |- | ||
| style="text-align: center;" | 2.21.4 | |||
| Possible corruption of last-received data depending on CRCSIZE setting | |||
| style="text-align: center;" | <span title="workaround available" >A</span> | |||
| style="text-align: center;" | <span class="noglossary" title="workaround not applicable" >NA</span> | |||
| style="text-align: center;" | | |||
| [[:Category:OpenSTLinux distribution|OpenSTLinux distribution]]: CRC is not supported | |||
|} | |} | ||
Line 392: | Line 465: | ||
<noinclude> | <noinclude> | ||
[[Category:Release notes | [[Category:Release notes|02]] | ||
</noinclude> | </noinclude> |
Latest revision as of 17:56, 6 March 2023
1. Article purpose[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 unknown revision 4.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 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 source]
Function | Section | Limitation | Rev.Z | ![]() |
![]() |
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 | STM32CubeMP1_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 | STM32CubeMP1_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 | STM32CubeMP1_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 | STM32CubeMP1_Package: The customer should provide the right DMAMUX signal polarity configuration when calling the HAL_DMAEx_ConfigMuxSync() function provided in STM32CubeMP1_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.
STM32CubeMP1_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
STM32CubeMP1_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
STM32CubeMP1_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 | STM32CubeMP1_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.
STM32CubeMP1_Package: The customer should implement this workaround in MspDeinit(). |
4. Workarounds implemented in STM32MP15 ecosystem releases[edit source]
Function | Section | Limitation | Rev.Z | ![]() |
![]() |
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
STM32CubeMP1_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 source]
Function | Section | Limitation | Rev.Z | ![]() |
![]() |
Comment |
---|---|---|---|---|---|---|
System | 2.3.21 | Wrong value in Coresight M4 ROM table | A | NA | NA | STM32CubeMP1_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 | STM32CubeMP1_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 |