diff --git a/components/freertos/CMakeLists.txt b/components/freertos/CMakeLists.txt index d40948ec8aff..f8e31416702c 100644 --- a/components/freertos/CMakeLists.txt +++ b/components/freertos/CMakeLists.txt @@ -33,10 +33,11 @@ set(srcs set(include_dirs "${kernel_dir}/include" # FreeRTOS headers via #include "freertos/xxx.h" - "${kernel_dir}/portable/${arch}/include" # For arch-specific FreeRTOSConfig_arch.h in portable//include + "${kernel_dir}/portable/${arch}/include" # For arch-specific #include "freertos/portmacro.h" "esp_additions/include/freertos" # For files with #include "FreeRTOSConfig.h" - "esp_additions/include") # For files with #include "freertos/FreeRTOSConfig.h" + "esp_additions/include" # For files with #include "freertos/FreeRTOSConfig.h" # or #include "freertos/task_snapshot.h" + "esp_additions/arch/${arch}/include") # For #include "freertos/FreeRTOSConfig_arch.h" set(private_include_dirs "${kernel_dir}/portable/${arch}/include/freertos" diff --git a/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/FreeRTOSConfig_smp.h b/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/FreeRTOSConfig_smp.h deleted file mode 100644 index 1e93d21f5236..000000000000 --- a/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/FreeRTOSConfig_smp.h +++ /dev/null @@ -1,274 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#ifndef FREERTOS_CONFIG_SMP_H -#define FREERTOS_CONFIG_SMP_H - -#include "sdkconfig.h" - -/* -This file get's pulled into assembly sources. Therefore, some includes need to be wrapped in #ifndef __ASSEMBLER__ -*/ - -#ifndef __ASSEMBLER__ -#include //For configASSERT() -#endif /* def __ASSEMBLER__ */ - -/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- - * - * ------------------------------------------------------------------------------------------------------------------ */ - -#ifndef configISR_STACK_SIZE -#define configISR_STACK_SIZE (CONFIG_FREERTOS_ISR_STACKSIZE) -#endif - -/* ----------------------------------------------------- Helpers ------------------------------------------------------- - * - Macros that the FreeRTOS configuration macros depend on - * ------------------------------------------------------------------------------------------------------------------ */ - -/* Higher stack checker modes cause overhead on each function call */ -#if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG -#define STACK_OVERHEAD_CHECKER 256 -#else -#define STACK_OVERHEAD_CHECKER 0 -#endif - -/* with optimizations disabled, scheduler uses additional stack */ -#if CONFIG_COMPILER_OPTIMIZATION_NONE -#define STACK_OVERHEAD_OPTIMIZATION 320 -#else -#define STACK_OVERHEAD_OPTIMIZATION 0 -#endif - -/* apptrace mdule increases minimum stack usage */ -#if CONFIG_APPTRACE_ENABLE -#define STACK_OVERHEAD_APPTRACE 1280 -#else -#define STACK_OVERHEAD_APPTRACE 0 -#endif - -/* Stack watchpoint decreases minimum usable stack size by up to 60 bytes. - See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */ -#if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK -#define STACK_OVERHEAD_WATCHPOINT 60 -#else -#define STACK_OVERHEAD_WATCHPOINT 0 -#endif - -#define configSTACK_OVERHEAD_TOTAL ( \ - STACK_OVERHEAD_CHECKER + \ - STACK_OVERHEAD_OPTIMIZATION + \ - STACK_OVERHEAD_APPTRACE + \ - STACK_OVERHEAD_WATCHPOINT \ - ) - -/* ----------------------------------------------------- Helpers ------------------------------------------------------- - * - Macros that the FreeRTOS configuration macros depend on - * ------------------------------------------------------------------------------------------------------------------ */ - - -/* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- - * - All Vanilla FreeRTOS configuration goes into this section - * - Keep this section in-sync with the corresponding version of single-core upstream version of FreeRTOS - * - Don't put any SMP or ESP-IDF exclusive FreeRTOS configurations here. Those go into the next section - * - Not all FreeRTOS configuration are listed. Some configurations have default values set in FreeRTOS.h thus don't - * need to be explicitly defined. - * ------------------------------------------------------------------------------------------------------------------ */ - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -// ------------------ Scheduler Related -------------------- - -#define configUSE_PREEMPTION 1 -#define configUSE_TASK_PREEMPTION_DISABLE 1 -#define configUSE_TICKLESS_IDLE 0 -#define configCPU_CLOCK_HZ (CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000) -#define configTICK_RATE_HZ CONFIG_FREERTOS_HZ -#define configMAX_PRIORITIES ( 25 ) //This has impact on speed of search for highest priority -#define configMINIMAL_STACK_SIZE ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL ) -#define configUSE_TIME_SLICING 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 //Todo: Check this -#define configKERNEL_INTERRUPT_PRIORITY 1 //Todo: This currently isn't used anywhere -#if __XTENSA__ -#define configMAX_API_CALL_INTERRUPT_PRIORITY XCHAL_EXCM_LEVEL -#else // RISC-V -#define configMAX_API_CALL_INTERRUPT_PRIORITY 0 -#endif // __XTENSA__ -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 //SMP currently does not support optimized selection - -// -------------------- FreeRTOS SMP ----------------------- - -#ifdef CONFIG_FREERTOS_UNICORE -#define configNUM_CORES 1 -#else -#define configNUM_CORES 2 -#endif -#define configUSE_CORE_AFFINITY 1 -#define configRUN_MULTIPLE_PRIORITIES 1 -#define configUSE_MINIMAL_IDLE_HOOK 1 // This is always enabled to call IDF style idle hooks, by can be "--Wl,--wrap" if users enable CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK - -// ------------- Synchronization Primitives ---------------- - -#define configUSE_MUTEXES 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_COUNTING_SEMAPHORES 1 -#define configUSE_QUEUE_SETS 1 -#define configQUEUE_REGISTRY_SIZE CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE -#define configUSE_TASK_NOTIFICATIONS 1 -#define configTASK_NOTIFICATION_ARRAY_ENTRIES CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES - -// ----------------------- System -------------------------- - -#define configMAX_TASK_NAME_LEN CONFIG_FREERTOS_MAX_TASK_NAME_LEN - -#if ( CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS ) -/* If thread local storage pointer deletion callbacks are registered - * then we double the storage space reserved for the thread local - * storage pointers in the task TCB. The first half of the storage area - * is used to store the TLS pointers themselves while the second half - * is used to store the respective deletion callbacks. - */ -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS ( CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS * 2 ) -#else -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS -#endif // CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS -#define configSTACK_DEPTH_TYPE uint32_t -#define configUSE_NEWLIB_REENTRANT 1 -#define configNEWLIB_REENTRANT_IS_DYNAMIC 1 // IDF Newlib supports dynamic reentrancy. - // We provide our own __getreent() function -#define configENABLE_BACKWARD_COMPATIBILITY 0 -#define configASSERT(a) assert(a) -#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 1 - -// ----------------------- Memory ------------------------- - -#define configSUPPORT_STATIC_ALLOCATION 1 -#define configSUPPORT_DYNAMIC_ALLOCATION 1 -//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there -//is some space left for the app and main cpu when running outside of a thread. -#define configTOTAL_HEAP_SIZE (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) ) -#define configAPPLICATION_ALLOCATED_HEAP 1 -#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0 //Todo: Check this - -// ------------------------ Hooks -------------------------- - -#if CONFIG_FREERTOS_USE_IDLE_HOOK -#define configUSE_IDLE_HOOK 1 -#else -#define configUSE_IDLE_HOOK 0 -#endif -#define configUSE_TICK_HOOK 1 -#if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE -#define configCHECK_FOR_STACK_OVERFLOW 0 -#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL -#define configCHECK_FOR_STACK_OVERFLOW 1 -#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY -#define configCHECK_FOR_STACK_OVERFLOW 2 -#endif -#define configRECORD_STACK_HIGH_ADDRESS 1 // This must be set as the port requires TCB.pxEndOfStack - -// ------------------- Run-time Stats ---------------------- - -#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS -#define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() */ -#endif -#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY -#define configUSE_TRACE_FACILITY 1 /* Used by uxTaskGetSystemState(), and other trace facility functions */ -#endif -#ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* Used by vTaskList() */ -#endif - -// -------------------- Co-routines ----------------------- - -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES 2 - -// ------------------- Software Timer ---------------------- - -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY -#define configTIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH -#define configTIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH - -// -------------------- API Includes ----------------------- - -#define configENABLE_BACKWARD_COMPATIBILITY 0 - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_xTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetIdleTaskHandle 1 -#define INCLUDE_xTaskAbortDelay 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_xTaskGetHandle 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_uxTaskGetStackHighWaterMark2 0 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xTaskResumeFromISR 1 -#define INCLUDE_xTimerPendFunctionCall 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -// -------------------- Trace Macros ----------------------- - -/* -For trace macros. -Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs -*/ -#ifndef __ASSEMBLER__ -#if CONFIG_SYSVIEW_ENABLE -#include "SEGGER_SYSVIEW_FreeRTOS.h" -#undef INLINE // to avoid redefinition -#endif //CONFIG_SYSVIEW_ENABLE -#endif /* def __ASSEMBLER__ */ - -/* -Default values for trace macros added by ESP-IDF and are not part of Vanilla FreeRTOS -*/ -#ifndef traceISR_EXIT - #define traceISR_EXIT() -#endif -#ifndef traceISR_ENTER - #define traceISR_ENTER(_n_) -#endif - -#ifndef traceQUEUE_GIVE_FROM_ISR - #define traceQUEUE_GIVE_FROM_ISR( pxQueue ) -#endif - -#ifndef traceQUEUE_GIVE_FROM_ISR_FAILED - #define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue ) -#endif - -#ifndef traceQUEUE_SEMAPHORE_RECEIVE - #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue ) -#endif - -/* ------------------------------------------------ IDF Compatibility -------------------------------------------------- - * - We need these in order for ESP-IDF to compile - * ------------------------------------------------------------------------------------------------------------------ */ - -#define portNUM_PROCESSORS configNUM_CORES -#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID -#define configTASKLIST_INCLUDE_COREID 1 -#endif - -#endif /* FREERTOS_CONFIG_SMP_H */ diff --git a/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/portmacro.h b/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/portmacro.h index a9567deb4c28..0c9074c51095 100644 --- a/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/portmacro.h +++ b/components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/portmacro.h @@ -205,7 +205,7 @@ extern void vTaskExitCritical( void ); #define portALT_GET_RUN_TIME_COUNTER_VALUE(x) do {x = (uint32_t)esp_timer_get_time();} while(0) #endif -// ------------------- TCB Cleanup ---------------------- +// --------------------- TCB Cleanup ----------------------- #define portCLEAN_UP_TCB( pxTCB ) vPortCleanUpTCB( pxTCB ) @@ -315,7 +315,7 @@ bool xPortcheckValidStackMem(const void *ptr); /* ------------------------------------------------------ Misc --------------------------------------------------------- * - Miscellaneous porting macros - * - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components + * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components * ------------------------------------------------------------------------------------------------------------------ */ // --------------------- App-Trace ------------------------- diff --git a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h deleted file mode 100644 index dd54af78cff8..000000000000 --- a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h +++ /dev/null @@ -1,315 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#ifndef FREERTOS_CONFIG_SMP_H -#define FREERTOS_CONFIG_SMP_H - -#include "sdkconfig.h" - -/* -This file get's pulled into assembly sources. Therefore, some includes need to be wrapped in #ifndef __ASSEMBLER__ -*/ - -#ifndef __ASSEMBLER__ -#include //For configASSERT() -#endif /* def __ASSEMBLER__ */ - -/* Required for configuration-dependent settings. */ -#include "xtensa_config.h" - -/* -------------------------------------------- Xtensa Additional Config ---------------------------------------------- - * - Provide Xtensa definitions usually given by -D option when building with xt-make (see readme_xtensa.txt) - * - xtensa_rtos.h and xtensa_timer.h will default some of these values - * - XT_SIMULATOR configXT_SIMULATOR - * - XT_BOARD configXT_BOARD - * - XT_CLOCK_FREQ Should not be defined as we are using XT_BOARD mode - * - XT_TICK_PER_SEC Defaults to configTICK_RATE_HZ - * - XT_TIMER_INDEX Defaults to configXT_TIMER_INDEX - * - XT_INTEXC_HOOKS Defaults to configXT_INTEXC_HOOKS - * - XT_USE_OVLY We don't define this (unused) - * - XT_USE_SWPRI We don't define this (unused) - * ------------------------------------------------------------------------------------------------------------------ */ - -#define configXT_SIMULATOR 0 -#define configXT_BOARD 1 /* Board mode */ -#if CONFIG_FREERTOS_CORETIMER_0 -#define configXT_TIMER_INDEX 0 -#elif CONFIG_FREERTOS_CORETIMER_1 -#define configXT_TIMER_INDEX 1 -#endif -#define configXT_INTEXC_HOOKS 0 - -#define configBENCHMARK 0 - -/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- - * - * ------------------------------------------------------------------------------------------------------------------ */ - -/* The Xtensa port uses a separate interrupt stack. Adjust the stack size - * to suit the needs of your specific application. - * Size needs to be aligned to the stack increment, since the location of - * the stack for the 2nd CPU will be calculated using configISR_STACK_SIZE. - */ -#define configSTACK_ALIGNMENT 16 -#ifndef configISR_STACK_SIZE -#define configISR_STACK_SIZE ((CONFIG_FREERTOS_ISR_STACKSIZE + configSTACK_ALIGNMENT - 1) & (~(configSTACK_ALIGNMENT - 1))) -#endif - -/* ----------------------------------------------------- Helpers ------------------------------------------------------- - * - Macros that the FreeRTOS configuration macros depend on - * ------------------------------------------------------------------------------------------------------------------ */ - -/* Higher stack checker modes cause overhead on each function call */ -#if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG -#define STACK_OVERHEAD_CHECKER 256 -#else -#define STACK_OVERHEAD_CHECKER 0 -#endif - -/* with optimizations disabled, scheduler uses additional stack */ -#if CONFIG_COMPILER_OPTIMIZATION_NONE -#define STACK_OVERHEAD_OPTIMIZATION 320 -#else -#define STACK_OVERHEAD_OPTIMIZATION 0 -#endif - -/* apptrace mdule increases minimum stack usage */ -#if CONFIG_APPTRACE_ENABLE -#define STACK_OVERHEAD_APPTRACE 1280 -#else -#define STACK_OVERHEAD_APPTRACE 0 -#endif - -/* Stack watchpoint decreases minimum usable stack size by up to 60 bytes. - See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */ -#if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK -#define STACK_OVERHEAD_WATCHPOINT 60 -#else -#define STACK_OVERHEAD_WATCHPOINT 0 -#endif - -#define configSTACK_OVERHEAD_TOTAL ( \ - STACK_OVERHEAD_CHECKER + \ - STACK_OVERHEAD_OPTIMIZATION + \ - STACK_OVERHEAD_APPTRACE + \ - STACK_OVERHEAD_WATCHPOINT \ - ) - -/* ----------------------------------------------------- Helpers ------------------------------------------------------- - * - Macros that the FreeRTOS configuration macros depend on - * ------------------------------------------------------------------------------------------------------------------ */ - - -/* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- - * - All Vanilla FreeRTOS configuration goes into this section - * - Keep this section in-sync with the corresponding version of single-core upstream version of FreeRTOS - * - Don't put any SMP or ESP-IDF exclusive FreeRTOS configurations here. Those go into the next section - * - Not all FreeRTOS configuration are listed. Some configurations have default values set in FreeRTOS.h thus don't - * need to be explicitly defined. - * ------------------------------------------------------------------------------------------------------------------ */ - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -// ------------------ Scheduler Related -------------------- - -#define configUSE_PREEMPTION 1 -#define configUSE_TASK_PREEMPTION_DISABLE 1 -#define configUSE_TICKLESS_IDLE 0 -#define configCPU_CLOCK_HZ (CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000) -#define configTICK_RATE_HZ CONFIG_FREERTOS_HZ -#define configMAX_PRIORITIES ( 25 ) //This has impact on speed of search for highest priority -#define configMINIMAL_STACK_SIZE ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL ) -#define configUSE_TIME_SLICING 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 //Todo: Check this -#define configKERNEL_INTERRUPT_PRIORITY 1 //Todo: This currently isn't used anywhere -#define configMAX_API_CALL_INTERRUPT_PRIORITY XCHAL_EXCM_LEVEL -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 //SMP currently does not support optimized selection - -// -------------------- FreeRTOS SMP ----------------------- - -#ifdef CONFIG_FREERTOS_UNICORE -#define configNUM_CORES 1 -#else -#define configNUM_CORES 2 -#endif -#define configUSE_CORE_AFFINITY 1 -#define configRUN_MULTIPLE_PRIORITIES 1 -#define configUSE_MINIMAL_IDLE_HOOK 1 // This is always enabled to call IDF style idle hooks, by can be "--Wl,--wrap" if users enable CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK - -// ------------- Synchronization Primitives ---------------- - -#define configUSE_MUTEXES 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_COUNTING_SEMAPHORES 1 -#define configUSE_QUEUE_SETS 1 -#define configQUEUE_REGISTRY_SIZE CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE -#define configUSE_TASK_NOTIFICATIONS 1 -#define configTASK_NOTIFICATION_ARRAY_ENTRIES CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES - -// ----------------------- System -------------------------- - -#define configMAX_TASK_NAME_LEN CONFIG_FREERTOS_MAX_TASK_NAME_LEN - -#if ( CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS ) -/* If thread local storage pointer deletion callbacks are registered - * then we double the storage space reserved for the thread local - * storage pointers in the task TCB. The first half of the storage area - * is used to store the TLS pointers themselves while the second half - * is used to store the respective deletion callbacks. - */ -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS ( CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS * 2 ) -#else -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS -#endif // CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS -#define configSTACK_DEPTH_TYPE uint32_t -#define configUSE_NEWLIB_REENTRANT 1 -#define configNEWLIB_REENTRANT_IS_DYNAMIC 1 // IDF Newlib supports dynamic reentrancy. We provide our own __getreent() function -#define configENABLE_BACKWARD_COMPATIBILITY 0 -#define configASSERT(a) assert(a) -#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 1 - -// ----------------------- Memory ------------------------- - -#define configSUPPORT_STATIC_ALLOCATION 1 -#define configSUPPORT_DYNAMIC_ALLOCATION 1 -//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there -//is some space left for the app and main cpu when running outside of a thread. -#define configTOTAL_HEAP_SIZE (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) ) -#define configAPPLICATION_ALLOCATED_HEAP 1 -#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0 //Todo: Check this - -// ------------------------ Hooks -------------------------- - -#if CONFIG_FREERTOS_USE_IDLE_HOOK -#define configUSE_IDLE_HOOK 1 -#else -#define configUSE_IDLE_HOOK 0 -#endif -#if CONFIG_FREERTOS_USE_TICK_HOOK -#define configUSE_TICK_HOOK 1 -#else -#define configUSE_TICK_HOOK 0 -#endif -#if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE -#define configCHECK_FOR_STACK_OVERFLOW 0 -#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL -#define configCHECK_FOR_STACK_OVERFLOW 1 -#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY -#define configCHECK_FOR_STACK_OVERFLOW 2 -#endif -#define configRECORD_STACK_HIGH_ADDRESS 1 // This must be set as the port requires TCB.pxEndOfStack - -// ------------------- Run-time Stats ---------------------- - -#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS -#define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() */ -#endif -#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY -#define configUSE_TRACE_FACILITY 1 /* Used by uxTaskGetSystemState(), and other trace facility functions */ -#endif -#ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* Used by vTaskList() */ -#endif - -// -------------------- Co-routines ----------------------- - -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES 2 - -// ------------------- Software Timer ---------------------- - -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY -#define configTIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH -#define configTIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH - -// -------------------- API Includes ----------------------- - -#define configENABLE_BACKWARD_COMPATIBILITY 0 - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_xTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetIdleTaskHandle 1 -#define INCLUDE_xTaskAbortDelay 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_xTaskGetHandle 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_uxTaskGetStackHighWaterMark2 0 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xTaskResumeFromISR 1 -#define INCLUDE_xTimerPendFunctionCall 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -// -------------------- Trace Macros ----------------------- - -/* -For trace macros. -Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs -*/ -#ifndef __ASSEMBLER__ -#if CONFIG_SYSVIEW_ENABLE -#include "SEGGER_SYSVIEW_FreeRTOS.h" -#undef INLINE // to avoid redefinition -#endif //CONFIG_SYSVIEW_ENABLE -#endif /* def __ASSEMBLER__ */ - -/* -Default values for trace macros added by ESP-IDF and are not part of Vanilla FreeRTOS -*/ -#ifndef traceISR_EXIT - #define traceISR_EXIT() -#endif -#ifndef traceISR_ENTER - #define traceISR_ENTER(_n_) -#endif - -#ifndef traceQUEUE_GIVE_FROM_ISR - #define traceQUEUE_GIVE_FROM_ISR( pxQueue ) -#endif - -#ifndef traceQUEUE_GIVE_FROM_ISR_FAILED - #define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue ) -#endif - -#ifndef traceQUEUE_SEMAPHORE_RECEIVE - #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue ) -#endif - -/* ------------------------------------------------ IDF Compatibility -------------------------------------------------- - * - We need these in order for ESP-IDF to compile - * ------------------------------------------------------------------------------------------------------------------ */ - -#define portNUM_PROCESSORS configNUM_CORES -#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID -#define configTASKLIST_INCLUDE_COREID 1 -#endif - -#ifndef __ASSEMBLER__ -#if CONFIG_APPTRACE_SV_ENABLE -extern volatile uint32_t port_switch_flag[portNUM_PROCESSORS]; -#define os_task_switch_is_pended(_cpu_) (port_switch_flag[_cpu_]) -#else -#define os_task_switch_is_pended(_cpu_) (false) -#endif -#endif - -#endif /* FREERTOS_CONFIG_SMP_H */ diff --git a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/portmacro.h b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/portmacro.h index d0104b7b3623..4ff15d932d5f 100644 --- a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/portmacro.h +++ b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/portmacro.h @@ -379,6 +379,20 @@ bool xPortcheckValidStackMem(const void *ptr); #define portVALID_TCB_MEM(ptr) xPortCheckValidTCBMem(ptr) #define portVALID_STACK_MEM(ptr) xPortcheckValidStackMem(ptr) +/* ------------------------------------------------------ Misc --------------------------------------------------------- + * - Miscellaneous porting macros + * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components + * ------------------------------------------------------------------------------------------------------------------ */ + +// --------------------- App-Trace ------------------------- + +#if CONFIG_APPTRACE_SV_ENABLE +extern volatile BaseType_t xPortSwitchFlag; +#define os_task_switch_is_pended(_cpu_) (xPortSwitchFlag) +#else +#define os_task_switch_is_pended(_cpu_) (false) +#endif + // --------------- Compatibility Includes ------------------ /* ESP-IDF currently does not have a "Include what you use" policy. A lot of files implicitly pull in API through diff --git a/components/freertos/FreeRTOS-Kernel/portable/linux/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/FreeRTOS-Kernel/portable/linux/include/freertos/FreeRTOSConfig_arch.h deleted file mode 100644 index 947ef2ee21ab..000000000000 --- a/components/freertos/FreeRTOS-Kernel/portable/linux/include/freertos/FreeRTOSConfig_arch.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#ifndef FREERTOS_CONFIG_LINUX_H -#define FREERTOS_CONFIG_LINUX_H - -// This file is included in the common FreeRTOSConfig.h. - -#endif // FREERTOS_CONFIG_LINUX_H diff --git a/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/FreeRTOSConfig_arch.h deleted file mode 100644 index f7a8110521d3..000000000000 --- a/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/FreeRTOSConfig_arch.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#ifndef FREERTOS_CONFIG_RISCV_H -#define FREERTOS_CONFIG_RISCV_H - -//RISC-V Archiecture specific configuration. This file is included in the common FreeRTOSConfig.h. - -#include "sdkconfig.h" - -/* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- - * - All Vanilla FreeRTOS configuration goes into this section - * ------------------------------------------------------------------------------------------------------------------ */ - -// ------------------ Scheduler Related -------------------- - -#ifdef CONFIG_FREERTOS_OPTIMIZED_SCHEDULER -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 -#else -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 -#endif -#define configMAX_API_CALL_INTERRUPT_PRIORITY 0 - -/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- - * - * ------------------------------------------------------------------------------------------------------------------ */ - -#ifndef configISR_STACK_SIZE -#define configISR_STACK_SIZE (CONFIG_FREERTOS_ISR_STACKSIZE) -#endif - -#endif // FREERTOS_CONFIG_RISCV_H diff --git a/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h b/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h index 055ee338816b..b889f02bba76 100644 --- a/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h +++ b/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h @@ -385,6 +385,14 @@ FORCE_INLINE_ATTR BaseType_t xPortGetCoreID(void) #define portALT_GET_RUN_TIME_COUNTER_VALUE(x) do {x = (uint32_t)esp_timer_get_time();} while(0) #endif +// --------------------- TCB Cleanup ----------------------- + +#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP +/* If enabled, users must provide an implementation of vPortCleanUpTCB() */ +extern void vPortCleanUpTCB ( void *pxTCB ); +#define portCLEAN_UP_TCB( pxTCB ) vPortCleanUpTCB( pxTCB ) +#endif /* CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP */ + // -------------- Optimized Task Selection ----------------- #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1 @@ -424,7 +432,7 @@ FORCE_INLINE_ATTR bool xPortCanYield(void) /* ------------------------------------------------------ Misc --------------------------------------------------------- * - Miscellaneous porting macros - * - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components + * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components * ------------------------------------------------------------------------------------------------------------------ */ // -------------------- Heap Related ----------------------- diff --git a/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h b/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h index a1adffbd4f34..660c48a950e3 100644 --- a/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h +++ b/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h @@ -523,6 +523,14 @@ extern void _frxt_setup_switch( void ); //Defined in portasm.S #define portALT_GET_RUN_TIME_COUNTER_VALUE(x) do {x = (uint32_t)esp_timer_get_time();} while(0) #endif +// --------------------- TCB Cleanup ----------------------- + +#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP +/* If enabled, users must provide an implementation of vPortCleanUpTCB() */ +extern void vPortCleanUpTCB ( void *pxTCB ); +#define portCLEAN_UP_TCB( pxTCB ) vPortCleanUpTCB( pxTCB ) +#endif /* CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP */ + // -------------- Optimized Task Selection ----------------- #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1 @@ -627,7 +635,7 @@ FORCE_INLINE_ATTR BaseType_t xPortGetCoreID(void) /* ------------------------------------------------------ Misc --------------------------------------------------------- * - Miscellaneous porting macros - * - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components + * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components * ------------------------------------------------------------------------------------------------------------------ */ // -------------------- Co-Processor ----------------------- diff --git a/components/freertos/Kconfig b/components/freertos/Kconfig index 65dcad70f2a1..66f289e28917 100644 --- a/components/freertos/Kconfig +++ b/components/freertos/Kconfig @@ -40,7 +40,7 @@ menu "FreeRTOS" config FREERTOS_OPTIMIZED_SCHEDULER # Todo: Not available in SMP FREERTOS (IDF-3733) bool "configUSE_PORT_OPTIMISED_TASK_SELECTION" - depends on FREERTOS_UNICORE + depends on FREERTOS_UNICORE && !FREERTOS_SMP default y help Enables port specific task selection method. This option can speed up the search of ready tasks diff --git a/components/freertos/esp_additions/arch/linux/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/esp_additions/arch/linux/include/freertos/FreeRTOSConfig_arch.h new file mode 100644 index 000000000000..37ddedea0a82 --- /dev/null +++ b/components/freertos/esp_additions/arch/linux/include/freertos/FreeRTOSConfig_arch.h @@ -0,0 +1,52 @@ +/* + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +/* Linux POSIX simulator specific configuration. This file is included in the common FreeRTOSConfig.h. */ + +#include "sdkconfig.h" + +/* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- + * - All Vanilla FreeRTOS configuration goes into this section + * - Match upstream POSIX simulator example FreeRTOSConfig.h where possible. See following link for more details. + * https://github.com/FreeRTOS/FreeRTOS/blob/main/FreeRTOS/Demo/Posix_GCC/FreeRTOSConfig.h + * ------------------------------------------------------------------------------------------------------------------ */ + +/* ------------------ Scheduler Related -------------------- */ + +#define configMAX_PRIORITIES ( 7 ) +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 + +/* The stack allocated by FreeRTOS will be passed to a pthread. + * pthread has a minimal stack size which currently is 16KB. + * The rest is for additional structures of the POSIX/Linux port. + * This is a magic number since PTHREAD_STACK_MIN seems to not be a constant. */ +#define configMINIMAL_STACK_SIZE ( ( unsigned short ) ( 0x4000 + 40 ) / sizeof( portSTACK_TYPE ) ) +/* Currently not used in Linux POSIX simulator */ +#define configMAX_API_CALL_INTERRUPT_PRIORITY 0 + +/* ----------------------- System -------------------------- */ + +#define configUSE_NEWLIB_REENTRANT 0 +#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 0 + +/* ----------------------- Memory ------------------------- */ + +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 65 * 1024 ) ) + +/* ------------------- Run-time Stats ---------------------- */ + +#define configUSE_TRACE_FACILITY 1 + +/* -------------------- API Includes ----------------------- */ + +#define INCLUDE_xTaskGetCurrentTaskHandle 0 /* not defined in POSIX simulator */ +#define INCLUDE_vTaskDelayUntil 1 + +/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- + * + * ------------------------------------------------------------------------------------------------------------------ */ diff --git a/components/freertos/esp_additions/arch/riscv/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/esp_additions/arch/riscv/include/freertos/FreeRTOSConfig_arch.h new file mode 100644 index 000000000000..f4b4996d2f4f --- /dev/null +++ b/components/freertos/esp_additions/arch/riscv/include/freertos/FreeRTOSConfig_arch.h @@ -0,0 +1,58 @@ +/* + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +/* RISC-V Architecture specific configuration. This file is included in the common FreeRTOSConfig.h. */ + +#include "sdkconfig.h" + +/* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- + * - All Vanilla FreeRTOS configuration goes into this section + * ------------------------------------------------------------------------------------------------------------------ */ + +/* ------------------ Scheduler Related -------------------- */ + +#define configMAX_PRIORITIES ( 25 ) +#ifdef CONFIG_FREERTOS_OPTIMIZED_SCHEDULER + #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 +#else + #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +#endif /* CONFIG_FREERTOS_OPTIMIZED_SCHEDULER */ +#define configMINIMAL_STACK_SIZE ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL ) +#define configMAX_API_CALL_INTERRUPT_PRIORITY 0 + +/* ----------------------- System -------------------------- */ + +#define configUSE_NEWLIB_REENTRANT 1 +#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 1 + +/* ----------------------- Memory ------------------------- */ + +/* This isn't used as FreeRTOS will only allocate from internal memory (see + * heap_idf.c). We simply define this macro to span all non-statically-allocated + * shared RAM. */ +#define configTOTAL_HEAP_SIZE ( &_heap_end - &_heap_start ) + +/* ------------------- Run-time Stats ---------------------- */ + +#if CONFIG_FREERTOS_USE_TRACE_FACILITY + /* Used by uxTaskGetSystemState(), and other trace facility functions */ + #define configUSE_TRACE_FACILITY 1 +#endif /* CONFIG_FREERTOS_USE_TRACE_FACILITY */ + +/* -------------------- API Includes ----------------------- */ + +#define INCLUDE_xTaskDelayUntil 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 + +/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- + * + * ------------------------------------------------------------------------------------------------------------------ */ + +#ifndef configISR_STACK_SIZE + #define configISR_STACK_SIZE ( CONFIG_FREERTOS_ISR_STACKSIZE ) +#endif diff --git a/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/esp_additions/arch/xtensa/include/freertos/FreeRTOSConfig_arch.h similarity index 50% rename from components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/FreeRTOSConfig_arch.h rename to components/freertos/esp_additions/arch/xtensa/include/freertos/FreeRTOSConfig_arch.h index cb0c78ec1f8c..a7ed6d5e4a3e 100644 --- a/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/FreeRTOSConfig_arch.h +++ b/components/freertos/esp_additions/arch/xtensa/include/freertos/FreeRTOSConfig_arch.h @@ -1,18 +1,17 @@ /* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef FREERTOS_CONFIG_XTENSA_H -#define FREERTOS_CONFIG_XTENSA_H +#pragma once -//Xtensa Archiecture specific configuration. This file is included in the common FreeRTOSConfig.h. +/* Xtensa Architecture specific configuration. This file is included in the common FreeRTOSConfig.h. */ #include "sdkconfig.h" /* Required for configuration-dependent settings. */ -#include "xtensa_config.h" +#include "freertos/xtensa_config.h" /* -------------------------------------------- Xtensa Additional Config ---------------------------------------------- * - Provide Xtensa definitions usually given by -D option when building with xt-make (see readme_xtensa.txt) @@ -27,29 +26,55 @@ * - XT_USE_SWPRI We don't define this (unused) * ------------------------------------------------------------------------------------------------------------------ */ -#define configXT_SIMULATOR 0 -#define configXT_BOARD 1 /* Board mode */ +#define configXT_SIMULATOR 0 +#define configXT_BOARD 1 /* Board mode */ #if CONFIG_FREERTOS_CORETIMER_0 -#define configXT_TIMER_INDEX 0 + #define configXT_TIMER_INDEX 0 #elif CONFIG_FREERTOS_CORETIMER_1 -#define configXT_TIMER_INDEX 1 + #define configXT_TIMER_INDEX 1 #endif -#define configXT_INTEXC_HOOKS 0 +#define configXT_INTEXC_HOOKS 0 -#define configBENCHMARK 0 +#define configBENCHMARK 0 /* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- * - All Vanilla FreeRTOS configuration goes into this section * ------------------------------------------------------------------------------------------------------------------ */ -// ------------------ Scheduler Related -------------------- +/* ------------------ Scheduler Related -------------------- */ +#define configMAX_PRIORITIES ( 25 ) #ifdef CONFIG_FREERTOS_OPTIMIZED_SCHEDULER -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 + #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 #else -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 -#endif -#define configMAX_API_CALL_INTERRUPT_PRIORITY XCHAL_EXCM_LEVEL + #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +#endif /* CONFIG_FREERTOS_OPTIMIZED_SCHEDULER */ +#define configMINIMAL_STACK_SIZE ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL ) +#define configMAX_API_CALL_INTERRUPT_PRIORITY XCHAL_EXCM_LEVEL + +/* ----------------------- System -------------------------- */ + +#define configUSE_NEWLIB_REENTRANT 1 +#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 1 + +/* ----------------------- Memory ------------------------- */ + +/* This isn't used as FreeRTOS will only allocate from internal memory (see + * heap_idf.c). We simply define this macro to span all non-statically-allocated + * shared RAM. */ +#define configTOTAL_HEAP_SIZE ( &_heap_end - &_heap_start ) + +/* ------------------- Run-time Stats ---------------------- */ + +#if CONFIG_FREERTOS_USE_TRACE_FACILITY + /* Used by uxTaskGetSystemState(), and other trace facility functions */ + #define configUSE_TRACE_FACILITY 1 +#endif /* CONFIG_FREERTOS_USE_TRACE_FACILITY */ + +/* -------------------- API Includes ----------------------- */ + +#define INCLUDE_xTaskDelayUntil 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 /* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- * @@ -60,9 +85,7 @@ * Size needs to be aligned to the stack increment, since the location of * the stack for the 2nd CPU will be calculated using configISR_STACK_SIZE. */ -#define configSTACK_ALIGNMENT 16 +#define configSTACK_ALIGNMENT 16 #ifndef configISR_STACK_SIZE -#define configISR_STACK_SIZE ((CONFIG_FREERTOS_ISR_STACKSIZE + configSTACK_ALIGNMENT - 1) & (~(configSTACK_ALIGNMENT - 1))) + #define configISR_STACK_SIZE ( ( CONFIG_FREERTOS_ISR_STACKSIZE + configSTACK_ALIGNMENT - 1 ) & ( ~( configSTACK_ALIGNMENT - 1 ) ) ) #endif - -#endif // FREERTOS_CONFIG_XTENSA_H diff --git a/components/freertos/esp_additions/include/freertos/FreeRTOSConfig.h b/components/freertos/esp_additions/include/freertos/FreeRTOSConfig.h index af41e4f03eda..3a3c10ea2535 100644 --- a/components/freertos/esp_additions/include/freertos/FreeRTOSConfig.h +++ b/components/freertos/esp_additions/include/freertos/FreeRTOSConfig.h @@ -4,285 +4,282 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H +#pragma once #include "sdkconfig.h" -/* -This file gets pulled into assembly sources. Therefore, some includes need to be wrapped in #ifndef __ASSEMBLER__ -*/ +/* This file gets pulled into assembly sources. Therefore, some includes need to + * be wrapped in #ifndef __ASSEMBLER__ */ #ifndef __ASSEMBLER__ -#include //For configASSERT() + /* For configASSERT() */ + #include #endif /* def __ASSEMBLER__ */ -#ifdef CONFIG_FREERTOS_SMP - -// Pull in the SMP configuration -#include "freertos/FreeRTOSConfig_smp.h" - -#else // CONFIG_FREERTOS_SMP - -// The arch-specific FreeRTOSConfig_arch.h in port//include. -#include "freertos/FreeRTOSConfig_arch.h" - -#if !(defined(FREERTOS_CONFIG_XTENSA_H) \ - || defined(FREERTOS_CONFIG_RISCV_H) \ - || defined(FREERTOS_CONFIG_LINUX_H)) -#error "Needs architecture-speific FreeRTOSConfig.h!" -#endif - /* ----------------------------------------------------- Helpers ------------------------------------------------------- * - Macros that the FreeRTOS configuration macros depend on * ------------------------------------------------------------------------------------------------------------------ */ /* Higher stack checker modes cause overhead on each function call */ #if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG -#define STACK_OVERHEAD_CHECKER 256 + #define STACK_OVERHEAD_CHECKER 256 #else -#define STACK_OVERHEAD_CHECKER 0 + #define STACK_OVERHEAD_CHECKER 0 #endif /* with optimizations disabled, scheduler uses additional stack */ #if CONFIG_COMPILER_OPTIMIZATION_NONE -#define STACK_OVERHEAD_OPTIMIZATION 320 + #define STACK_OVERHEAD_OPTIMIZATION 320 #else -#define STACK_OVERHEAD_OPTIMIZATION 0 + #define STACK_OVERHEAD_OPTIMIZATION 0 #endif /* apptrace mdule increases minimum stack usage */ #if CONFIG_APPTRACE_ENABLE -#define STACK_OVERHEAD_APPTRACE 1280 + #define STACK_OVERHEAD_APPTRACE 1280 #else -#define STACK_OVERHEAD_APPTRACE 0 + #define STACK_OVERHEAD_APPTRACE 0 #endif /* Stack watchpoint decreases minimum usable stack size by up to 60 bytes. - See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */ + * See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */ #if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK -#define STACK_OVERHEAD_WATCHPOINT 60 + #define STACK_OVERHEAD_WATCHPOINT 60 #else -#define STACK_OVERHEAD_WATCHPOINT 0 + #define STACK_OVERHEAD_WATCHPOINT 0 #endif -#define configSTACK_OVERHEAD_TOTAL ( \ - STACK_OVERHEAD_CHECKER + \ - STACK_OVERHEAD_OPTIMIZATION + \ - STACK_OVERHEAD_APPTRACE + \ - STACK_OVERHEAD_WATCHPOINT \ - ) +#define configSTACK_OVERHEAD_TOTAL \ + ( \ + STACK_OVERHEAD_CHECKER + \ + STACK_OVERHEAD_OPTIMIZATION + \ + STACK_OVERHEAD_APPTRACE + \ + STACK_OVERHEAD_WATCHPOINT \ + ) + +/* The arch-specific FreeRTOSConfig_arch.h in esp_additions/arch_include/. + * Placed here due to configSTACK_OVERHEAD_TOTAL. Todo: IDF-5712. */ +#include "freertos/FreeRTOSConfig_arch.h" /* ------------------------------------------------- FreeRTOS Config --------------------------------------------------- * - All Vanilla FreeRTOS configuration goes into this section * - Keep this section in-sync with the corresponding version of single-core upstream version of FreeRTOS - * - Don't put any SMP or ESP-IDF exclusive FreeRTOS configurations here. Those go into the next section + * - Don't put any Amazon SMP FreeRTOS or IDF FreeRTOS configurations here. Those go into the next section * - Not all FreeRTOS configuration are listed. Some configurations have default values set in FreeRTOS.h thus don't * need to be explicitly defined. * ------------------------------------------------------------------------------------------------------------------ */ /*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -// ------------------ Scheduler Related -------------------- - -#define configUSE_PREEMPTION 1 -#define configUSE_TICKLESS_IDLE CONFIG_FREERTOS_USE_TICKLESS_IDLE +* Application specific definitions. +* +* These definitions should be adjusted for your particular hardware and +* application requirements. +* +* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE +* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. +* +* See http://www.freertos.org/a00110.html +*----------------------------------------------------------*/ + +/* ------------------ Scheduler Related -------------------- */ + +#define configUSE_PREEMPTION 1 +#define configUSE_TICKLESS_IDLE CONFIG_FREERTOS_USE_TICKLESS_IDLE #if configUSE_TICKLESS_IDLE -#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP CONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP -#endif //configUSE_TICKLESS_IDLE -#define configCPU_CLOCK_HZ (CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000) -#define configTICK_RATE_HZ CONFIG_FREERTOS_HZ -#ifdef CONFIG_IDF_TARGET_LINUX -#define configMAX_PRIORITIES ( 7 ) // Default in upstream simulator -/* The stack allocated by FreeRTOS will be passed to a pthread. - pthread has a minimal stack size which currently is 16KB. - The rest is for additional structures of the POSIX/Linux port. - This is a magic number since PTHREAD_STACK_MIN seems to not be a constant. */ -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) (0x4000 + 40) / sizeof(portSTACK_TYPE) ) -#else -#define configMAX_PRIORITIES ( 25 ) //This has impact on speed of search for highest priority -#define configMINIMAL_STACK_SIZE ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL ) -#endif -#define configUSE_TIME_SLICING 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configKERNEL_INTERRUPT_PRIORITY 1 //Todo: This currently isn't used anywhere - -// ------------- Synchronization Primitives ---------------- - -#define configUSE_MUTEXES 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_COUNTING_SEMAPHORES 1 -#define configUSE_QUEUE_SETS 1 -#define configQUEUE_REGISTRY_SIZE CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE -#define configUSE_TASK_NOTIFICATIONS 1 -#define configTASK_NOTIFICATION_ARRAY_ENTRIES CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES - -// ----------------------- System -------------------------- - -#define configMAX_TASK_NAME_LEN CONFIG_FREERTOS_MAX_TASK_NAME_LEN -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS -#define configSTACK_DEPTH_TYPE uint32_t -#ifndef CONFIG_IDF_TARGET_LINUX -#define configUSE_NEWLIB_REENTRANT 1 -#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 1 -#else -#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 0 // Default in upstream simulator -#endif + #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP CONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP +#endif /* configUSE_TICKLESS_IDLE */ +#define configCPU_CLOCK_HZ ( CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000 ) +#define configTICK_RATE_HZ CONFIG_FREERTOS_HZ +#define configUSE_TIME_SLICING 1 +#define configUSE_16_BIT_TICKS 0 +#define configIDLE_SHOULD_YIELD 0 +#define configKERNEL_INTERRUPT_PRIORITY 1 /*Todo: This currently isn't used anywhere */ + +/* ------------- Synchronization Primitives ---------------- */ + +#define configUSE_MUTEXES 1 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_COUNTING_SEMAPHORES 1 +#define configUSE_QUEUE_SETS 1 +#define configQUEUE_REGISTRY_SIZE CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE +#define configUSE_TASK_NOTIFICATIONS 1 +#define configTASK_NOTIFICATION_ARRAY_ENTRIES CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES + +/* ----------------------- System -------------------------- */ + +#define configMAX_TASK_NAME_LEN CONFIG_FREERTOS_MAX_TASK_NAME_LEN +#if CONFIG_FREERTOS_SMP +/* Number of TLSP is doubled to store TLSP deletion callbacks */ + #define configNUM_THREAD_LOCAL_STORAGE_POINTERS ( CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS * 2 ) +#else /* CONFIG_FREERTOS_SMP */ + #define configNUM_THREAD_LOCAL_STORAGE_POINTERS CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS +#endif /* CONFIG_FREERTOS_SMP */ +#define configSTACK_DEPTH_TYPE uint32_t #if CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY -#define configENABLE_BACKWARD_COMPATIBILITY 1 -#else -#define configENABLE_BACKWARD_COMPATIBILITY 0 -#endif -#define configASSERT(a) assert(a) - -// ----------------------- Memory ------------------------- - -#define configSUPPORT_STATIC_ALLOCATION 1 -#define configSUPPORT_DYNAMIC_ALLOCATION 1 -#ifdef CONFIG_IDF_TARGET_LINUX -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 65 * 1024 ) ) // Default in upstream simulator -#else -//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there -//is some space left for the app and main cpu when running outside of a thread. -#define configTOTAL_HEAP_SIZE (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) ) -#endif -#define configAPPLICATION_ALLOCATED_HEAP 1 -#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0 - -// ------------------------ Hooks -------------------------- - -#define configUSE_IDLE_HOOK CONFIG_FREERTOS_USE_IDLE_HOOK -#define configUSE_TICK_HOOK CONFIG_FREERTOS_USE_TICK_HOOK + #define configENABLE_BACKWARD_COMPATIBILITY 1 +#else /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */ + #define configENABLE_BACKWARD_COMPATIBILITY 0 +#endif /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */ +#define configASSERT( a ) assert( a ) + +/* ----------------------- Memory ------------------------- */ + +#define configSUPPORT_STATIC_ALLOCATION 1 +#define configSUPPORT_DYNAMIC_ALLOCATION 1 +#define configAPPLICATION_ALLOCATED_HEAP 1 +#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0 + +/* ------------------------ Hooks -------------------------- */ + +#if CONFIG_FREERTOS_USE_IDLE_HOOK + #define configUSE_IDLE_HOOK 1 +#else /* CONFIG_FREERTOS_USE_IDLE_HOOK */ + #define configUSE_IDLE_HOOK 0 +#endif /* CONFIG_FREERTOS_USE_IDLE_HOOK */ +#if CONFIG_FREERTOS_USE_TICK_HOOK + #define configUSE_TICK_HOOK 1 +#else /* CONFIG_FREERTOS_USE_TICK_HOOK */ + #define configUSE_TICK_HOOK 0 +#endif /* CONFIG_FREERTOS_USE_TICK_HOOK */ #if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE -#define configCHECK_FOR_STACK_OVERFLOW 0 + #define configCHECK_FOR_STACK_OVERFLOW 0 #elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL -#define configCHECK_FOR_STACK_OVERFLOW 1 + #define configCHECK_FOR_STACK_OVERFLOW 1 #elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY -#define configCHECK_FOR_STACK_OVERFLOW 2 -#endif -#define configRECORD_STACK_HIGH_ADDRESS 1 // This must be set as the port requires TCB.pxEndOfStack + #define configCHECK_FOR_STACK_OVERFLOW 2 +#endif /* CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE */ +#define configRECORD_STACK_HIGH_ADDRESS 1 /* This must be set as the port requires TCB.pxEndOfStack */ -// ------------------- Run-time Stats ---------------------- +/* ------------------- Run-time Stats ---------------------- */ #ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS -#define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() */ -#endif -#ifdef CONFIG_IDF_TARGET_LINUX -#define configUSE_TRACE_FACILITY 1 -#else -#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY -#define configUSE_TRACE_FACILITY 1 /* Used by uxTaskGetSystemState(), and other trace facility functions */ -#endif -#endif + #define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() */ +#endif /* CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS */ #ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* Used by vTaskList() */ -#endif + #define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* Used by vTaskList() */ +#endif /* CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS */ -// -------------------- Co-routines ----------------------- +/* -------------------- Co-routines ----------------------- */ -#define configUSE_CO_ROUTINES 0 // CO_ROUTINES are not supported in ESP-IDF -#define configMAX_CO_ROUTINE_PRIORITIES 2 +#define configUSE_CO_ROUTINES 0 /* CO_ROUTINES are not supported in ESP-IDF */ +#define configMAX_CO_ROUTINE_PRIORITIES 2 -// ------------------- Software Timer ---------------------- +/* ------------------- Software Timer ---------------------- */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY -#define configTIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH -#define configTIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH +#define configUSE_TIMERS 1 +#define configTIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY +#define configTIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH +#define configTIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH -// -------------------- API Includes ----------------------- +/* -------------------- API Includes ----------------------- */ #if CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY -#define configENABLE_BACKWARD_COMPATIBILITY 1 -#else -#define configENABLE_BACKWARD_COMPATIBILITY 0 -#endif - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetIdleTaskHandle 1 -#define INCLUDE_xTaskAbortDelay 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_xTaskGetHandle 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_uxTaskGetStackHighWaterMark2 1 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xTaskResumeFromISR 1 -#define INCLUDE_xTimerPendFunctionCall 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#ifdef CONFIG_IDF_TARGET_LINUX -#define INCLUDE_xTaskGetCurrentTaskHandle 0 // not defined in POSIX simulator -#define INCLUDE_vTaskDelayUntil 1 -#else -#define INCLUDE_xTaskDelayUntil 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 -#endif -//Unlisted -#define INCLUDE_pxTaskGetStackStart 1 - -// -------------------- Trace Macros ----------------------- + #define configENABLE_BACKWARD_COMPATIBILITY 1 +#else /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */ + #define configENABLE_BACKWARD_COMPATIBILITY 0 +#endif /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */ + +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_xTaskGetIdleTaskHandle 1 +#define INCLUDE_xTaskAbortDelay 1 +#define INCLUDE_xSemaphoreGetMutexHolder 1 +#define INCLUDE_xTaskGetHandle 1 +#define INCLUDE_uxTaskGetStackHighWaterMark 1 +#define INCLUDE_uxTaskGetStackHighWaterMark2 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_xTaskResumeFromISR 1 +#define INCLUDE_xTimerPendFunctionCall 1 +#define INCLUDE_xTaskGetSchedulerState 1 +/* Unlisted */ +#define INCLUDE_pxTaskGetStackStart 1 + +/* -------------------- Trace Macros ----------------------- */ /* -For trace macros. -Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs -*/ + * For trace macros. + * Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs + */ #ifndef __ASSEMBLER__ -#if CONFIG_SYSVIEW_ENABLE -#include "SEGGER_SYSVIEW_FreeRTOS.h" -#undef INLINE // to avoid redefinition -#endif //CONFIG_SYSVIEW_ENABLE + #if CONFIG_SYSVIEW_ENABLE + #include "SEGGER_SYSVIEW_FreeRTOS.h" + #undef INLINE /* to avoid redefinition */ + #endif /* CONFIG_SYSVIEW_ENABLE */ + + #if CONFIG_FREERTOS_SMP + +/* Default values for trace macros added to ESP-IDF implementation of SYSVIEW + * that is not part of Amazon SMP FreeRTOS. */ + #ifndef traceISR_EXIT + #define traceISR_EXIT() + #endif + #ifndef traceISR_ENTER + #define traceISR_ENTER( _n_ ) + #endif + + #ifndef traceQUEUE_GIVE_FROM_ISR + #define traceQUEUE_GIVE_FROM_ISR( pxQueue ) + #endif + + #ifndef traceQUEUE_GIVE_FROM_ISR_FAILED + #define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue ) + #endif + + #ifndef traceQUEUE_SEMAPHORE_RECEIVE + #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue ) + #endif + #endif /* CONFIG_FREERTOS_SMP */ #endif /* def __ASSEMBLER__ */ -/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- - * - All FreeRTOS related configurations no part of Vanilla FreeRTOS goes into this section - * - FreeRTOS configurations related to SMP and ESP-IDF additions go into this section +/* ----------------------------------------------- Amazon SMP FreeRTOS ------------------------------------------------- + * - All Amazon SMP FreeRTOS specific configurations * ------------------------------------------------------------------------------------------------------------------ */ -// ------------------------- SMP --------------------------- - -#ifndef CONFIG_FREERTOS_UNICORE -#define portNUM_PROCESSORS 2 -#else -#define portNUM_PROCESSORS 1 -#endif -#define configNUM_CORES portNUM_PROCESSORS -#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID -#define configTASKLIST_INCLUDE_COREID 1 -#endif - -// ---------------------- Features ------------------------- - -#ifdef CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS -#define configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS 1 -#endif - -#if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER -#define configCHECK_MUTEX_GIVEN_BY_OWNER 1 -#else -#define configCHECK_MUTEX_GIVEN_BY_OWNER 0 -#endif +#if CONFIG_FREERTOS_SMP + #ifdef CONFIG_FREERTOS_UNICORE + #define configNUM_CORES 1 + #else + #define configNUM_CORES 2 + #endif /* CONFIG_FREERTOS_UNICORE */ + #define configUSE_CORE_AFFINITY 1 + #define configRUN_MULTIPLE_PRIORITIES 1 + #define configUSE_TASK_PREEMPTION_DISABLE 1 + +/* This is always enabled to call IDF style idle hooks, by can be "--Wl,--wrap" + * if users enable CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK. */ + #define configUSE_MINIMAL_IDLE_HOOK 1 + +/* IDF Newlib supports dynamic reentrancy. We provide our own __getreent() + * function. */ + #define configNEWLIB_REENTRANT_IS_DYNAMIC 1 +#endif /* CONFIG_FREERTOS_SMP */ + +/* -------------------------------------------------- IDF FreeRTOS ----------------------------------------------------- + * - All IDF FreeRTOS specific configurations + * ------------------------------------------------------------------------------------------------------------------ */ -#ifndef __ASSEMBLER__ -#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP -extern void vPortCleanUpTCB ( void *pxTCB ); -#define portCLEAN_UP_TCB( pxTCB ) vPortCleanUpTCB( pxTCB ) -#endif -#endif +#if !CONFIG_FREERTOS_SMP + #ifdef CONFIG_FREERTOS_UNICORE + #define configNUM_CORES 1 + #else + #define configNUM_CORES 2 + #endif /* CONFIG_FREERTOS_UNICORE */ + #ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID + #define configTASKLIST_INCLUDE_COREID 1 + #endif /* CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID */ + #ifdef CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS + #define configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS 1 + #endif /* CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS */ + #if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER + #define configCHECK_MUTEX_GIVEN_BY_OWNER 1 + #endif /* CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER */ +#endif /* !CONFIG_FREERTOS_SMP */ -#endif // CONFIG_FREERTOS_SMP +/* ------------------------------------------------ ESP-IDF Additions -------------------------------------------------- + * - Any other macros required by the rest of ESP-IDF + * ------------------------------------------------------------------------------------------------------------------ */ -#endif /* FREERTOS_CONFIG_H */ +#define portNUM_PROCESSORS configNUM_CORES diff --git a/tools/mocks/freertos/CMakeLists.txt b/tools/mocks/freertos/CMakeLists.txt index a72dee357791..e6f3a2a17117 100644 --- a/tools/mocks/freertos/CMakeLists.txt +++ b/tools/mocks/freertos/CMakeLists.txt @@ -10,7 +10,8 @@ set(include_dirs "${kernel_dir}/include" "${original_freertos_dir}/esp_additions/include" "${original_freertos_dir}/esp_additions/include/freertos" - "${kernel_dir}/portable/linux/include" # For FreeRTOSConfig_arch.h + "${original_freertos_dir}/esp_additions/arch/linux/include" # For "freertos/FreeRTOSConfig_arch.h" + "${kernel_dir}/portable/linux/include" # For "freertos/portmacro.h" "${kernel_dir}/include/freertos" # this is due to the way includes are generated in CMock (without freertos prefix) )