Merge branch 'bugfix/log_mixing_at_startup' into 'master'

fix(esp_system): Fixes mixing logs when two cores use esp_rom_printf

Closes IDF-7891

See merge request espressif/esp-idf!25996
This commit is contained in:
Konstantin Kondrashov
2023-10-05 21:06:14 +08:00
3 changed files with 6 additions and 7 deletions

View File

@@ -233,7 +233,7 @@ void IRAM_ATTR call_start_cpu1(void)
#endif #endif
s_cpu_up[1] = true; s_cpu_up[1] = true;
ESP_EARLY_LOGI(TAG, "App cpu up."); ESP_EARLY_LOGD(TAG, "App cpu up");
// Clear interrupt matrix for APP CPU core // Clear interrupt matrix for APP CPU core
core_intr_matrix_clear(); core_intr_matrix_clear();
@@ -271,7 +271,7 @@ static void start_other_core(void)
abort(); abort();
} }
ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1); ESP_EARLY_LOGD(TAG, "Starting app cpu, entry point is %p", call_start_cpu1);
#if CONFIG_IDF_TARGET_ESP32 && !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP #if CONFIG_IDF_TARGET_ESP32 && !CONFIG_APP_BUILD_TYPE_PURE_RAM_APP
Cache_Flush(1); Cache_Flush(1);
@@ -315,7 +315,6 @@ static void start_other_core(void)
for (int i = 0; i < SOC_CPU_CORES_NUM; i++) { for (int i = 0; i < SOC_CPU_CORES_NUM; i++) {
cpus_up &= s_cpu_up[i]; cpus_up &= s_cpu_up[i];
} }
//TODO: IDF-7891, check mixing logs
esp_rom_delay_us(100); esp_rom_delay_us(100);
} }
} }
@@ -571,7 +570,7 @@ void IRAM_ATTR call_start_cpu0(void)
s_cpu_up[0] = true; s_cpu_up[0] = true;
#endif #endif
ESP_EARLY_LOGI(TAG, "Pro cpu up."); ESP_EARLY_LOGD(TAG, "Pro cpu up");
#if SOC_CPU_CORES_NUM > 1 // there is no 'single-core mode' for natively single-core processors #if SOC_CPU_CORES_NUM > 1 // there is no 'single-core mode' for natively single-core processors
#if !CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE #if !CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE

View File

@@ -96,7 +96,7 @@ void esp_startup_start_app(void)
port_start_app_hook(); port_start_app_hook();
} }
ESP_EARLY_LOGI(APP_START_TAG, "Starting scheduler on CPU0"); ESP_EARLY_LOGD(APP_START_TAG, "Starting scheduler on CPU0");
vTaskStartScheduler(); vTaskStartScheduler();
} }
@@ -130,7 +130,7 @@ void esp_startup_start_app_other_cores(void)
// Initialize the cross-core interrupt on CPU1 // Initialize the cross-core interrupt on CPU1
esp_crosscore_int_init(); esp_crosscore_int_init();
ESP_EARLY_LOGI(APP_START_TAG, "Starting scheduler on CPU%d", xPortGetCoreID()); ESP_EARLY_LOGD(APP_START_TAG, "Starting scheduler on CPU%d", xPortGetCoreID());
xPortStartScheduler(); xPortStartScheduler();
abort(); // Only get to here if FreeRTOS somehow very broken abort(); // Only get to here if FreeRTOS somehow very broken
} }

View File

@@ -14,7 +14,7 @@ from pytest_embedded_idf.dut import IdfDut
@pytest.mark.generic @pytest.mark.generic
@pytest.mark.parametrize('config', ['pure_ram',], indirect=True,) @pytest.mark.parametrize('config', ['pure_ram',], indirect=True,)
def test_pure_ram_loadable_app(dut: IdfDut) -> None: def test_pure_ram_loadable_app(dut: IdfDut) -> None:
dut.expect('app_start: Starting scheduler', timeout=10) dut.expect('main_task: Calling app_main()', timeout=10)
dut.expect('Time since boot: 3 seconds...', timeout=10) dut.expect('Time since boot: 3 seconds...', timeout=10)