diff --git a/CMakeLists.txt b/CMakeLists.txt index bbe9b7219..6fd1ff56b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -218,16 +218,17 @@ elseif((FREERTOS_PORT STREQUAL "A_CUSTOM_PORT") AND (NOT TARGET freertos_kernel_ " port.c\n" " portmacro.h\n" " Where FreeRTOSCustomPort/CMakeLists.txt is a modified version of:\n" - " add_library(freertos_kernel_port STATIC)\n" + " add_library(freertos_kernel_port OBJECT)\n" " target_sources(freertos_kernel_port\n" " PRIVATE\n" " port.c\n" " portmacro.h)\n" - " target_include_directories(freertos_kernel_port\n" - " PUBLIC\n" + " add_library(freertos_kernel_port_headers INTERFACE)\n" + " target_include_directories(freertos_kernel_port_headers INTERFACE \n" " .)\n" " target_link_libraries(freertos_kernel_port\n" " PRIVATE\n" + " freertos_kernel_port_headers\n" " freertos_kernel_include)") endif() @@ -258,8 +259,11 @@ endif() target_link_libraries(freertos_kernel PUBLIC - freertos_kernel_port freertos_kernel_include + freertos_kernel_port_headers + PRIVATE + freertos_kernel_port + ) ######################################################################## diff --git a/examples/template_configuration/FreeRTOSConfig.h b/examples/template_configuration/FreeRTOSConfig.h index a672600ff..14aa3b24b 100644 --- a/examples/template_configuration/FreeRTOSConfig.h +++ b/examples/template_configuration/FreeRTOSConfig.h @@ -531,6 +531,38 @@ * setting configKERNEL_PROVIDED_STATIC_MEMORY to 0 or leaving it undefined. */ #define configKERNEL_PROVIDED_STATIC_MEMORY 1 +/******************************************************************************/ +/* ARMv8-M port Specific Configuration definitions. ***************************/ +/******************************************************************************/ + +/* Set configENABLE_TRUSTZONE to 1 when running FreeRTOS on the non-secure side + * to enable the TrustZone support in FreeRTOS ARMv8-M ports which allows the + * non-secure FreeRTOS tasks to call the (non-secure callable) functions + * exported from secure side. */ +#define configENABLE_TRUSTZONE 1 + +/* If the application writer does not want to use TrustZone, but the hardware does + * not support disabling TrustZone then the entire application (including the FreeRTOS + * scheduler) can run on the secure side without ever branching to the non-secure side. + * To do that, in addition to setting configENABLE_TRUSTZONE to 0, also set + * configRUN_FREERTOS_SECURE_ONLY to 1. */ +#define configRUN_FREERTOS_SECURE_ONLY 1 + +/* Set configENABLE_MPU to 1 to enable the Memory Protection Unit (MPU), or 0 + * to leave the Memory Protection Unit disabled. */ +#define configENABLE_MPU 1 + +/* Set configENABLE_FPU to 1 to enable the Floating Point Unit (FPU), or 0 + * to leave the Floating Point Unit disabled. */ +#define configENABLE_FPU 1 + +/* Set configENABLE_MVE to 1 to enable the M-Profile Vector Extension (MVE) support, + * or 0 to leave the MVE support disabled. This option is only applicable to Cortex-M55 + * and Cortex-M85 ports as M-Profile Vector Extension (MVE) is available only on + * these architectures. configENABLE_MVE must be left undefined, or defined to 0 + * for the Cortex-M23,Cortex-M33 and Cortex-M35P ports. */ +#define configENABLE_MVE 1 + /******************************************************************************/ /* Definitions that include or exclude functionality. *************************/ /******************************************************************************/ diff --git a/portable/CMakeLists.txt b/portable/CMakeLists.txt index 55acbc34f..452340e74 100644 --- a/portable/CMakeLists.txt +++ b/portable/CMakeLists.txt @@ -15,7 +15,7 @@ endif() # FreeRTOS internal cmake file. Do not use it in user top-level project -add_library(freertos_kernel_port STATIC +add_library(freertos_kernel_port OBJECT # TEMPLATE Port $<$: template/port.c> @@ -760,8 +760,9 @@ if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR Common/mpu_wrappers_v2.c ) endif() +add_library(freertos_kernel_port_headers INTERFACE) -target_include_directories(freertos_kernel_port PUBLIC +target_include_directories(freertos_kernel_port_headers INTERFACE # TEMPLATE Port $<$:${CMAKE_CURRENT_LIST_DIR}/template> @@ -1100,6 +1101,7 @@ target_link_libraries(freertos_kernel_port PUBLIC $<$:pico_base_headers> $<$:idf::esp32> + freertos_kernel_port_headers PRIVATE freertos_kernel_include $<$:Threads::Threads>