nuttx/boards
Ricardo Maurizio Paul 3ff85acb4b arch/arm/stm32h5: map OTP, RO and EDATA flash non-cacheable.
The OTP, read-only (UID, flash size, package) and high-cycle data (EDATA)
flash areas only accept 16/32-bit accesses and return a bus error
otherwise (RM0481 Table 77).  The manual requires the MPU to disable local
cacheability for them (RM0481 7.3.2); with the ICACHE enabled and no such
region, reading them raises a precise bus error.

Until now this was worked around piecemeal: the driver disabled the
ICACHE around stm32_get_uniqueid() and the OTP and EDATA word reads, and
nucleo-h563zi mapped the 4 KB OTP/RO area non-cacheable in its board
code.  Other reads, for example stm32_otp_read() or an application
reading the OTP on another board, still raised a precise bus error when
the ICACHE was enabled.

Map 0x08fff000-0x09017fff, which covers the three contiguous areas, as
Normal non-cacheable and execute-never with a single MPU region before
the ICACHE is enabled.  STM32_ICACHE now selects ARM_MPU so that
stm32_mpuinitialize() has reset and enabled the MPU by then.

Remove the nucleo-h563zi OTP region in the same commit: the Armv8-M MPU
faults on an address that matches more than one region, so keeping both
would make OTP and UID reads fault on that board.

Assisted-by: Claude:claude-sonnet-5-5
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Ricardo Maurizio Paul <ricardopaul@geotab.com>
2026-10-06 16:57:31 -03:00
..
arm arch/arm/stm32h5: map OTP, RO and EDATA flash non-cacheable. 2026-10-06 16:57:31 -03:00
arm64 boards/qemu-armv8a: add S2OPC server configuration 2026-09-15 14:55:24 +02:00
avr !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
dummy
hc/m9s12 !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
mips arch/mips/jz4780: Add HDMI EDID parsing and dynamic display modes 2026-08-29 11:08:25 -03:00
misoc/lm32/misoc
or1k/mor1kx/or1k !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
renesas !arch/arm: Use r9 as the PIC base register. 2026-08-06 01:38:23 +08:00
risc-v boards/risc-v/esp32c2/esp8684-devkitm: add ROMFS and extra configs 2026-09-30 11:49:41 -03:00
sim/sim/sim boards/sim: Fix coding style to let the PR pass 2026-09-25 10:36:28 +02:00
sparc
tricore
x86/qemu/qemu-i486 boards/x86/qemu/qemu-i486: Switch nsh/vga_fb from nsh to nxinit. 2026-09-17 16:21:59 +08:00
x86_64/qemu/qemu-intel64 boards/qemu-intel64: add citest configuration 2026-09-15 18:33:47 +08:00
xtensa xtensa/esp32s3: Report an access through an invalid MMU entry. 2026-09-29 11:13:47 -03:00
z16/z16f/z16f2800100zcog
z80
.gitignore
Board.mk !tools/mkpasswd: PBKDF2 host tool and ROMFS passwd build integration 2026-07-21 20:19:14 +08:00
boardctl.c
CMakeLists.txt cmake: Use NUTTX(_DIR/_BIN_DIR) instead CMAKE(_SRC_DIR/_BIN_DIR) 2026-08-09 11:13:08 -03:00
dummy.c
Kconfig boards/arm/stm32h5: add initial STM32H573I-DK support 2026-10-06 16:36:40 -03:00
Makefile tools: fix stale archive members surviving a Kconfig-driven CSRCS change 2026-07-28 21:26:03 -03:00