ipc: initialise automatically, if called from the app

This commit is contained in:
Ivan Grokhotkov 2018-09-18 14:37:12 +08:00
parent 2efd6859ed
commit 4ff262ecff
3 changed files with 13 additions and 17 deletions

View file

@ -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();

View file

@ -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
*

View file

@ -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();