The ICACHE must be disabled on STM32H5 series due to documented
behaviour of the flash controller, not to an errata.
For a more technical explaination: (see RM0492 for references)
- on STM32H5, the ICACHE block is interposed on C-bus between
the Cortex-M33 and the FLASH (§2.1.1)
- the ICACHE determines if accesses are cacheable or non-cacheable
based on an AHB attribute; the Cortex-M33 sets this attribute or
not depending on the MPU configuration (§8.4.6)
- when a cacheable access is requested by the Cortex-M33, if the
requested data is not present in ICACHE (cache miss), a cache line
refill (128-bit burst read) is performed (§8.4.7)
- however, all accesses to OTP and Read-Only regions of the FLASH must
be done with caching disabled (§7.3.2); indeed, the accesses MUST be
16 or 32-bit sized - otherwise, the flash interface raises a bus
error (§7.5.9 / Table 38 "OTP/RO access constraints").
This is the behaviour that was observed and lead to the introduction
of ICACHE disable code in
|
||
|---|---|---|
| .. | ||
| a01nyub | ||
| adi | ||
| amd_sb_tsi | ||
| amg88xx | ||
| ams | ||
| aosong | ||
| apds9960 | ||
| asahi_kasei | ||
| bosch | ||
| current_amp | ||
| ene_tach_kb1200 | ||
| ens160 | ||
| espressif | ||
| explorir_m | ||
| f75303 | ||
| fcx_mldx5 | ||
| grow_r502a | ||
| honeywell | ||
| hp206c | ||
| hs300x | ||
| infineon | ||
| isl29035 | ||
| ist8310 | ||
| ite | ||
| lm35 | ||
| lm75 | ||
| lm77 | ||
| ltrf216a | ||
| maxim | ||
| mc3419 | ||
| meas | ||
| mhz19b | ||
| microchip | ||
| nct75 | ||
| nordic | ||
| ntc_thermistor | ||
| nuvoton | ||
| nxp | ||
| pms7003 | ||
| qdec_sam | ||
| rohm | ||
| rpi_pico_temp | ||
| s11059 | ||
| sbs_gauge | ||
| seeed | ||
| sensirion | ||
| silabs | ||
| st | ||
| sx9500 | ||
| tdk | ||
| th02 | ||
| ti | ||
| tsic_xx6 | ||
| veaa_x_3 | ||
| vishay | ||
| voltage_divider | ||
| wsen | ||
| CMakeLists.txt | ||
| default_rtio_sensor.c | ||
| Kconfig | ||
| Kconfig.trigger_template | ||
| sensor_decoders_init.c | ||
| sensor_handlers.c | ||
| sensor_shell_stream.c | ||
| sensor_shell.c | ||
| sensor_shell.h | ||
| shell_battery.c | ||