From 98d60dee1184b8ed4f60783a7c8ab7244161fe5b Mon Sep 17 00:00:00 2001 From: Sylvio Alves Date: Sat, 7 Sep 2024 00:21:14 -0300 Subject: [PATCH] bugfix: soc: esp32: disable interrupts in flash operation When interrupts are placed in flash, it needs to be disabled when flash operations are called. This is not happening in current v3.7.0 release, causing system to crash whenever flash operations and interrupts happens simultaneously. Fixes #77952 Signed-off-by: Sylvio Alves --- soc/espressif/esp32/soc.c | 11 ++--------- west.yml | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/soc/espressif/esp32/soc.c b/soc/espressif/esp32/soc.c index bec3413ba42a35f..1f6696425993144 100644 --- a/soc/espressif/esp32/soc.c +++ b/soc/espressif/esp32/soc.c @@ -13,6 +13,7 @@ #include #include #include +#include #if CONFIG_ESP_SPIRAM #include #include @@ -149,6 +150,7 @@ void IRAM_ATTR __esp_platform_start(void) #ifdef CONFIG_SOC_FLASH_ESP32 esp_mspi_pin_init(); spi_flash_init_chip_state(); + esp_flash_app_init(); #endif #if CONFIG_ESP_SPIRAM @@ -174,15 +176,6 @@ void IRAM_ATTR __esp_platform_start(void) (&_ext_ram_bss_end - &_ext_ram_bss_start) * sizeof(_ext_ram_bss_start)); #endif /* CONFIG_ESP_SPIRAM */ -/* Scheduler is not started at this point. Hence, guard functions - * must be initialized after esp_spiram_init_cache which internally - * uses guard functions. Setting guard functions before SPIRAM - * cache initialization will result in a crash. - */ -#if CONFIG_SOC_FLASH_ESP32 || CONFIG_ESP_SPIRAM - spi_flash_guard_set(&g_flash_guard_default_ops); -#endif - #endif /* !CONFIG_MCUBOOT */ esp_intr_initialize(); diff --git a/west.yml b/west.yml index 1cf39c6aaad3858..afc8b5dc36697a5 100644 --- a/west.yml +++ b/west.yml @@ -157,7 +157,7 @@ manifest: groups: - hal - name: hal_espressif - revision: 87e7902d7184a8280b4d13bce79801a723f4ddd8 + revision: pull/333/head path: modules/hal/espressif west-commands: west/west-commands.yml groups: