diff --git a/soc/espressif/common/loader.c b/soc/espressif/common/loader.c index 5377f6bb312..7700b7db959 100644 --- a/soc/espressif/common/loader.c +++ b/soc/espressif/common/loader.c @@ -22,6 +22,8 @@ #include "esp_flash.h" #include "esp_log.h" #include "bootloader_init.h" +#include "bootloader_random.h" +#include "bootloader_soc.h" #define TAG "boot" @@ -248,5 +250,12 @@ void __start(void) map_rom_segments(_app_drom_start, _app_drom_vaddr, _app_drom_size, _app_irom_start, _app_irom_vaddr, _app_irom_size); #endif + + /* Disable RNG entropy source as it was already used */ + bootloader_random_disable(); + + /* Disable glitch detection as it can be falsely triggered by EMI interference */ + bootloader_ana_clock_glitch_reset_config(false); + __esp_platform_start(); } diff --git a/soc/espressif/esp32/default.ld b/soc/espressif/esp32/default.ld index dec0309cb2c..d47e73b31a4 100644 --- a/soc/espressif/esp32/default.ld +++ b/soc/espressif/esp32/default.ld @@ -372,6 +372,10 @@ SECTIONS *libzephyr.a:esp_cache.*(.literal .literal.* .text .text.*) *libzephyr.a:cache_esp32.*(.literal .literal.* .text .text.*) + *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) + #if defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.*) @@ -399,7 +403,6 @@ SECTIONS .loader.text : { . = ALIGN(4); - *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_init.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_esp32.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_clock_init.*(.literal .text .literal.* .text.*) @@ -411,8 +414,6 @@ SECTIONS *libzephyr.a:bootloader_common.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_mem.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_random.*(.literal .text .literal.* .text.*) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) *libzephyr.a:bootloader_efuse.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_utility.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_sha.*(.literal .text .literal.* .text.*) diff --git a/soc/espressif/esp32c3/default.ld b/soc/espressif/esp32c3/default.ld index 62b16137224..6058e09505c 100644 --- a/soc/espressif/esp32c3/default.ld +++ b/soc/espressif/esp32c3/default.ld @@ -319,6 +319,10 @@ SECTIONS *libzephyr.a:esp_cache.*(.literal .literal.* .text .text.*) *libzephyr.a:cache_utils.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) + #if defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -348,7 +352,6 @@ SECTIONS { . = ALIGN(4); _loader_text_start = ABSOLUTE(.); - *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_init.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_esp32c3.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_clock_init.*(.literal .text .literal.* .text.*) @@ -360,8 +363,6 @@ SECTIONS *libzephyr.a:bootloader_panic.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_mem.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_random.*(.literal .text .literal.* .text.*) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) *libzephyr.a:bootloader_efuse.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_utility.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_sha.*(.literal .text .literal.* .text.*) diff --git a/soc/espressif/esp32c6/default.ld b/soc/espressif/esp32c6/default.ld index 9d0b5f2ac21..1cf45778086 100644 --- a/soc/espressif/esp32c6/default.ld +++ b/soc/espressif/esp32c6/default.ld @@ -318,6 +318,10 @@ SECTIONS *libzephyr.a:esp_cache.*(.literal .literal.* .text .text.*) *libzephyr.a:cache_utils.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) + #if defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -346,7 +350,6 @@ SECTIONS { . = ALIGN(4); _loader_text_start = ABSOLUTE(.); - *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_init.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_esp32c6.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_clock_init.*(.literal .text .literal.* .text.*) @@ -358,8 +361,6 @@ SECTIONS *libzephyr.a:bootloader_panic.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_mem.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_random.*(.literal .text .literal.* .text.*) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) *libzephyr.a:bootloader_efuse.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_utility.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_sha.*(.literal .text .literal.* .text.*) diff --git a/soc/espressif/esp32s2/default.ld b/soc/espressif/esp32s2/default.ld index 5eadcd96803..6c0ceb5e57f 100644 --- a/soc/espressif/esp32s2/default.ld +++ b/soc/espressif/esp32s2/default.ld @@ -424,6 +424,10 @@ SECTIONS /* [mapping:esp_mm] */ *libzephyr.a:esp_cache.*(.literal .literal.* .text .text.*) + *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) + #if defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) *libpp.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.*) @@ -454,7 +458,6 @@ SECTIONS { . = ALIGN(4); _loader_text_start = ABSOLUTE(.); - *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_init.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_esp32s2.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_clock_init.*(.literal .text .literal.* .text.*) @@ -466,8 +469,6 @@ SECTIONS *libzephyr.a:bootloader_common.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_mem.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_random.*(.literal .text .literal.* .text.*) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) *libzephyr.a:bootloader_efuse.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_utility.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_sha.*(.literal .text .literal.* .text.*) diff --git a/soc/espressif/esp32s3/default.ld b/soc/espressif/esp32s3/default.ld index 8f002c4b869..dc7e283e39f 100644 --- a/soc/espressif/esp32s3/default.ld +++ b/soc/espressif/esp32s3/default.ld @@ -379,6 +379,10 @@ SECTIONS /* [mapping:esp_mm] */ *libzephyr.a:esp_cache.*(.literal .literal.* .text .text.*) + *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) + *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) + #if defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) *libpp.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.*) @@ -407,7 +411,6 @@ SECTIONS { . = ALIGN(4); _loader_text_start = ABSOLUTE(.); - *libzephyr.a:bootloader_soc.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_init.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_esp32s3.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_clock_init.*(.literal .text .literal.* .text.*) @@ -418,8 +421,6 @@ SECTIONS *libzephyr.a:bootloader_common_loader.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_mem.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_random.*(.literal .text .literal.* .text.*) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_disable .text.bootloader_random_disable) - *libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable) *libzephyr.a:bootloader_efuse.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_utility.*(.literal .text .literal.* .text.*) *libzephyr.a:bootloader_sha.*(.literal .text .literal.* .text.*) diff --git a/west.yml b/west.yml index c4f011ce9c4..bfbd2c3c254 100644 --- a/west.yml +++ b/west.yml @@ -157,7 +157,7 @@ manifest: groups: - hal - name: hal_espressif - revision: 61b977fd2b033c656b1b2fa07b3137872236f710 + revision: 87e7902d7184a8280b4d13bce79801a723f4ddd8 path: modules/hal/espressif west-commands: west/west-commands.yml groups: