diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index 634a63eb0a..93379801b8 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -351,7 +351,6 @@ void start_cpu0_default(void) esp_cache_err_int_init(); esp_crosscore_int_init(); #ifndef CONFIG_FREERTOS_UNICORE - esp_ipc_init(); esp_dport_access_int_init(); #endif spi_flash_init(); diff --git a/components/esp32/include/esp_ipc.h b/components/esp32/include/esp_ipc.h index b229cb3377..477b3d0af4 100644 --- a/components/esp32/include/esp_ipc.h +++ b/components/esp32/include/esp_ipc.h @@ -33,21 +33,6 @@ typedef void (*esp_ipc_func_t)(void* arg); * These APIs can only be used when FreeRTOS scheduler is running. */ - -/* - * Initialize inter-processor call module. This function is called automatically - * on CPU start and should not be called from the application. - * - * This function start two tasks, one on each CPU. These tasks are started - * with high priority. These tasks are normally inactive, waiting until one of - * the esp_ipc_call_* functions to be used. One of these tasks will be - * woken up to execute the callback provided to esp_ipc_call_nonblocking or - * esp_ipc_call_blocking. - */ -/** @cond */ -void esp_ipc_init(); -/** @endcond */ - /** * @brief Execute a function on the given CPU * diff --git a/components/esp32/ipc.c b/components/esp32/ipc.c index d10e8e819e..b54ae2846f 100644 --- a/components/esp32/ipc.c +++ b/components/esp32/ipc.c @@ -72,7 +72,19 @@ static void IRAM_ATTR ipc_task(void* arg) vTaskDelete(NULL); } -void esp_ipc_init() +/* + * Initialize inter-processor call module. This function is called automatically + * on CPU start and should not be called from the application. + * + * This function start two tasks, one on each CPU. These tasks are started + * with high priority. These tasks are normally inactive, waiting until one of + * the esp_ipc_call_* functions to be used. One of these tasks will be + * woken up to execute the callback provided to esp_ipc_call_nonblocking or + * esp_ipc_call_blocking. + */ +static void esp_ipc_init() __attribute__((constructor)); + +static void esp_ipc_init() { s_ipc_mutex = xSemaphoreCreateMutex(); s_ipc_ack = xSemaphoreCreateBinary();