Merge branch 'refactor/esp_ipc' into 'master'

Split esp_ipc to a seaparate component

Closes IDF-1295

See merge request espressif/esp-idf!8520
This commit is contained in:
Angus Gratton 2020-05-25 15:03:04 +08:00
commit 084e170a8f
41 changed files with 61 additions and 54 deletions

View file

@ -539,13 +539,15 @@ if(CONFIG_BT_ENABLED)
endif()
endif()
endif()
# requirements can't depend on config
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "${include_dirs}"
PRIV_INCLUDE_DIRS "${priv_include_dirs}"
REQUIRES nvs_flash soc esp_timer)
REQUIRES nvs_flash soc esp_timer
PRIV_REQUIRES esp_ipc)
if(CONFIG_BT_ENABLED)
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough -Wno-unused-const-variable)

View file

@ -53,7 +53,7 @@ TEST_CASE("can use std::vector", "[cxx]")
*/
#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
TEST_CASE("c++ exceptions work", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ exceptions work", "[cxx] [exceptions] [leaks=816]")
{
int thrown_value;
try {
@ -65,7 +65,7 @@ TEST_CASE("c++ exceptions work", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ bool exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ bool exception", "[cxx] [exceptions] [leaks=816]")
{
bool thrown_value = false;
try {
@ -77,7 +77,7 @@ TEST_CASE("c++ bool exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ void exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ void exception", "[cxx] [exceptions] [leaks=816]")
{
void* thrown_value = 0;
try {
@ -89,7 +89,7 @@ TEST_CASE("c++ void exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ uint64_t exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ uint64_t exception", "[cxx] [exceptions] [leaks=816]")
{
uint64_t thrown_value = 0;
try {
@ -101,7 +101,7 @@ TEST_CASE("c++ uint64_t exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ char exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ char exception", "[cxx] [exceptions] [leaks=816]")
{
char thrown_value = '0';
try {
@ -113,7 +113,7 @@ TEST_CASE("c++ char exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ wchar exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ wchar exception", "[cxx] [exceptions] [leaks=816]")
{
wchar_t thrown_value = 0;
try {
@ -125,7 +125,7 @@ TEST_CASE("c++ wchar exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ float exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ float exception", "[cxx] [exceptions] [leaks=816]")
{
float thrown_value = 0;
try {
@ -137,7 +137,7 @@ TEST_CASE("c++ float exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ double exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ double exception", "[cxx] [exceptions] [leaks=816]")
{
double thrown_value = 0;
try {
@ -149,7 +149,7 @@ TEST_CASE("c++ double exception", "[cxx] [exceptions] [leaks=800]")
printf("OK?\n");
}
TEST_CASE("c++ const char* exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ const char* exception", "[cxx] [exceptions] [leaks=816]")
{
const char *thrown_value = 0;
try {
@ -167,7 +167,7 @@ public:
NonExcTypeThrowee(int value) : value(value) { }
};
TEST_CASE("c++ any class exception", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ any class exception", "[cxx] [exceptions] [leaks=816]")
{
int thrown_value = 0;
try {
@ -185,7 +185,7 @@ public:
ExcTypeThrowee(int value) : value(value) { }
};
TEST_CASE("c++ std::exception child", "[cxx] [exceptions] [leaks=800]")
TEST_CASE("c++ std::exception child", "[cxx] [exceptions] [leaks=816]")
{
int thrown_value = 0;
try {

View file

@ -48,7 +48,7 @@ endif()
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS ${includes}
PRIV_INCLUDE_DIRS "include/driver"
PRIV_REQUIRES efuse esp_timer
PRIV_REQUIRES efuse esp_timer esp_ipc
REQUIRES esp_ringbuf freertos soc) #cannot totally hide soc headers, since there are a lot arguments in the driver are chip-dependent
# uses C11 atomic feature

View file

@ -36,7 +36,7 @@ else()
# app_update is added here because cpu_start.c uses esp_ota_get_app_description() function.
# esp_timer is added here because cpu_start.c uses esp_timer
set(priv_requires app_trace app_update bootloader_support log mbedtls nvs_flash pthread
spi_flash vfs espcoredump esp_common perfmon esp_timer)
spi_flash vfs espcoredump esp_common perfmon esp_timer esp_ipc)
set(fragments linker.lf ld/esp32_fragments.lf)
idf_component_register(SRCS "${srcs}"

View file

@ -50,7 +50,6 @@
#include "nvs_flash.h"
#include "esp_event.h"
#include "esp_spi_flash.h"
#include "esp_ipc.h"
#include "esp_private/crosscore_int.h"
#include "esp_log.h"
#include "esp_vfs_dev.h"

View file

@ -17,14 +17,10 @@ else()
"src/task_wdt.c"
"src/int_wdt.c")
# IPC framework is not applicable if freertos unicore config is selected
if(NOT CONFIG_FREERTOS_UNICORE)
list(APPEND srcs "src/ipc.c")
endif()
# Note: esp_ipc added as a public requirement to keep compatibility as to be located here.
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS include
REQUIRES ${target} espcoredump esp_timer
REQUIRES ${target} espcoredump esp_timer esp_ipc
PRIV_REQUIRES soc
LDFRAGMENTS "linker.lf")

View file

@ -5,10 +5,5 @@
COMPONENT_ADD_INCLUDEDIRS := include
COMPONENT_SRCDIRS := src
# IPC framework is not applicable if freertos unicore config is selected
ifdef CONFIG_FREERTOS_UNICORE
COMPONENT_OBJEXCLUDE := src/ipc.o
endif
# disable stack protection in files which are involved in initialization of that feature
src/stack_check.o: CFLAGS := $(filter-out -fstack-protector%, $(CFLAGS))

View file

@ -0,0 +1,2 @@
idf_component_register(SRCS "ipc.c"
INCLUDE_DIRS "include")

View file

@ -0,0 +1,3 @@
#
# Component Makefile
#

View file

@ -0,0 +1,6 @@
if(IDF_TARGET STREQUAL "esp32")
idf_component_register(SRC_DIRS "."
PRIV_INCLUDE_DIRS "."
PRIV_REQUIRES unity test_utils)
endif()

View file

@ -0,0 +1 @@
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive

View file

@ -1,11 +1,13 @@
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "unity.h"
#if !CONFIG_FREERTOS_UNICORE
#include "esp_ipc.h"
#endif
#include "esp_log.h"
#include "sdkconfig.h"
#if !CONFIG_FREERTOS_UNICORE
static void test_func_ipc_cb(void *arg)
@ -120,6 +122,6 @@ TEST_CASE("Test multiple ipc_calls", "[ipc]")
}
}
}
#endif /* !CONFIG_FREERTOS_UNICORE */
#endif /* CONFIG_ESP_IPC_USE_CALLERS_PRIORITY */
#endif // CONFIG_ESP_IPC_USE_CALLERS_PRIORITY
#endif /* !CONFIG_FREERTOS_UNICORE */

View file

@ -704,7 +704,6 @@ TEST_CASE("Can start/stop timer from ISR context", "[esp_timer]")
#include "soc/dport_reg.h"
#include "soc/frc_timer_reg.h"
#include "esp_ipc.h"
static bool task_stop;
static bool time_jumped;

View file

@ -1,4 +1,4 @@
idf_component_register(SRC_DIRS .
PRIV_INCLUDE_DIRS .
PRIV_REQUIRES unity test_utils
PRIV_REQUIRES unity test_utils esp_ipc
)

View file

@ -2,7 +2,6 @@
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "unity.h"
#include "esp_ipc.h"
#include "test_utils.h"
static void mutex_release_task(void* arg)

View file

@ -11,7 +11,9 @@
#include "freertos/task.h"
#include <freertos/semphr.h>
#include "driver/timer.h"
#ifndef CONFIG_FREERTOS_UNICORE
#include "esp_ipc.h"
#endif
#include "unity.h"
#include "test_utils.h"

View file

@ -1,7 +1,7 @@
/* Tests for FreeRTOS task suspend & resume */
#include <stdio.h>
#include <string.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
@ -14,9 +14,11 @@
#include "driver/timer.h"
#ifndef CONFIG_FREERTOS_UNICORE
#include "esp_ipc.h"
#endif
#include "esp_freertos_hooks.h"
#include "sdkconfig.h"
#ifdef CONFIG_IDF_TARGET_ESP32S2
#define int_clr_timers int_clr

View file

@ -41,7 +41,7 @@ else()
"spi_flash_os_func_noos.c")
list(APPEND srcs ${cache_srcs})
set(priv_requires bootloader_support app_update soc)
set(priv_requires bootloader_support app_update soc esp_ipc)
endif()
idf_component_register(SRCS "${srcs}"

View file

@ -32,7 +32,9 @@
#include <soc/soc.h>
#include <soc/dport_reg.h>
#include "sdkconfig.h"
#ifndef CONFIG_FREERTOS_UNICORE
#include "esp_ipc.h"
#endif
#include "esp_attr.h"
#include "esp_intr_alloc.h"
#include "esp_spi_flash.h"

View file

@ -24,7 +24,6 @@
#include <soc/dport_reg.h>
#include <soc/soc_memory_layout.h>
#include "sdkconfig.h"
#include "esp_ipc.h"
#include "esp_attr.h"
#include "esp_spi_flash.h"
#include "esp_flash_encrypt.h"

View file

@ -25,7 +25,6 @@
#include <soc/dport_reg.h>
#include <soc/soc_memory_layout.h>
#include "sdkconfig.h"
#include "esp_ipc.h"
#include "esp_attr.h"
#include "esp_spi_flash.h"
#include "esp_log.h"

View file

@ -232,7 +232,7 @@ INPUT = \
## Hooks
$(IDF_PATH)/components/esp_common/include/esp_freertos_hooks.h \
## Inter-Processor Call
$(IDF_PATH)/components/esp_common/include/esp_ipc.h \
$(IDF_PATH)/components/esp_ipc/include/esp_ipc.h \
## Call Function with External stack
$(IDF_PATH)/components/esp_common/include/esp_expression_with_stack.h \
## Over The Air Updates (OTA)

View file

@ -6,6 +6,6 @@ idf_component_register(SRCS "ccomp_timer.c"
INCLUDE_DIRS include
PRIV_INCLUDE_DIRS private_include
REQUIRES spi_flash idf_test unity
PRIV_REQUIRES perfmon)
PRIV_REQUIRES perfmon esp_ipc)

View file

@ -21,7 +21,6 @@
#include "freertos/semphr.h"
#include "esp_log.h"
#include "esp_ipc.h"
#include "esp_intr_alloc.h"
#if CONFIG_IDF_TARGET_ESP32

View file

@ -26,7 +26,6 @@
#include "xtensa/core-macros.h"
#include "xtensa/xt_perf_consts.h"
#include "xtensa-debug-module.h"
#include "esp_ipc.h"
#if CONFIG_IDF_TARGET_ESP32
#include "esp32/clk.h"

View file

@ -1,3 +1,3 @@
idf_component_register(SRC_DIRS "."
PRIV_INCLUDE_DIRS "."
PRIV_REQUIRES unity test_utils perfmon)
PRIV_REQUIRES unity test_utils perfmon esp_ipc)

View file

@ -9,7 +9,9 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#ifndef CONFIG_FREERTOS_UNICORE
#include "esp_ipc.h"
#endif
#include "unity.h"

View file

@ -8,7 +8,6 @@
#include "eri.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_ipc.h"
#if CONFIG_IDF_TARGET_ESP32

View file

@ -1,3 +1,3 @@
# This config is split between targets since different component needs to be included (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32"
TEST_COMPONENTS=freertos esp32 esp_timer driver heap pthread soc spi_flash vfs
TEST_COMPONENTS=freertos esp32 esp_ipc esp_timer driver heap pthread soc spi_flash vfs

View file

@ -1,3 +1,3 @@
# This config is split between targets since different component needs to be excluded (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32 esp_timer driver heap pthread soc spi_flash vfs test_utils
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32 esp_ipc esp_timer driver heap pthread soc spi_flash vfs test_utils

View file

@ -1,3 +1,3 @@
# This config is split between targets since different component needs to be excluded (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32s2"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32s2 esp_timer driver heap pthread soc spi_flash vfs
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32s2 esp_ipc esp_timer driver heap pthread soc spi_flash vfs

View file

@ -1,4 +1,4 @@
# This config is split between targets since different component needs to be included (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32"
TEST_COMPONENTS=driver esp32 esp_timer spi_flash
TEST_COMPONENTS=driver esp32 esp_ipc esp_timer spi_flash
CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE=y

View file

@ -1,5 +1,5 @@
CONFIG_IDF_TARGET="esp32"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update driver esp32 esp_timer mbedtls spi_flash test_utils heap pthread soc
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update driver esp32 esp_ipc esp_timer mbedtls spi_flash test_utils heap pthread soc
CONFIG_ESP32_SPIRAM_SUPPORT=y
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
CONFIG_SPIRAM_OCCUPY_NO_HOST=y

View file

@ -1,5 +1,5 @@
CONFIG_IDF_TARGET="esp32"
TEST_COMPONENTS=esp32 esp_timer mbedtls spi_flash heap pthread soc
TEST_COMPONENTS=esp32 esp_ipc esp_timer mbedtls spi_flash heap pthread soc
CONFIG_ESP32_SPIRAM_SUPPORT=y
CONFIG_ESP_INT_WDT_TIMEOUT_MS=800
CONFIG_SPIRAM_OCCUPY_NO_HOST=y

View file

@ -1,5 +1,5 @@
CONFIG_IDF_TARGET="esp32"
TEST_COMPONENTS=freertos esp32 esp_timer driver heap pthread soc spi_flash vfs
TEST_COMPONENTS=freertos esp32 esp_ipc esp_timer driver heap pthread soc spi_flash vfs
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y

View file

@ -1,6 +1,6 @@
# This config is split between targets since different component needs to be included (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32 esp_timer driver heap pthread soc spi_flash vfs test_utils
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32 esp_ipc esp_timer driver heap pthread soc spi_flash vfs test_utils
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y

View file

@ -1,6 +1,6 @@
# This config is split between targets since different component needs to be excluded (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32s2"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32s2 esp_timer driver heap pthread soc spi_flash vfs test_utils
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32s2 esp_ipc esp_timer driver heap pthread soc spi_flash vfs test_utils
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y

View file

@ -1,6 +1,6 @@
# This config is split between targets since different component needs to be excluded (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32 esp_timer driver heap pthread soc spi_flash vfs test_utils
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32 esp_ipc esp_timer driver heap pthread soc spi_flash vfs test_utils
CONFIG_MEMMAP_SMP=n
CONFIG_FREERTOS_UNICORE=y
CONFIG_ESP32_RTCDATA_IN_FAST_MEM=y

View file

@ -1,6 +1,6 @@
# This config is split between targets since different component needs to be excluded (esp32, esp32s2)
CONFIG_IDF_TARGET="esp32s2"
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32s2 esp_timer driver heap pthread soc spi_flash vfs
TEST_EXCLUDE_COMPONENTS=libsodium bt app_update freertos esp32s2 esp_ipc esp_timer driver heap pthread soc spi_flash vfs
CONFIG_MEMMAP_SMP=n
CONFIG_FREERTOS_UNICORE=y
CONFIG_ESP32_RTCDATA_IN_FAST_MEM=y