From 0a1919abffa6fe203e5f7d53d3d9950a77c8d6a4 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 --- components/bootloader_support/src/flash_encrypt.c | 10 +++++----- components/efuse/src/esp32/esp_efuse_fields.c | 2 +- components/esp32/cpu_start.c | 15 ++++++++------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/components/bootloader_support/src/flash_encrypt.c b/components/bootloader_support/src/flash_encrypt.c index 98438bf12..c61094345 100644 --- a/components/bootloader_support/src/flash_encrypt.c +++ b/components/bootloader_support/src/flash_encrypt.c @@ -36,7 +36,7 @@ void esp_flash_encryption_init_checks() uint8_t flash_crypt_cnt_wr_dis = 0; esp_efuse_read_field_blob(ESP_EFUSE_WR_DIS_FLASH_CRYPT_CNT, &flash_crypt_cnt_wr_dis, 1); if (!flash_crypt_cnt_wr_dis) { - 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(); } } @@ -48,13 +48,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 79d6044b5..fc7026ea9 100644 --- a/components/efuse/src/esp32/esp_efuse_fields.c +++ b/components/efuse/src/esp32/esp_efuse_fields.c @@ -74,7 +74,7 @@ void esp_efuse_disable_basic_rom_console(void) esp_efuse_read_field_blob(ESP_EFUSE_CONSOLE_DEBUG_DISABLE, &console_debug_disable, 1); if (console_debug_disable == 0) { 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 aaf609089..141779d06 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -208,10 +208,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); @@ -352,9 +348,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 rtc_gpio_force_hold_dis_all(); esp_vfs_dev_uart_register(); @@ -368,6 +361,14 @@ void start_cpu0_default(void) _GLOBAL_REENT->_stdin = (FILE*) &__sf_fake_stdin; _GLOBAL_REENT->_stdout = (FILE*) &__sf_fake_stdout; _GLOBAL_REENT->_stderr = (FILE*) &__sf_fake_stderr; +#endif + // 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 esp_timer_init(); esp_set_time_from_rtc(); From e0e391dce3b17273dab84ab18ea2bc1a1b94f9bd 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/esp32s2beta/cpu_start.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/esp32s2beta/cpu_start.c b/components/esp32s2beta/cpu_start.c index 1c8a19607..91d34244c 100644 --- a/components/esp32s2beta/cpu_start.c +++ b/components/esp32s2beta/cpu_start.c @@ -276,9 +276,6 @@ void start_cpu0_default(void) #if CONFIG_ESP32S2_BROWNOUT_DET esp_brownout_init(); -#endif -#if CONFIG_ESP32S2_DISABLE_BASIC_ROM_CONSOLE - esp_efuse_disable_basic_rom_console(); #endif rtc_gpio_force_hold_dis_all(); esp_vfs_dev_uart_register(); @@ -292,6 +289,11 @@ void start_cpu0_default(void) _GLOBAL_REENT->_stdin = (FILE*) &__sf_fake_stdin; _GLOBAL_REENT->_stdout = (FILE*) &__sf_fake_stdout; _GLOBAL_REENT->_stderr = (FILE*) &__sf_fake_stderr; +#endif + // After setting _GLOBAL_REENT, ESP_LOGIx can be used instead of ESP_EARLY_LOGx. + +#if CONFIG_ESP32S2_DISABLE_BASIC_ROM_CONSOLE + esp_efuse_disable_basic_rom_console(); #endif esp_timer_init(); esp_set_time_from_rtc();