From fde6c831dba5b4d38144a48295e4a5bc125ad943 Mon Sep 17 00:00:00 2001 From: Almir Okato Date: Mon, 24 Mar 2025 16:37:46 -0300 Subject: [PATCH 1/3] esp32c3: remove unnecessary sources related to bootloader build Both bootloader_console_loader.c and bootloader_random.c are now unused when building MCUboot or App with simple boot. Signed-off-by: Almir Okato --- zephyr/esp32c3/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/zephyr/esp32c3/CMakeLists.txt b/zephyr/esp32c3/CMakeLists.txt index 759b2ee0ef..85efa73a95 100644 --- a/zephyr/esp32c3/CMakeLists.txt +++ b/zephyr/esp32c3/CMakeLists.txt @@ -262,8 +262,6 @@ if(CONFIG_SOC_SERIES_ESP32C3) zephyr_sources( ../../components/bootloader_support/src/bootloader_clock_init.c - ../../components/bootloader_support/src/bootloader_console_loader.c - ../../components/bootloader_support/src/bootloader_random.c ../../components/bootloader_support/bootloader_flash/src/flash_qio_mode.c ../../components/esp_rom/patches/esp_rom_sys.c ../../components/hal/mpu_hal.c From 2f656f0687e24d54bd908acb41fb6db8aed9f972 Mon Sep 17 00:00:00 2001 From: Almir Okato Date: Mon, 24 Mar 2025 16:56:21 -0300 Subject: [PATCH 2/3] bootloader_support: restore files to IDF 5.1.x version As the modified files are not used when building MCUboot or app with simple boot anymore, the patches are being undone. Signed-off-by: Almir Okato --- .../src/bootloader_console_loader.c | 1 - .../src/esp32/bootloader_esp32.c | 29 +++++-------- .../src/esp32c2/bootloader_esp32c2.c | 24 +---------- .../src/esp32c3/bootloader_esp32c3.c | 21 ++------- .../src/esp32c6/bootloader_esp32c6.c | 12 +----- .../src/esp32s2/bootloader_esp32s2.c | 43 ++++++------------- .../src/esp32s3/bootloader_esp32s3.c | 43 +++++++------------ 7 files changed, 46 insertions(+), 127 deletions(-) diff --git a/components/bootloader_support/src/bootloader_console_loader.c b/components/bootloader_support/src/bootloader_console_loader.c index b6bb0b0f10..647e6973f4 100644 --- a/components/bootloader_support/src/bootloader_console_loader.c +++ b/components/bootloader_support/src/bootloader_console_loader.c @@ -25,7 +25,6 @@ #include "esp32s3/rom/usb/cdc_acm.h" #include "esp32s3/rom/usb/usb_persist.h" #endif -#include "stubs.h" #ifdef CONFIG_ESP_CONSOLE_USB_CDC /* The following functions replace esp_rom_uart_putc, esp_rom_uart_tx_one_char, diff --git a/components/bootloader_support/src/esp32/bootloader_esp32.c b/components/bootloader_support/src/esp32/bootloader_esp32.c index 1cc83a2531..ddea3ee159 100644 --- a/components/bootloader_support/src/esp32/bootloader_esp32.c +++ b/components/bootloader_support/src/esp32/bootloader_esp32.c @@ -36,11 +36,10 @@ #include "esp_rom_sys.h" #include "esp_rom_spiflash.h" #include "esp_efuse.h" -#include "esp_flash_internal.h" static const char *TAG = "boot.esp32"; -#if !CONFIG_APP_BUILD_TYPE_RAM +#if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP static void bootloader_reset_mmu(void) { /* completely reset MMU in case serial bootloader was running */ @@ -180,15 +179,13 @@ esp_err_t bootloader_init(void) { assert(&_bss_start <= &_bss_end); assert(&_data_start <= &_data_end); - // int *sp = esp_cpu_get_sp(); - // assert((unsigned*)sp < (unsigned*)&_bss_start); - // assert((unsigned*)sp < (unsigned*)&_data_start); + int *sp = esp_cpu_get_sp(); + assert(sp < &_bss_start); + assert(sp < &_data_start); } #endif -#ifndef __ZEPHYR__ // clear bss section bootloader_clear_bss_section(); -#endif #endif // !CONFIG_APP_BUILD_TYPE_RAM // init eFuse virtual mode (read eFuses to RAM) @@ -197,7 +194,7 @@ esp_err_t bootloader_init(void) #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif -#endif /* CONFIG_EFUSE_VIRTUAL */ +#endif // bootst up vddsdio bootloader_common_vddsdio_configure(); // check rated CPU clock @@ -208,17 +205,10 @@ esp_err_t bootloader_init(void) bootloader_clock_configure(); // initialize uart console, from now on, we can use esp_log bootloader_console_init(); - // print 2nd bootloader banner + /* print 2nd bootloader banner */ bootloader_print_banner(); -#ifndef CONFIG_BOOTLOADER_MCUBOOT - spi_flash_init_chip_state(); - if ((ret = esp_flash_init_default_chip()) != ESP_OK) { - return ret; - } -#endif - -#if !CONFIG_APP_BUILD_TYPE_RAM +#if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP // reset MMU bootloader_reset_mmu(); // update flash ID @@ -228,6 +218,7 @@ esp_err_t bootloader_init(void) ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } +#if !CONFIG_APP_BUILD_TYPE_RAM // read bootloader header if ((ret = bootloader_read_bootloader_header()) != ESP_OK) { return ret; @@ -236,11 +227,12 @@ esp_err_t bootloader_init(void) if ((ret = bootloader_check_bootloader_validity()) != ESP_OK) { return ret; } +#endif // #if !CONFIG_APP_BUILD_TYPE_RAM // initialize spi flash if ((ret = bootloader_init_spi_flash()) != ESP_OK) { return ret; } -#endif // #if !CONFIG_APP_BUILD_TYPE_RAM +#endif //#if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP // check whether a WDT reset happend bootloader_check_wdt_reset(); @@ -248,6 +240,5 @@ esp_err_t bootloader_init(void) bootloader_config_wdt(); // enable RNG early entropy source bootloader_enable_random(); - return ret; } diff --git a/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c b/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c index 9763a0e9a7..c54da7eb74 100644 --- a/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c +++ b/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c @@ -39,9 +39,6 @@ #include "esp_efuse.h" #include "hal/mmu_hal.h" #include "hal/cache_hal.h" -#if !defined(CONFIG_BOOTLOADER_MCUBOOT) -#include "esp_flash_internal.h" -#endif static const char *TAG = "boot.esp32c2"; @@ -65,7 +62,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -104,15 +101,13 @@ esp_err_t bootloader_init(void) /* check that static RAM is after the stack */ assert(&_bss_start <= &_bss_end); assert(&_data_start <= &_data_end); -#ifndef __ZEPHYR__ // clear bss section bootloader_clear_bss_section(); -#endif #endif // !CONFIG_APP_BUILD_TYPE_RAM // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -124,13 +119,6 @@ esp_err_t bootloader_init(void) /* print 2nd bootloader banner */ bootloader_print_banner(); -#ifndef CONFIG_BOOTLOADER_MCUBOOT - spi_flash_init_chip_state(); - if ((ret = esp_flash_init_default_chip()) != ESP_OK) { - return ret; - } -#endif - #if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP //init cache hal cache_hal_init(); @@ -138,26 +126,18 @@ esp_err_t bootloader_init(void) mmu_hal_init(); // update flash ID bootloader_flash_update_id(); - // Check and run XMC startup flow - if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); - return ret; - } #if !CONFIG_APP_BUILD_TYPE_RAM // read bootloader header if ((ret = bootloader_read_bootloader_header()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed to read flash!"); return ret; } // read chip revision and check if it's compatible to bootloader if ((ret = bootloader_check_bootloader_validity()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed to vallidate!"); return ret; } #endif // !CONFIG_APP_BUILD_TYPE_RAM // initialize spi flash if ((ret = bootloader_init_spi_flash()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed to init spi flash!"); return ret; } #endif //#if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP diff --git a/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c b/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c index f77df8d0ba..0a6a5925fc 100644 --- a/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c +++ b/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c @@ -44,9 +44,6 @@ #include "hal/mmu_hal.h" #include "hal/cache_hal.h" #include "hal/efuse_hal.h" -#if !defined(CONFIG_BOOTLOADER_MCUBOOT) -#include "esp_flash_internal.h" -#endif static const char *TAG = "boot.esp32c3"; @@ -70,7 +67,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CORE_MWDT1 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT1 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -143,15 +140,13 @@ esp_err_t bootloader_init(void) /* check that static RAM is after the stack */ assert(&_bss_start <= &_bss_end); assert(&_data_start <= &_data_end); -#ifndef __ZEPHYR__ // clear bss section bootloader_clear_bss_section(); -#endif #endif // !CONFIG_APP_BUILD_TYPE_RAM // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -163,13 +158,6 @@ esp_err_t bootloader_init(void) /* print 2nd bootloader banner */ bootloader_print_banner(); -#ifndef CONFIG_BOOTLOADER_MCUBOOT - spi_flash_init_chip_state(); - if ((ret = esp_flash_init_default_chip()) != ESP_OK) { - return ret; - } -#endif - #if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP //init cache hal cache_hal_init(); @@ -179,24 +167,21 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM // read bootloader header if ((ret = bootloader_read_bootloader_header()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed to read flash!"); return ret; } // read chip revision and check if it's compatible to bootloader if ((ret = bootloader_check_bootloader_validity()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed to vallidate!"); return ret; } #endif //#if !CONFIG_APP_BUILD_TYPE_RAM // initialize spi flash if ((ret = bootloader_init_spi_flash()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed to init spi flash!"); return ret; } #endif // !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP diff --git a/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c b/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c index f09a3a416a..1e2b4ce501 100644 --- a/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c +++ b/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c @@ -45,9 +45,6 @@ #include "soc/lp_wdt_reg.h" #include "hal/efuse_hal.h" #include "modem/modem_lpcon_reg.h" -#if !defined(CONFIG_BOOTLOADER_MCUBOOT) -#include "esp_flash_internal.h" -#endif static const char *TAG = "boot.esp32c6"; @@ -71,7 +68,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CORE_MWDT1 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT1 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -145,13 +142,6 @@ esp_err_t bootloader_init(void) /* print 2nd bootloader banner */ bootloader_print_banner(); -#ifndef CONFIG_BOOTLOADER_MCUBOOT - spi_flash_init_chip_state(); - if ((ret = esp_flash_init_default_chip()) != ESP_OK) { - return ret; - } -#endif - #if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP //init cache hal cache_hal_init(); diff --git a/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c b/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c index c1b745c0d0..cf2a27fe65 100644 --- a/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c +++ b/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c @@ -38,9 +38,6 @@ #include "esp_efuse.h" #include "hal/mmu_hal.h" #include "hal/cache_hal.h" -#if !defined(CONFIG_BOOTLOADER_MCUBOOT) -#include "esp_flash_internal.h" -#endif static const char *TAG = "boot.esp32s2"; @@ -54,8 +51,6 @@ static void wdt_reset_cpu0_info_enable(void) static void wdt_reset_info_dump(int cpu) { -/* FIXME: failing EDT test due to error in early log */ -#if 0 uint32_t inst = 0, pid = 0, stat = 0, data = 0, pc = 0, lsstat = 0, lsaddr = 0, lsdata = 0, dstat = 0; const char *cpu_name = cpu ? "APP" : "PRO"; @@ -72,20 +67,19 @@ static void wdt_reset_info_dump(int cpu) if (DPORT_RECORD_PDEBUGINST_SZ(inst) == 0 && DPORT_RECORD_PDEBUGSTATUS_BBCAUSE(dstat) == DPORT_RECORD_PDEBUGSTATUS_BBCAUSE_WAITI) { - ESP_EARLY_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32" (waiti mode)", cpu_name, pc); + ESP_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32" (waiti mode)", cpu_name, pc); } else { - ESP_EARLY_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32, cpu_name, pc); + ESP_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32, cpu_name, pc); } - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); -#endif + ESP_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); + ESP_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); } static void bootloader_check_wdt_reset(void) @@ -94,7 +88,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CORE_MWDT1 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT1 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - // PRO CPU has been reset by WDT + ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -126,15 +120,13 @@ esp_err_t bootloader_init(void) assert(&_data_start <= &_data_end); } #endif -#ifndef __ZEPHYR__ // clear bss section bootloader_clear_bss_section(); -#endif /* __ZEPHYR__ */ #endif // !CONFIG_APP_BUILD_TYPE_RAM // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -147,13 +139,6 @@ esp_err_t bootloader_init(void) /* print 2nd bootloader banner */ bootloader_print_banner(); -#ifndef CONFIG_BOOTLOADER_MCUBOOT - spi_flash_init_chip_state(); - if ((ret = esp_flash_init_default_chip()) != ESP_OK) { - return ret; - } -#endif - #if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP // init cache hal cache_hal_init(); @@ -165,7 +150,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM diff --git a/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c b/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c index 4782f1527d..d6f650d1f8 100644 --- a/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c +++ b/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c @@ -40,9 +40,7 @@ #include "hal/cache_hal.h" #include "xtensa/config/core.h" #include "xt_instr_macros.h" -#if !defined(CONFIG_BOOTLOADER_MCUBOOT) -#include "esp_flash_internal.h" -#endif + static const char *TAG = "boot.esp32s3"; @@ -80,20 +78,20 @@ static void wdt_reset_info_dump(int cpu) lsaddr = REG_READ(ASSIST_DEBUG_CORE_1_RCD_PDEBUGLS0ADDR_REG); lsdata = REG_READ(ASSIST_DEBUG_CORE_1_RCD_PDEBUGLS0DATA_REG); #else - ESP_EARLY_LOGE(TAG, "WDT reset info: %s CPU not support!\n", cpu_name); + ESP_LOGE(TAG, "WDT reset info: %s CPU not support!\n", cpu_name); return; #endif } - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); - ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); + ESP_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); + ESP_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); + ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); } static void bootloader_check_wdt_reset(void) @@ -105,12 +103,12 @@ static void bootloader_check_wdt_reset(void) rst_reas[1] = esp_rom_get_reset_reason(1); if (rst_reas[0] == RESET_REASON_CORE_RTC_WDT || rst_reas[0] == RESET_REASON_CORE_MWDT0 || rst_reas[0] == RESET_REASON_CORE_MWDT1 || rst_reas[0] == RESET_REASON_CPU0_MWDT0 || rst_reas[0] == RESET_REASON_CPU0_RTC_WDT) { - ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (rst_reas[1] == RESET_REASON_CORE_RTC_WDT || rst_reas[1] == RESET_REASON_CORE_MWDT0 || rst_reas[1] == RESET_REASON_CORE_MWDT1 || rst_reas[1] == RESET_REASON_CPU1_MWDT1 || rst_reas[1] == RESET_REASON_CPU1_RTC_WDT) { - ESP_EARLY_LOGW(TAG, "APP CPU has been reset by WDT."); + ESP_LOGW(TAG, "APP CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -161,15 +159,13 @@ esp_err_t bootloader_init(void) assert(&_data_start <= &_data_end); } #endif -#ifndef __ZEPHYR__ // clear bss section bootloader_clear_bss_section(); -#endif #endif // !CONFIG_APP_BUILD_TYPE_RAM // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -181,13 +177,6 @@ esp_err_t bootloader_init(void) /* print 2nd bootloader banner */ bootloader_print_banner(); -#ifndef CONFIG_BOOTLOADER_MCUBOOT - spi_flash_init_chip_state(); - if ((ret = esp_flash_init_default_chip()) != ESP_OK) { - return ret; - } -#endif - #if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP //init cache hal cache_hal_init(); @@ -197,7 +186,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM @@ -214,7 +203,7 @@ esp_err_t bootloader_init(void) if ((ret = bootloader_init_spi_flash()) != ESP_OK) { return ret; } -#endif // !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP +#endif // #if !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP // check whether a WDT reset happend bootloader_check_wdt_reset(); From 415a2d62243c241050ce82115fe9d2b34108a6cd Mon Sep 17 00:00:00 2001 From: Almir Okato Date: Wed, 26 Mar 2025 10:07:02 -0300 Subject: [PATCH 3/3] mcuboot: build MCUboot Espressif Port with Zephyr sysbuild Skip building the hal sources from zephyr//CMakeLists.txt when building MCUboot Espressif port from Zephyr's sysbuild as it already have it's own way for integrating the Espressif hal. Change ESP_LOG for ESP_EARLY_LOG on bootloader files used by MCUboot Espressif port. Signed-off-by: Lucas Tamborrino Signed-off-by: Almir Okato --- .../include/esp_flash_partitions.h | 4 +++ .../src/esp32/bootloader_esp32.c | 32 +++++++++---------- .../src/esp32c2/bootloader_esp32c2.c | 4 +-- .../src/esp32c3/bootloader_esp32c3.c | 6 ++-- .../src/esp32c6/bootloader_esp32c6.c | 6 ++-- .../src/esp32s2/bootloader_esp32s2.c | 28 ++++++++-------- .../src/esp32s3/bootloader_esp32s3.c | 28 ++++++++-------- components/esp_common/include/esp_compiler.h | 2 ++ components/esp_hw_support/include/esp_cpu.h | 10 ++++++ zephyr/CMakeLists.txt | 4 +++ zephyr/esp32c6/CMakeLists.txt | 2 +- 11 files changed, 73 insertions(+), 53 deletions(-) diff --git a/components/bootloader_support/include/esp_flash_partitions.h b/components/bootloader_support/include/esp_flash_partitions.h index 450983cb4d..0c4c34c1d6 100644 --- a/components/bootloader_support/include/esp_flash_partitions.h +++ b/components/bootloader_support/include/esp_flash_partitions.h @@ -8,7 +8,9 @@ #include "esp_err.h" #include "esp_types.h" #include "sdkconfig.h" +#ifndef CONFIG_MCUBOOT_ESPRESSIF #include +#endif #ifdef __cplusplus extern "C" { @@ -38,7 +40,9 @@ extern "C" { /* The md5sum value is found this many bytes after the ESP_PARTITION_MAGIC_MD5 offset */ #define ESP_PARTITION_MD5_OFFSET 16 +#ifndef CONFIG_MCUBOOT_ESPRESSIF #define CONFIG_BOOTLOADER_OFFSET_IN_FLASH FIXED_PARTITION_OFFSET(boot_partition) /* Offset of bootloader image. */ +#endif /* Pre-partition table fixed flash offsets */ #define ESP_BOOTLOADER_DIGEST_OFFSET 0x0 diff --git a/components/bootloader_support/src/esp32/bootloader_esp32.c b/components/bootloader_support/src/esp32/bootloader_esp32.c index ddea3ee159..81228d84ae 100644 --- a/components/bootloader_support/src/esp32/bootloader_esp32.c +++ b/components/bootloader_support/src/esp32/bootloader_esp32.c @@ -73,7 +73,7 @@ static esp_err_t bootloader_check_rated_cpu_clock(void) { int rated_freq = bootloader_clock_get_rated_freq_mhz(); if (rated_freq < CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ) { - ESP_LOGE(TAG, "Chip CPU frequency rated for %dMHz, configured for %dMHz. Modify CPU frequency in menuconfig", + ESP_EARLY_LOGE(TAG, "Chip CPU frequency rated for %dMHz, configured for %dMHz. Modify CPU frequency in menuconfig", rated_freq, CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ); return ESP_FAIL; } @@ -119,19 +119,19 @@ static void wdt_reset_info_dump(int cpu) if (DPORT_RECORD_PDEBUGINST_SZ(inst) == 0 && DPORT_RECORD_PDEBUGSTATUS_BBCAUSE(dstat) == DPORT_RECORD_PDEBUGSTATUS_BBCAUSE_WAITI) { - ESP_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32" (waiti mode)", cpu_name, pc); + ESP_EARLY_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32" (waiti mode)", cpu_name, pc); } else { - ESP_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32, cpu_name, pc); + ESP_EARLY_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32, cpu_name, pc); } - ESP_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); } static void bootloader_check_wdt_reset(void) @@ -143,12 +143,12 @@ static void bootloader_check_wdt_reset(void) rst_reas[1] = esp_rom_get_reset_reason(1); if (rst_reas[0] == RESET_REASON_CORE_RTC_WDT || rst_reas[0] == RESET_REASON_CORE_MWDT0 || rst_reas[0] == RESET_REASON_CORE_MWDT1 || rst_reas[0] == RESET_REASON_CPU0_MWDT0 || rst_reas[0] == RESET_REASON_CPU0_RTC_WDT) { - ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (rst_reas[1] == RESET_REASON_CORE_RTC_WDT || rst_reas[1] == RESET_REASON_CORE_MWDT0 || rst_reas[1] == RESET_REASON_CORE_MWDT1 || rst_reas[1] == RESET_REASON_CPU1_MWDT1 || rst_reas[1] == RESET_REASON_CPU1_RTC_WDT) { - ESP_LOGW(TAG, "APP CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "APP CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -190,7 +190,7 @@ esp_err_t bootloader_init(void) // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -215,7 +215,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM diff --git a/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c b/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c index c54da7eb74..f23077ee86 100644 --- a/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c +++ b/components/bootloader_support/src/esp32c2/bootloader_esp32c2.c @@ -62,7 +62,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -107,7 +107,7 @@ esp_err_t bootloader_init(void) // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif diff --git a/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c b/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c index 0a6a5925fc..ba44781e51 100644 --- a/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c +++ b/components/bootloader_support/src/esp32c3/bootloader_esp32c3.c @@ -67,7 +67,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CORE_MWDT1 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT1 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -146,7 +146,7 @@ esp_err_t bootloader_init(void) // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -167,7 +167,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM diff --git a/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c b/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c index 1e2b4ce501..0847196b7c 100644 --- a/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c +++ b/components/bootloader_support/src/esp32c6/bootloader_esp32c6.c @@ -68,7 +68,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CORE_MWDT1 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT1 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -130,7 +130,7 @@ esp_err_t bootloader_init(void) // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -151,7 +151,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM diff --git a/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c b/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c index cf2a27fe65..9dd3fe74cb 100644 --- a/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c +++ b/components/bootloader_support/src/esp32s2/bootloader_esp32s2.c @@ -67,19 +67,19 @@ static void wdt_reset_info_dump(int cpu) if (DPORT_RECORD_PDEBUGINST_SZ(inst) == 0 && DPORT_RECORD_PDEBUGSTATUS_BBCAUSE(dstat) == DPORT_RECORD_PDEBUGSTATUS_BBCAUSE_WAITI) { - ESP_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32" (waiti mode)", cpu_name, pc); + ESP_EARLY_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32" (waiti mode)", cpu_name, pc); } else { - ESP_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32, cpu_name, pc); + ESP_EARLY_LOGW(TAG, "WDT reset info: %s CPU PC=0x%"PRIx32, cpu_name, pc); } - ESP_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); } static void bootloader_check_wdt_reset(void) @@ -88,7 +88,7 @@ static void bootloader_check_wdt_reset(void) soc_reset_reason_t rst_reason = esp_rom_get_reset_reason(0); if (rst_reason == RESET_REASON_CORE_RTC_WDT || rst_reason == RESET_REASON_CORE_MWDT0 || rst_reason == RESET_REASON_CORE_MWDT1 || rst_reason == RESET_REASON_CPU0_MWDT0 || rst_reason == RESET_REASON_CPU0_MWDT1 || rst_reason == RESET_REASON_CPU0_RTC_WDT) { - ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -126,7 +126,7 @@ esp_err_t bootloader_init(void) // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -150,7 +150,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM diff --git a/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c b/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c index d6f650d1f8..ab6f67d121 100644 --- a/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c +++ b/components/bootloader_support/src/esp32s3/bootloader_esp32s3.c @@ -78,20 +78,20 @@ static void wdt_reset_info_dump(int cpu) lsaddr = REG_READ(ASSIST_DEBUG_CORE_1_RCD_PDEBUGLS0ADDR_REG); lsdata = REG_READ(ASSIST_DEBUG_CORE_1_RCD_PDEBUGLS0DATA_REG); #else - ESP_LOGE(TAG, "WDT reset info: %s CPU not support!\n", cpu_name); + ESP_EARLY_LOGE(TAG, "WDT reset info: %s CPU not support!\n", cpu_name); return; #endif } - ESP_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); - ESP_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU STATUS 0x%08"PRIx32, cpu_name, stat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PID 0x%08"PRIx32, cpu_name, pid); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGINST 0x%08"PRIx32, cpu_name, inst); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGSTATUS 0x%08"PRIx32, cpu_name, dstat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGDATA 0x%08"PRIx32, cpu_name, data); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGPC 0x%08"PRIx32, cpu_name, pc); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0STAT 0x%08"PRIx32, cpu_name, lsstat); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0ADDR 0x%08"PRIx32, cpu_name, lsaddr); + ESP_EARLY_LOGD(TAG, "WDT reset info: %s CPU PDEBUGLS0DATA 0x%08"PRIx32, cpu_name, lsdata); } static void bootloader_check_wdt_reset(void) @@ -103,12 +103,12 @@ static void bootloader_check_wdt_reset(void) rst_reas[1] = esp_rom_get_reset_reason(1); if (rst_reas[0] == RESET_REASON_CORE_RTC_WDT || rst_reas[0] == RESET_REASON_CORE_MWDT0 || rst_reas[0] == RESET_REASON_CORE_MWDT1 || rst_reas[0] == RESET_REASON_CPU0_MWDT0 || rst_reas[0] == RESET_REASON_CPU0_RTC_WDT) { - ESP_LOGW(TAG, "PRO CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "PRO CPU has been reset by WDT."); wdt_rst = 1; } if (rst_reas[1] == RESET_REASON_CORE_RTC_WDT || rst_reas[1] == RESET_REASON_CORE_MWDT0 || rst_reas[1] == RESET_REASON_CORE_MWDT1 || rst_reas[1] == RESET_REASON_CPU1_MWDT1 || rst_reas[1] == RESET_REASON_CPU1_RTC_WDT) { - ESP_LOGW(TAG, "APP CPU has been reset by WDT."); + ESP_EARLY_LOGW(TAG, "APP CPU has been reset by WDT."); wdt_rst = 1; } if (wdt_rst) { @@ -165,7 +165,7 @@ esp_err_t bootloader_init(void) // init eFuse virtual mode (read eFuses to RAM) #ifdef CONFIG_EFUSE_VIRTUAL - ESP_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); + ESP_EARLY_LOGW(TAG, "eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!"); #ifndef CONFIG_EFUSE_VIRTUAL_KEEP_IN_FLASH esp_efuse_init_virtual_mode_in_ram(); #endif @@ -186,7 +186,7 @@ esp_err_t bootloader_init(void) bootloader_flash_update_id(); // Check and run XMC startup flow if ((ret = bootloader_flash_xmc_startup()) != ESP_OK) { - ESP_LOGE(TAG, "failed when running XMC startup flow, reboot!"); + ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return ret; } #if !CONFIG_APP_BUILD_TYPE_RAM diff --git a/components/esp_common/include/esp_compiler.h b/components/esp_common/include/esp_compiler.h index 5cf794fa25..212cb667c6 100644 --- a/components/esp_common/include/esp_compiler.h +++ b/components/esp_common/include/esp_compiler.h @@ -6,7 +6,9 @@ #pragma once +#ifndef CONFIG_MCUBOOT_ESPRESSIF #include +#endif /* * Utility macros used for designated initializers, which work differently diff --git a/components/esp_hw_support/include/esp_cpu.h b/components/esp_hw_support/include/esp_cpu.h index 36f9d7ba40..57ecba429a 100644 --- a/components/esp_hw_support/include/esp_cpu.h +++ b/components/esp_hw_support/include/esp_cpu.h @@ -6,7 +6,9 @@ #pragma once +#ifndef CONFIG_MCUBOOT_ESPRESSIF #include +#endif #include "sdkconfig.h" #include @@ -373,7 +375,11 @@ FORCE_INLINE_ATTR void *esp_cpu_intr_get_handler_arg(int intr_num) FORCE_INLINE_ATTR void esp_cpu_intr_enable(uint32_t intr_mask) { #ifdef __XTENSA__ +#ifndef CONFIG_MCUBOOT_ESPRESSIF z_xt_ints_on(intr_mask); +#else + xt_ints_on(intr_mask); +#endif #else rv_utils_intr_enable(intr_mask); #endif @@ -387,7 +393,11 @@ FORCE_INLINE_ATTR void esp_cpu_intr_enable(uint32_t intr_mask) FORCE_INLINE_ATTR void esp_cpu_intr_disable(uint32_t intr_mask) { #ifdef __XTENSA__ +#ifndef CONFIG_MCUBOOT_ESPRESSIF z_xt_ints_off(intr_mask); +#else + xt_ints_off(intr_mask); +#endif #else rv_utils_intr_disable(intr_mask); #endif diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index aa23d6c0c2..ec875c7431 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -1,5 +1,9 @@ # SPDX-License-Identifier: Apache-2.0 +if(CONFIG_MCUBOOT_ESPRESSIF) + return() +endif() + add_subdirectory_ifdef(CONFIG_SOC_SERIES_ESP32 esp32) add_subdirectory_ifdef(CONFIG_SOC_SERIES_ESP32C2 esp32c2) add_subdirectory_ifdef(CONFIG_SOC_SERIES_ESP32C3 esp32c3) diff --git a/zephyr/esp32c6/CMakeLists.txt b/zephyr/esp32c6/CMakeLists.txt index e6c545b53b..79ad77497a 100644 --- a/zephyr/esp32c6/CMakeLists.txt +++ b/zephyr/esp32c6/CMakeLists.txt @@ -353,7 +353,7 @@ if(CONFIG_SOC_SERIES_ESP32C6) ../../components/efuse/${CONFIG_SOC_SERIES}/esp_efuse_utility.c ) endif() - + if(CONFIG_SOC_ESP32C6_LPCORE) zephyr_compile_definitions(IS_ULP_COCPU) zephyr_ld_options("-nostartfiles")