mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
freertos: always enable static allocation
to use it for newlib locks
This commit is contained in:
parent
286f06b274
commit
7f3b16a99d
@ -76,11 +76,6 @@ menu "Driver configurations"
|
|||||||
config TWAI_ISR_IN_IRAM
|
config TWAI_ISR_IN_IRAM
|
||||||
bool "Place TWAI ISR function into IRAM"
|
bool "Place TWAI ISR function into IRAM"
|
||||||
default n
|
default n
|
||||||
select FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
# We need to enable FREERTOS_SUPPORT_STATIC_ALLOCATION because the
|
|
||||||
# TWAI driver requires the use of FreeRTOS Queues and Semaphores from
|
|
||||||
# the driver ISR. These Queues and Semaphores need to be placed in
|
|
||||||
# DRAM thus FreeRTOS static allocation API is required.
|
|
||||||
help
|
help
|
||||||
Place the TWAI ISR in to IRAM. This will allow the ISR to avoid
|
Place the TWAI ISR in to IRAM. This will allow the ISR to avoid
|
||||||
cache misses, and also be able to run whilst the cache is disabled
|
cache misses, and also be able to run whilst the cache is disabled
|
||||||
|
@ -64,8 +64,6 @@ typedef enum {
|
|||||||
* buffer where this struct is of the exact size required to store a ring
|
* buffer where this struct is of the exact size required to store a ring
|
||||||
* buffer's control data structure.
|
* buffer's control data structure.
|
||||||
*
|
*
|
||||||
* @note The CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION option must be enabled for
|
|
||||||
* this structure to be available.
|
|
||||||
*/
|
*/
|
||||||
#if ( configSUPPORT_STATIC_ALLOCATION == 1)
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1)
|
||||||
typedef struct xSTATIC_RINGBUFFER {
|
typedef struct xSTATIC_RINGBUFFER {
|
||||||
@ -117,9 +115,6 @@ RingbufHandle_t xRingbufferCreateNoSplit(size_t xItemSize, size_t xItemNum);
|
|||||||
* @param[in] pxStaticRingbuffer Pointed to a struct of type StaticRingbuffer_t
|
* @param[in] pxStaticRingbuffer Pointed to a struct of type StaticRingbuffer_t
|
||||||
* which will be used to hold the ring buffer's data structure
|
* which will be used to hold the ring buffer's data structure
|
||||||
*
|
*
|
||||||
* @note The CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION option must be enabled
|
|
||||||
* for this to be available
|
|
||||||
*
|
|
||||||
* @note xBufferSize of no-split/allow-split buffers MUST be 32-bit aligned.
|
* @note xBufferSize of no-split/allow-split buffers MUST be 32-bit aligned.
|
||||||
*
|
*
|
||||||
* @return A handle to the created ring buffer
|
* @return A handle to the created ring buffer
|
||||||
|
@ -290,7 +290,6 @@ TEST_CASE_MULTIPLE_STAGES("can set sleep wake stub", "[deepsleep][reset=DEEPSLEE
|
|||||||
|
|
||||||
|
|
||||||
#if CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP
|
#if CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP
|
||||||
#if CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
|
|
||||||
/* Version of prepare_wake_stub() that sets up the deep sleep call while running
|
/* Version of prepare_wake_stub() that sets up the deep sleep call while running
|
||||||
from RTC memory as stack, with a high frequency timer also writing RTC FAST
|
from RTC memory as stack, with a high frequency timer also writing RTC FAST
|
||||||
@ -346,7 +345,6 @@ TEST_CASE_MULTIPLE_STAGES("can set sleep wake stub from stack in RTC RAM", "[dee
|
|||||||
prepare_wake_stub_from_rtc,
|
prepare_wake_stub_from_rtc,
|
||||||
check_wake_stub);
|
check_wake_stub);
|
||||||
|
|
||||||
#endif // CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
#endif // CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP
|
#endif // CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP
|
||||||
|
|
||||||
TEST_CASE("wake up using ext0 (13 high)", "[deepsleep][ignore]")
|
TEST_CASE("wake up using ext0 (13 high)", "[deepsleep][ignore]")
|
||||||
|
@ -205,36 +205,14 @@ menu "FreeRTOS"
|
|||||||
For most uses, the default of 16 is OK.
|
For most uses, the default of 16 is OK.
|
||||||
|
|
||||||
config FREERTOS_SUPPORT_STATIC_ALLOCATION
|
config FREERTOS_SUPPORT_STATIC_ALLOCATION
|
||||||
bool "Enable FreeRTOS static allocation API"
|
# Always enabled.
|
||||||
default n
|
# Kconfig option preserved for compatibility with code
|
||||||
help
|
# which checked for CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION.
|
||||||
FreeRTOS gives the application writer the ability to instead provide the memory
|
bool
|
||||||
themselves, allowing the following objects to optionally be created without any
|
default y
|
||||||
memory being allocated dynamically:
|
|
||||||
|
|
||||||
- Tasks
|
|
||||||
- Software Timers (Daemon task is still dynamic. See documentation)
|
|
||||||
- Queues
|
|
||||||
- Event Groups
|
|
||||||
- Binary Semaphores
|
|
||||||
- Counting Semaphores
|
|
||||||
- Recursive Semaphores
|
|
||||||
- Mutexes
|
|
||||||
|
|
||||||
Whether it is preferable to use static or dynamic memory allocation is dependent on
|
|
||||||
the application, and the preference of the application writer. Both methods have pros
|
|
||||||
and cons, and both methods can be used within the same RTOS application.
|
|
||||||
|
|
||||||
Creating RTOS objects using statically allocated RAM has the benefit of providing the application writer
|
|
||||||
with more control: RTOS objects can be placed at specific memory locations. The maximum RAM footprint can
|
|
||||||
be determined at link time, rather than run time. The application writer does not need to concern
|
|
||||||
themselves with graceful handling of memory allocation failures. It allows the RTOS to be used in
|
|
||||||
applications that simply don't allow any dynamic memory allocation (although FreeRTOS includes allocation
|
|
||||||
schemes that can overcome most objections).
|
|
||||||
|
|
||||||
config FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
config FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
||||||
bool "Enable static task clean up hook"
|
bool "Enable static task clean up hook"
|
||||||
depends on FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
Enable this option to make FreeRTOS call the static task clean up hook when a task is deleted.
|
Enable this option to make FreeRTOS call the static task clean up hook when a task is deleted.
|
||||||
|
@ -239,7 +239,7 @@
|
|||||||
kept at 1. */
|
kept at 1. */
|
||||||
#define configKERNEL_INTERRUPT_PRIORITY 1
|
#define configKERNEL_INTERRUPT_PRIORITY 1
|
||||||
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
#define configSUPPORT_STATIC_ALLOCATION CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
||||||
|
@ -291,7 +291,7 @@ int xt_clock_freq(void) __attribute__((deprecated));
|
|||||||
#define configUSE_NEWLIB_REENTRANT 1
|
#define configUSE_NEWLIB_REENTRANT 1
|
||||||
|
|
||||||
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
#define configSUPPORT_STATIC_ALLOCATION CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# sdkconfig replacement configurations for deprecated options formatted as
|
# sdkconfig replacement configurations for deprecated options formatted as
|
||||||
# CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION
|
# CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION
|
||||||
|
|
||||||
CONFIG_SUPPORT_STATIC_ALLOCATION CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
||||||
CONFIG_TIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY
|
CONFIG_TIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY
|
||||||
CONFIG_TIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
|
CONFIG_TIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
|
||||||
|
@ -29,7 +29,6 @@
|
|||||||
#include "unity.h"
|
#include "unity.h"
|
||||||
#include "test_utils.h"
|
#include "test_utils.h"
|
||||||
|
|
||||||
#ifdef CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
/* ---------------------Test 1: Backported Timer functions-----------------------
|
/* ---------------------Test 1: Backported Timer functions-----------------------
|
||||||
* Test xTimerCreateStatic(), vTimerSetTimerId(), xTimerGetPeriod(), xTimerGetExpiryTime()
|
* Test xTimerCreateStatic(), vTimerSetTimerId(), xTimerGetPeriod(), xTimerGetExpiryTime()
|
||||||
*
|
*
|
||||||
@ -201,7 +200,6 @@ TEST_CASE("Test FreeRTOS backported eventgroup functions", "[freertos]")
|
|||||||
//Cleanup static event
|
//Cleanup static event
|
||||||
vEventGroupDelete(eg_handle);
|
vEventGroupDelete(eg_handle);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* --------Test backported thread local storage pointer and deletion cb feature----------
|
/* --------Test backported thread local storage pointer and deletion cb feature----------
|
||||||
* vTaskSetThreadLocalStoragePointerAndDelCallback()
|
* vTaskSetThreadLocalStoragePointerAndDelCallback()
|
||||||
|
@ -69,7 +69,6 @@ TEST_CASE("Recurring FreeRTOS timers", "[freertos]")
|
|||||||
TEST_ASSERT( xTimerDelete(recurring, 1) );
|
TEST_ASSERT( xTimerDelete(recurring, 1) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
TEST_CASE("Static timer creation", "[freertos]")
|
TEST_CASE("Static timer creation", "[freertos]")
|
||||||
{
|
{
|
||||||
StaticTimer_t static_timer;
|
StaticTimer_t static_timer;
|
||||||
@ -84,4 +83,3 @@ TEST_CASE("Static timer creation", "[freertos]")
|
|||||||
|
|
||||||
TEST_ASSERT_NOT_NULL(created_timer);
|
TEST_ASSERT_NOT_NULL(created_timer);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
@ -104,7 +104,6 @@ menu "SPI Flash driver"
|
|||||||
# The bus lock on SPI1 is meaningless when the legacy implementation is used, or the SPI
|
# The bus lock on SPI1 is meaningless when the legacy implementation is used, or the SPI
|
||||||
# driver does not support SPI1.
|
# driver does not support SPI1.
|
||||||
depends on !SPI_FLASH_USE_LEGACY_IMPL && !IDF_TARGET_ESP32S2
|
depends on !SPI_FLASH_USE_LEGACY_IMPL && !IDF_TARGET_ESP32S2
|
||||||
select FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
help
|
help
|
||||||
Each SPI bus needs a lock for arbitration among devices. This allows multiple
|
Each SPI bus needs a lock for arbitration among devices. This allows multiple
|
||||||
devices on a same bus, but may reduce the speed of esp_flash driver access to the
|
devices on a same bus, but may reduce the speed of esp_flash driver access to the
|
||||||
|
@ -4,7 +4,6 @@ menu "TinyUSB"
|
|||||||
bool "Enable TinyUSB driver"
|
bool "Enable TinyUSB driver"
|
||||||
default n
|
default n
|
||||||
depends on IDF_TARGET_ESP32S2
|
depends on IDF_TARGET_ESP32S2
|
||||||
select FREERTOS_SUPPORT_STATIC_ALLOCATION
|
|
||||||
select FREERTOS_USE_AUTHENTIC_INCLUDE_PATHS
|
select FREERTOS_USE_AUTHENTIC_INCLUDE_PATHS
|
||||||
help
|
help
|
||||||
Adds support for TinyUSB
|
Adds support for TinyUSB
|
||||||
|
@ -438,9 +438,6 @@ ESP-IDF FreeRTOS configurations, see :doc:`FreeRTOS <../api-reference/kconfig>`
|
|||||||
will be modified. For more details regarding the effects of running ESP-IDF FreeRTOS
|
will be modified. For more details regarding the effects of running ESP-IDF FreeRTOS
|
||||||
on a single core, search for occurences of ``CONFIG_FREERTOS_UNICORE`` in the ESP-IDF components.
|
on a single core, search for occurences of ``CONFIG_FREERTOS_UNICORE`` in the ESP-IDF components.
|
||||||
|
|
||||||
:ref:`CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION` will enable the
|
|
||||||
functionality of :cpp:func:`xTaskCreateStaticPinnedToCore` in ESP-IDF FreeRTOS
|
|
||||||
|
|
||||||
:ref:`CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION` will trigger a halt in
|
:ref:`CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION` will trigger a halt in
|
||||||
particular functions in ESP-IDF FreeRTOS which have not been fully tested
|
particular functions in ESP-IDF FreeRTOS which have not been fully tested
|
||||||
in an SMP context.
|
in an SMP context.
|
||||||
|
@ -412,9 +412,6 @@ The :cpp:func:`xRingbufferCreateStatic` can be used to create ring buffers with
|
|||||||
|
|
||||||
The manner in which these blocks are allocated will depend on the users requirements (e.g. all blocks being statically declared, or dynamically allocated with specific capabilities such as external RAM).
|
The manner in which these blocks are allocated will depend on the users requirements (e.g. all blocks being statically declared, or dynamically allocated with specific capabilities such as external RAM).
|
||||||
|
|
||||||
.. note::
|
|
||||||
The :ref:`CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION` option must be enabled in `menuconfig` for statically allocated ring buffers to be available.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
When deleting a ring buffer created via :cpp:func:`xRingbufferCreateStatic`,
|
When deleting a ring buffer created via :cpp:func:`xRingbufferCreateStatic`,
|
||||||
the function :cpp:func:`vRingbufferDelete` will not free any of the memory blocks. This must be done manually by the user after :cpp:func:`vRingbufferDelete` is called.
|
the function :cpp:func:`vRingbufferDelete` will not free any of the memory blocks. This must be done manually by the user after :cpp:func:`vRingbufferDelete` is called.
|
||||||
|
@ -14,7 +14,6 @@ CONFIG_BLE_MESH_PB_GATT=y
|
|||||||
CONFIG_BLE_MESH_CFG_CLI=y
|
CONFIG_BLE_MESH_CFG_CLI=y
|
||||||
|
|
||||||
CONFIG_FREERTOS_UNICORE=y
|
CONFIG_FREERTOS_UNICORE=y
|
||||||
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
|
|
||||||
CONFIG_ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY=y
|
CONFIG_ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY=y
|
||||||
CONFIG_BLE_MESH_MEM_ALLOC_MODE_IRAM_8BIT=y
|
CONFIG_BLE_MESH_MEM_ALLOC_MODE_IRAM_8BIT=y
|
||||||
CONFIG_BLE_MESH_FREERTOS_STATIC_ALLOC=y
|
CONFIG_BLE_MESH_FREERTOS_STATIC_ALLOC=y
|
||||||
|
@ -12,7 +12,6 @@ CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y
|
|||||||
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
|
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
|
||||||
CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE=y
|
CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE=y
|
||||||
CONFIG_FREERTOS_LEGACY_HOOKS=y
|
CONFIG_FREERTOS_LEGACY_HOOKS=y
|
||||||
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
|
|
||||||
CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP=y
|
CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP=y
|
||||||
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=10
|
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=10
|
||||||
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
||||||
|
@ -12,7 +12,6 @@ CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y
|
|||||||
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
|
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
|
||||||
CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE=y
|
CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE=y
|
||||||
CONFIG_FREERTOS_LEGACY_HOOKS=y
|
CONFIG_FREERTOS_LEGACY_HOOKS=y
|
||||||
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
|
|
||||||
CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP=y
|
CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP=y
|
||||||
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=10
|
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=10
|
||||||
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
||||||
|
@ -17,7 +17,6 @@ CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS=y
|
|||||||
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=7
|
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=7
|
||||||
CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
|
CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
|
||||||
CONFIG_COMPILER_STACK_CHECK=y
|
CONFIG_COMPILER_STACK_CHECK=y
|
||||||
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
|
|
||||||
CONFIG_ESP_TIMER_PROFILING=y
|
CONFIG_ESP_TIMER_PROFILING=y
|
||||||
CONFIG_ADC_DISABLE_DAC=n
|
CONFIG_ADC_DISABLE_DAC=n
|
||||||
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
|
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
|
||||||
|
Loading…
Reference in New Issue
Block a user