Merge branch 'bugfix/main_task_on_cpu1_startup_failure' into 'master'

freertos: Fix issue with bootup failure in ESP_MAIN_TASK_AFFINITY_CPU1 config

Closes IDFGH-7705

See merge request espressif/esp-idf!18755
This commit is contained in:
Mahavir Jain
2022-07-04 14:54:14 +08:00
2 changed files with 8 additions and 7 deletions

View File

@@ -77,10 +77,10 @@ void esp_startup_start_app_common(void)
}
#if !CONFIG_FREERTOS_UNICORE
static volatile bool s_app_cpu_startup_done = false;
static bool s_app_cpu_startup_idle_hook_cb(void)
static volatile bool s_other_cpu_startup_done = false;
static bool other_cpu_startup_idle_hook_cb(void)
{
s_app_cpu_startup_done = true;
s_other_cpu_startup_done = true;
return true;
}
#endif
@@ -88,12 +88,12 @@ static bool s_app_cpu_startup_idle_hook_cb(void)
static void main_task(void* args)
{
#if !CONFIG_FREERTOS_UNICORE
// Wait for FreeRTOS initialization to finish on APP CPU, before replacing its startup stack
esp_register_freertos_idle_hook_for_cpu(s_app_cpu_startup_idle_hook_cb, 1);
while (!s_app_cpu_startup_done) {
// Wait for FreeRTOS initialization to finish on other core, before replacing its startup stack
esp_register_freertos_idle_hook_for_cpu(other_cpu_startup_idle_hook_cb, !xPortGetCoreID());
while (!s_other_cpu_startup_done) {
;
}
esp_deregister_freertos_idle_hook_for_cpu(s_app_cpu_startup_idle_hook_cb, 1);
esp_deregister_freertos_idle_hook_for_cpu(other_cpu_startup_idle_hook_cb, !xPortGetCoreID());
#endif
// [refactor-todo] check if there is a way to move the following block to esp_system startup

View File

@@ -0,0 +1 @@
CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1=y