This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit b7f3c06b09ff8a17e86f1c6943cf8ab64670e805 Author: Marco Casaroli <[email protected]> AuthorDate: Thu Jul 30 14:16:01 2026 +0200 xtensa/esp32s3: keep octal-flash init in IRAM for the protected build The protected kernel linker (kernel-space.ld) placed the octal (OPI) flash bring-up helpers -- esp_rom_spiflash / esp_rom_opiflash_*, spi_flash_oct_flash_init, mmu_hal, mspi_timing_*, bootloader_flash*, efuse_hal/efuse_utility, esp_mmu_map and esp32s3_spi_timing -- in mapped flash. During configure_cpu_caches() / spi_flash_init_chip_state() in __start these run while the flash mapping is being reconfigured, which faults (illegal instruction) on octal-flash modules such as the ESP32-S3-WROOM-2. Quad-flash parts never exercise the OPI path, so the problem was latent. Place those functions in .iram0.text (mirroring the flat sections script) so they are safe to execute during flash reconfiguration. Assisted-by: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Marco Casaroli <[email protected]> --- boards/xtensa/esp32s3/common/scripts/kernel-space.ld | 2 ++ 1 file changed, 2 insertions(+) diff --git a/boards/xtensa/esp32s3/common/scripts/kernel-space.ld b/boards/xtensa/esp32s3/common/scripts/kernel-space.ld index 942d3d4753f..1e33d5df35b 100644 --- a/boards/xtensa/esp32s3/common/scripts/kernel-space.ld +++ b/boards/xtensa/esp32s3/common/scripts/kernel-space.ld @@ -190,6 +190,7 @@ SECTIONS *libkarch.a:*uart_hal.*(.text .text.* .literal .literal.*) *libkarch.a:*mpu_hal.*(.text .text.* .literal .literal.*) *libkarch.a:*mmu_hal.*(.text .text.* .literal .literal.*) + *libkarch.a:*esp_mmu_map.*(.text .text.* .literal .literal.*) *libkarch.a:*efuse_hal.*(.text .text.* .literal .literal.*) *libkarch.a:*uart_periph.*(.text .text.* .literal .literal.*) *libkarch.a:*esp_rom_uart.*(.text .text.* .literal .literal.*) @@ -217,6 +218,7 @@ SECTIONS *libkarch.a:*mspi_timing_tuning.*(.text .text.* .literal .literal.*) *libkarch.a:*mspi_timing_config.*(.text .text.* .literal .literal.*) + *libkarch.a:esp32s3_spi_timing.*(.text .text.* .literal .literal.*) *libkarch.a:*spi_flash_oct_flash_init.*(.text .text.* .literal .literal.*) *libkarch.a:*spi_flash_hpm_enable.*(.text .text.* .literal .literal.*) #endif
