From a6ac0e8a514c215a450bc0aecf06e5461c607eb3 Mon Sep 17 00:00:00 2001 From: KonstantinKondrashov Date: Mon, 1 Jun 2020 20:33:23 +0800 Subject: [PATCH 1/2] esp32: Reduce using ESP_EARLY_LOGx and move some code after the stdout initialization After setting _GLOBAL_REENT, ESP_LOGIx can be used instead of ESP_EARLY_LOGx. Closes: https://github.com/espressif/esp-idf/issues/5343 --- .../bootloader_support/src/flash_encrypt.c | 10 ++++----- components/efuse/src/esp32/esp_efuse_fields.c | 2 +- components/esp32/cpu_start.c | 21 ++++++++++--------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/components/bootloader_support/src/flash_encrypt.c b/components/bootloader_support/src/flash_encrypt.c index b28249bbf..9ecd4236e 100644 --- a/components/bootloader_support/src/flash_encrypt.c +++ b/components/bootloader_support/src/flash_encrypt.c @@ -50,7 +50,7 @@ void esp_flash_encryption_init_checks() // (this distinction is important on ESP32 ECO3 where write-procted FLASH_CRYPT_CNT also write-protects UART_DL_DIS) return; } - ESP_EARLY_LOGE(TAG, "Flash encryption & Secure Boot together requires FLASH_CRYPT_CNT efuse to be write protected. Fixing now..."); + ESP_LOGE(TAG, "Flash encryption & Secure Boot together requires FLASH_CRYPT_CNT efuse to be write protected. Fixing now..."); esp_flash_write_protect_crypt_cnt(); } } @@ -62,13 +62,13 @@ void esp_flash_encryption_init_checks() mode = esp_get_flash_encryption_mode(); if (mode == ESP_FLASH_ENC_MODE_DEVELOPMENT) { #ifdef CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE - ESP_EARLY_LOGE(TAG, "Flash encryption settings error: app is configured for RELEASE but efuses are set for DEVELOPMENT"); - ESP_EARLY_LOGE(TAG, "Mismatch found in security options in bootloader menuconfig and efuse settings. Device is not secure."); + ESP_LOGE(TAG, "Flash encryption settings error: app is configured for RELEASE but efuses are set for DEVELOPMENT"); + ESP_LOGE(TAG, "Mismatch found in security options in bootloader menuconfig and efuse settings. Device is not secure."); #else - ESP_EARLY_LOGW(TAG, "Flash encryption mode is DEVELOPMENT (not secure)"); + ESP_LOGW(TAG, "Flash encryption mode is DEVELOPMENT (not secure)"); #endif } else if (mode == ESP_FLASH_ENC_MODE_RELEASE) { - ESP_EARLY_LOGI(TAG, "Flash encryption mode is RELEASE"); + ESP_LOGI(TAG, "Flash encryption mode is RELEASE"); } } #endif diff --git a/components/efuse/src/esp32/esp_efuse_fields.c b/components/efuse/src/esp32/esp_efuse_fields.c index 831540a7e..dd665b219 100644 --- a/components/efuse/src/esp32/esp_efuse_fields.c +++ b/components/efuse/src/esp32/esp_efuse_fields.c @@ -72,7 +72,7 @@ void esp_efuse_disable_basic_rom_console(void) { if (!esp_efuse_read_field_bit(ESP_EFUSE_CONSOLE_DEBUG_DISABLE)) { esp_efuse_write_field_cnt(ESP_EFUSE_CONSOLE_DEBUG_DISABLE, 1); - ESP_EARLY_LOGI(TAG, "Disable BASIC ROM Console fallback via efuse..."); + ESP_LOGI(TAG, "Disable BASIC ROM Console fallback via efuse..."); } } diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index 239616b70..27f646c31 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -219,10 +219,6 @@ void IRAM_ATTR call_start_cpu0(void) } ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1); -#ifdef CONFIG_SECURE_FLASH_ENC_ENABLED - esp_flash_encryption_init_checks(); -#endif - //Flush and enable icache for APP CPU Cache_Flush(1); Cache_Read_Enable(1); @@ -363,12 +359,6 @@ void start_cpu0_default(void) #if CONFIG_ESP32_BROWNOUT_DET esp_brownout_init(); #endif -#if CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE - esp_efuse_disable_basic_rom_console(); -#endif -#if CONFIG_SECURE_DISABLE_ROM_DL_MODE - esp_efuse_disable_rom_download_mode(); -#endif rtc_gpio_force_hold_dis_all(); @@ -385,6 +375,17 @@ void start_cpu0_default(void) #else // defined(CONFIG_VFS_SUPPORT_IO) && !defined(CONFIG_ESP_CONSOLE_UART_NONE) _REENT_SMALL_CHECK_INIT(_GLOBAL_REENT); #endif // defined(CONFIG_VFS_SUPPORT_IO) && !defined(CONFIG_ESP_CONSOLE_UART_NONE) + // After setting _GLOBAL_REENT, ESP_LOGIx can be used instead of ESP_EARLY_LOGx. + +#ifdef CONFIG_SECURE_FLASH_ENC_ENABLED + esp_flash_encryption_init_checks(); +#endif +#if CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE + esp_efuse_disable_basic_rom_console(); +#endif +#if CONFIG_SECURE_DISABLE_ROM_DL_MODE + esp_efuse_disable_rom_download_mode(); +#endif esp_timer_init(); esp_set_time_from_rtc(); From 49c9f69eae0fff74f19f4e18baa1e5dc409f214d Mon Sep 17 00:00:00 2001 From: KonstantinKondrashov Date: Mon, 1 Jun 2020 20:39:49 +0800 Subject: [PATCH 2/2] esp32s2: Move some code after the stdout initialization --- components/esp32s2/cpu_start.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/components/esp32s2/cpu_start.c b/components/esp32s2/cpu_start.c index b5c966108..66f4b63e3 100644 --- a/components/esp32s2/cpu_start.c +++ b/components/esp32s2/cpu_start.c @@ -293,15 +293,6 @@ void start_cpu0_default(void) esp_brownout_init(); #endif -#if CONFIG_SECURE_DISABLE_ROM_DL_MODE - err = esp_efuse_disable_rom_download_mode(); - assert(err == ESP_OK && "Failed to disable ROM download mode"); -#endif -#if CONFIG_SECURE_ENABLE_SECURE_ROM_DL_MODE - err = esp_efuse_enable_rom_secure_download_mode(); - assert(err == ESP_OK && "Failed to enable Secure Download mode"); -#endif - rtc_gpio_force_hold_dis_all(); #ifdef CONFIG_VFS_SUPPORT_IO @@ -317,6 +308,16 @@ void start_cpu0_default(void) #else // defined(CONFIG_VFS_SUPPORT_IO) && !defined(CONFIG_ESP_CONSOLE_UART_NONE) _REENT_SMALL_CHECK_INIT(_GLOBAL_REENT); #endif // defined(CONFIG_VFS_SUPPORT_IO) && !defined(CONFIG_ESP_CONSOLE_UART_NONE) + // After setting _GLOBAL_REENT, ESP_LOGIx can be used instead of ESP_EARLY_LOGx. + +#if CONFIG_SECURE_DISABLE_ROM_DL_MODE + err = esp_efuse_disable_rom_download_mode(); + assert(err == ESP_OK && "Failed to disable ROM download mode"); +#endif +#if CONFIG_SECURE_ENABLE_SECURE_ROM_DL_MODE + err = esp_efuse_enable_rom_secure_download_mode(); + assert(err == ESP_OK && "Failed to enable Secure Download mode"); +#endif esp_timer_init(); esp_set_time_from_rtc();