Skip to content

Commit

Permalink
soc: espressif: fix optimization flag boot fault
Browse files Browse the repository at this point in the history
When DEBUG_OPTIMIZATION or NO_OPTIMIZATION is
enabled, efuse reading fails during bootloader start.
Move those calls into IRAM area so that reading when
cache is disabled works without any faults.

In HAL side, we need to use low level calls to read
CPU id instead of Zephyr's default one.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
  • Loading branch information
sylvioalves authored and kartben committed Feb 26, 2025
1 parent dee7927 commit 1903a8f
Show file tree
Hide file tree
Showing 7 changed files with 7 additions and 8 deletions.
3 changes: 1 addition & 2 deletions soc/espressif/esp32/default.ld
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,6 @@ SECTIONS
*libzephyr.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
*libzephyr.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)

*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
*libzephyr.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
*libzephyr.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
Expand Down Expand Up @@ -604,6 +603,7 @@ SECTIONS
*libzephyr.a:esp_psram_impl_quad.*(.rodata .rodata.*)

/* [mapping:hal] */
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:mmu_hal.*(.rodata .rodata.*)
*libzephyr.a:spi_flash_hal_iram.*(.rodata .rodata.*)
*libzephyr.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.*)
Expand Down Expand Up @@ -711,7 +711,6 @@ SECTIONS
*libzephyr.a:esp_clk.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
*libzephyr.a:rtc_clk_init.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
*libzephyr.a:rtc_time.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
*libzephyr.a:efuse_hal.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
*libzephyr.a:cpu_region_protect.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)

*libzephyr.a:periph_ctrl.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
Expand Down
1 change: 1 addition & 0 deletions soc/espressif/esp32c2/default.ld
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@ SECTIONS
*libzephyr.a:cache_utils.*(.rodata .rodata.* .srodata .srodata.*)

/* [mapping:hal] */
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:mmu_hal.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:spi_flash_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
Expand Down
1 change: 1 addition & 0 deletions soc/espressif/esp32c3/default.ld
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,7 @@ SECTIONS
*libzephyr.a:cache_utils.*(.rodata .rodata.* .srodata .srodata.*)

/* [mapping:hal] */
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:mmu_hal.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:spi_flash_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
Expand Down
3 changes: 1 addition & 2 deletions soc/espressif/esp32c6/default.ld
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,6 @@ SECTIONS
*libzephyr.a:esp_rom_systimer.*(.literal .literal.* .text .text.*)
*libzephyr.a:esp_rom_wdt.*(.literal .literal.* .text .text.*)
*libzephyr.a:esp_rom_hp_regi2c_esp32c6.*(.literal .literal.* .text .text.*)
*libzephyr.a:efuse_hal.*(.literal .literal.* .text .text.*)

/* [mapping:esp_mm] */
*libzephyr.a:esp_cache.*(.literal .literal.* .text .text.*)
Expand Down Expand Up @@ -572,6 +571,7 @@ SECTIONS
*libzephyr.a:cache_utils.*(.rodata .rodata.* .srodata .srodata.*)

/* [mapping:hal] */
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:mmu_hal.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:spi_flash_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
Expand Down Expand Up @@ -647,7 +647,6 @@ SECTIONS
*libzephyr.a:esp_rom_efuse.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:esp_rom_systimer.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:esp_rom_hp_regi2c_esp32c6.*(.rodata .rodata.* .srodata .srodata.*)
*libzephyr.a:efuse_hal.*(.rodata .rodata.* .srodata .srodata.*)

. = ALIGN(4);
#include <snippets-rwdata.ld>
Expand Down
4 changes: 1 addition & 3 deletions soc/espressif/esp32s2/default.ld
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,6 @@ SECTIONS
*libzephyr.a:secure_boot.*(.literal .text .literal.* .text.*)
*libzephyr.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
*libzephyr.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
*libzephyr.a:esp_efuse_fields.*(.literal .text .literal.* .text.*)
*libzephyr.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
Expand Down Expand Up @@ -619,6 +618,7 @@ SECTIONS
*libzephyr.a:esp_psram_impl_quad.*(.rodata .rodata.*)

/* [mapping:hal] */
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:mmu_hal.*(.rodata .rodata.*)
*libzephyr.a:spi_flash_hal_iram.*(.rodata .rodata.*)
*libzephyr.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.*)
Expand Down Expand Up @@ -736,8 +736,6 @@ SECTIONS
*libzephyr.a:esp_flash_api.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
*libzephyr.a:esp_flash_spi_init.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)

*libzephyr.a:efuse_hal.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)

. = ALIGN(4);
_loader_data_end = ABSOLUTE(.);
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
Expand Down
1 change: 1 addition & 0 deletions soc/espressif/esp32s3/default.ld
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ SECTIONS
*libzephyr.a:esp_psram_impl_octal.*(.literal .literal.* .text .text.*)

/* [mapping:hal] */
*libzephyr.a:efuse_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:mmu_hal.*(.literal .text .literal.* .text.*)
*libzephyr.a:spi_flash_hal_iram.*(.literal .text .literal.* .text.*)
*libzephyr.a:spi_flash_encrypt_hal_iram.*(.literal .text .literal.* .text.*)
Expand Down
2 changes: 1 addition & 1 deletion west.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ manifest:
groups:
- hal
- name: hal_espressif
revision: a459b40356f5e6fb55d92bcb458cec45365d5ec5
revision: 202c59552dc98e5cd02386313e1977ecb17a131f
path: modules/hal/espressif
west-commands: west/west-commands.yml
groups:
Expand Down

0 comments on commit 1903a8f

Please sign in to comment.