From 6ab552a6eae1aa87f8575e8e73ed7372b98e7ed8 Mon Sep 17 00:00:00 2001 From: Darian Leung Date: Fri, 8 Sep 2017 19:50:15 +0800 Subject: [PATCH] docs: Added documentation for FreeRTOS SMP changes Added documentation about the ESP-IDF changes to FreeRTOS. The documentation covers changes to the following FreeRTOS aspects. - Task Creation - Affects on scheduling (Task skipping, scheduler suspension, tick synchronicity) - Critical sections and disabling interrupts - Thread Local Storage Pointers and deletion callbacks - Configuring ESP-IDF FreeRTOS --- components/freertos/readme_smp.txt | 27 -- .../freertos-ready-task-list-smp-pxIndex.png | Bin 0 -> 29564 bytes docs/_static/freertos-ready-task-list-smp.png | Bin 0 -> 61732 bytes docs/_static/freertos-ready-task-list.png | Bin 0 -> 49709 bytes docs/api-guides/freertos-smp.rst | 369 ++++++++++++++++++ docs/api-guides/index.rst | 1 + 6 files changed, 370 insertions(+), 27 deletions(-) delete mode 100644 components/freertos/readme_smp.txt create mode 100644 docs/_static/freertos-ready-task-list-smp-pxIndex.png create mode 100644 docs/_static/freertos-ready-task-list-smp.png create mode 100644 docs/_static/freertos-ready-task-list.png create mode 100644 docs/api-guides/freertos-smp.rst diff --git a/components/freertos/readme_smp.txt b/components/freertos/readme_smp.txt deleted file mode 100644 index fdd9b146b1..0000000000 --- a/components/freertos/readme_smp.txt +++ /dev/null @@ -1,27 +0,0 @@ -This version of FreeRTOS has been modified by Espressif to be SMP-aware. The -API is similar to the original FreeRTOS API, with the following changes: - -- The xTaskCreate() function now creates tasks that will run on the first -core only, for backwards compatibility. To schedule tasks on another core, -use xTaskCreatePinnedToCore(), which will accept a core ID as the last -argument. If this is the constant tskNO_AFFINITY, the task will be dynamically -scheduled on whichever core has time. - -- vTaskSuspendAll/vTaskResumeAll in non-SMP FreeRTOS will suspend the scheduler -so no other tasks than the current one will run. In this SMP version, it will -only suspend the scheduler ON THE CURRENT CORE. That is, tasks scheduled to -run on the other core(s) or without a specific CPU affinity, will still be -able to run. - -- Enabling and disabling interrupts will only affect the current core. -Disabling the interrupts will not disallow other tasks to run as -it would on a single-core system: the other core still will keep on -executing all it's own. Use a mux, queue or semaphore to protect your -structures instead. - -- This FreeRTOS version has the task local storage backported from the 8.2.x -versions. It, however, has an addition: you can also set a callback when you -set the pointer. This callback will be called by the idle task, with the -pointer as an argument, when the thread is destroyed. This depends on the idle -task getting CPU time; when a thread is hogging the CPU without yielding, -the idle thread won't be called and the delete callback won't be called either. diff --git a/docs/_static/freertos-ready-task-list-smp-pxIndex.png b/docs/_static/freertos-ready-task-list-smp-pxIndex.png new file mode 100644 index 0000000000000000000000000000000000000000..08346858e9d81a37fef66821004776bb110fb246 GIT binary patch literal 29564 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 literal 0 HcmV?d00001 diff --git a/docs/_static/freertos-ready-task-list-smp.png b/docs/_static/freertos-ready-task-list-smp.png new file mode 100644 index 0000000000000000000000000000000000000000..820007afc5a0d29ce4f805339e453673a594dd65 GIT binary patch literal 61732 zcmeAS@N?(olHy`uVBq!ia0y~yVCG<8U<~14V_;zXeo!lvNA9*a29w(7Beu2se&-0XOPMV28ItiJzX3_D&pSMa?TJvx^+J@ z&u^nQ*2ZsmZu9)s>d|Rhb9f(@vX+JtkG0l>!uWuLtmZ;9Gdc|24jwroA*^WFsdjOP z%i_w)&dQV3H$R)_pRLx{Us?aR>Q&6EZ(oA$ZhybG_Whh+`+nu!e;2&m@9(RSxmH_C z;tLqt@3 zjg*?uV`*Lyf7}neH#PcqXRUzV)CJ4!*DhsU@L%z<{$7W|l`Z>kUkZ>jKlxjHb$alV z_mlPZ99sePn7D*Baf@~_-H~6u?tXwvHIH$7@Rw-G z>zY+}IbSWkyLt2K4R;-OU3_(~dsfVjs~*SXB~CGK+Q0Hk$i@1Q|I@Q=wpoAZ4mzpx zEpAqr*8IbnQW}rnne7#NXz|V&Z%DD>~RyZ*(vYqn7(ED<+evDBRXQo!X!nT{M zSo9Sy$8#!+<%uRHb(hVZv}O4Q&&x;7EVEmiP^2rkpi*MB(3h2c3$B})2pb>%wWa4| z>Hd>bL-tM4PFyVVD$RF8)mc8K-pH--XVzQJ6{tASdV1~ar|$c6|Mo@gi}tx&vt48F z4zHfLjp6e@sa<Vnh7O!MA7{(g&EOuu<%*(C9M33@S;zu ze?BdIt{LuBy*q8jvo$Y_VjuW~F==+ot7wKd<(EHEZsgRcYvuTKM`gc{wwub-4_m^^ zk4$~AT6tnf(>(70T`sTp(Tg~=Y_(>dTB>uEjmbTTbKYWQ%@)%XZo&0N8V&(MtF4V> zIV~@~loX2z_;6qC+@kJy=LgGUI9c>grd?ljHBi(-&|dC!fJL>b@A=|5 ziJXFsobrbcu3EeHs;unmU*6K}*FO90uMS;V>VNLQPD{7ID~Go}`H?Ao?8uL}wJyKK zPEKuj?!W$J{Q2r@tqZ&?wmt1()pIDj^sC!_y$E}_{hTjnmJ0=GWe0gXG|pc6l0oFv z_3P8S=f9Vosd3{y|FrAcOX~DhJ?987w*IBC>YC?Nfo0xZyM#7ao?dIsb@zYWhT@74 zwxIQVr`1-Z$sO~vJUK;c{*+uMGfUCx(58N~<;)rDbyf;px^Uvv#x>K*{iIW-6sg|$ z%)ynV=GeGq=DG6=_=4tJJE^^2c0tI9*K675(-EpKBn!PQ`rB%MybDvDSmOSE$pxXN zuvwjHM~|w_I3?w&TCt5~O;KxS#5ogPSB704yOnhgF53|H=;<0(jUd^T*SEN`9=q_E zEwp3iQ}3^r^{<&~vF|_Jb==ead9LA-@SPI3(tG^GBP8at1co(jz18kDBfj`p*DtO` zmp46c@y=eeRn(@tsP|@mNlGZw(PO<*(SK7etDRj_{XPDx>-npjR%9!jx+s{&6u{}X zmNB(tHA~gBtzI0jB9|=`%3Aa!GkypECDY8Q1x8*o-|U$eWPYe>%9XROnbN0}wF;&f zxvB)^ZCJ?VA$p*TqdQu1QuqU-2MVz>t_8>jIrtspIKt0p5^JISW|T4T;1-`9Bve|WZlR59|9EA?Iq&($KtWpKj^iF4f30~4WrRf7t^(1?Rn2##)vW*cN=R0}0 zYj>==Q2%j7gY=ekQ8rQ6Y*n@;nTn3wJfiRQtWJ z=^FF2Z{7@%3{b7{k8@zIS9_dz^vgSq8SY08uV#I8cB; tXcrrxoE^4@`N=CN$>> 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 literal 0 HcmV?d00001 diff --git a/docs/api-guides/freertos-smp.rst b/docs/api-guides/freertos-smp.rst new file mode 100644 index 0000000000..7ccba1b10a --- /dev/null +++ b/docs/api-guides/freertos-smp.rst @@ -0,0 +1,369 @@ +ESP-IDF FreeRTOS SMP Changes +============================ + +Overview +-------- + +The vanilla FreeRTOS is designed to run on a single core. However the ESP32 is +dual core containing a Protocol CPU (known as **CPU 0** or **PRO_CPU**) and an +Application CPU (known as **CPU 1** or **APP_CPU**). The two cores are +identical in practice and share the same memory. This allows the two cores to +run tasks interchangeably between them. + +The ESP-IDF FreeRTOS is a modified version of vanilla FreeRTOS which supports +symmetric multiprocessing (SMP). ESP-IDF FreeRTOS is based on the Xtensa port +of FreeRTOS v8.2.0, however features such as static task creation and Thread +Local Storage Pointers have been backported from later versions of FreeRTOS. +This guide outlines the major differences between vanilla FreeRTOS and +ESP-IDF FreeRTOS. The API reference for vanilla FreeRTOS can be found +via http://www.freertos.org/a00106.html + +:ref:`tasks-and-task-creation`: Use ``xTaskCreatePinnedToCore()`` or +``xTaskCreateStaticPinnedToCore()`` to create tasks in ESP-IDF FreeRTOS. The +last parameter of the two functions is ``xCoreID``. This parameter specifies +which core the task is pinned to. Acceptable values are ``0`` for **PRO_CPU**, +``1`` for **APP_CPU**, or ``tskNO_AFFINITY`` which allows the task to run on +both. + +:ref:`round-robin-scheduling`: The ESP-IDF FreeRTOS scheduler will skip tasks when +implementing Round-Robin scheduling between multiple tasks in the Ready state +that are of the same priority. To avoid this behavior, ensure that those tasks either +enter a blocked state, or are distributed across a wider range of priorities. + +:ref:`scheduler-suspension`: Suspending the scheduler in ESP-IDF FreeRTOS will only +affect the scheduler on the the calling core. In other words, calling +``vTaskSuspendAll()`` on **PRO_CPU** will not prevent **APP_CPU** from scheduling, and +vice versa. Use critical sections or semaphores instead for simultaneous +access protection. + +:ref:`tick-interrupt-synchronicity`: Tick interrupts of **PRO_CPU** and **APP_CPU** +are not synchronized. Do not expect to use ``vTaskDelay`` or +``vTaskDelayUntil`` as an accurate method of synchronizing task execution +between the two cores. Use a counting semaphore instead as their context +switches are not tied to tick interrupts due to preemption. + +:ref:`critical-sections`: In ESP-IDF FreeRTOS, critical sections are implemented using +mutexes. Entering critical sections involve taking a mutex, then disabling the +scheduler and interrupts of the calling core. However the other core is left +unaffected. If the other core attemps to take same mutex, it will spin until +the calling core has released the mutex by exiting the critical section. + +:ref:`deletion-callbacks`: ESP-IDF FreeRTOS has +backported the Thread Local Storage Pointers feature. However they have the +extra feature of deletion callbacks. Deletion callbacks are used to +automatically free memory used by Thread Local Storage Pointers during the task +deletion. Call ``vTaskSetThreadLocalStoragePointerAndDelCallback()`` +to set Thread Local Storage Pointers and deletion callbacks. + +:ref:`esp-idf-freertos-configuration`: Several aspects of ESP-IDF FreeRTOS can be +configured using ``make meunconfig`` such as running ESP-IDF in Unicore Mode, +or configuring the number of Thread Local Storage Pointers each task will have. + + +.. _tasks-and-task-creation: + +Tasks and Task Creation +----------------------- + +Tasks in ESP-IDF FreeRTOS are designed to run on a particular core, therefore +two new task creation functions have been added to ESP-IDF FreeRTOS by +appending ``PinnedToCore`` to the names of the task creation functions in +vanilla FreeRTOS. The vanilla FreeRTOS functions of ``xTaskCreate()`` +and ``xTaskCreateStatic()`` have led to the addition of +``xTaskCreatePinnedToCore()`` and ``xTaskCreateStaticPinnedToCore()`` in +ESP-IDF FreeRTOS. + +For more details see :component_file:`freertos/task.c` + +The ESP-IDF FreeRTOS task creation functions are nearly identical to their +vanilla counterparts with the exception of the extra parameter known as +``xCoreID``. This parameter specifies the core on which the task should run on +and can be one of the following values. + + - ``0`` pins the task to **PRO_CPU** + - ``1`` pins the task to **APP_CPU** + - ``tskNO_AFFINITY`` allows the task to be run on both CPUs + +For example ``xTaskCreatePinnedToCore(tsk_callback, “APP_CPU Task”, 1000, NULL, 10, NULL, 1)`` +creates a task of priority 10 that is pinned to **APP_CPU** with a stack size +of 1000 bytes. It should be noted that the ``uxStackDepth`` parameter in +vanilla FreeRTOS specifies a task’s stack depth in terms of the number of +words, whereas ESP-IDF FreeRTOS specifies the stack depth in terms of bytes. + +Note that the vanilla FreeRTOS functions ``xTaskCreate`` and +``xTaskCreateStatic`` have been macro defined in ESP-IDF FreeRTOS to call +``xTaskCreatePinnedToCore()`` and ``xTaskCreateStaticPinnedToCore()`` +respectively with ``tskNO_AFFINITY`` as the ``xCoreID`` value. + +Each Task Control Block (TCB) in ESP-IDF stores the ``xCoreID`` as a member. +Hence when each core calls the scheduler to select a task to run, the +``xCoreID`` member will allow the scheduler to determine if a given task is +permitted to run on the core that called it. + +Scheduling +---------- + +The vanilla FreeRTOS implements scheduling in the ``vTaskSwitchContext()`` +function. This function is responsible for selecting the highest priority task +to run from a list of tasks in the Ready state known as the Ready Tasks List +(described in the next section). In ESP-IDF FreeRTOS, each core will call +``vTaskSwitchContext()`` independently to select a task to run from the +Ready Tasks List which is shared between both cores. There are several +differences in scheduling behavior between vanilla and ESP-IDF FreeRTOS such as +differences in Round Robin scheduling, scheduler suspension, and tick interrupt +synchronicity. + +.. _round-robin-scheduling: + +Round Robin Scheduling +^^^^^^^^^^^^^^^^^^^^^^ + +Given multiple tasks in the Ready state and of the same priority, vanilla +FreeRTOS implements Round Robin scheduling between each task. This will result +in running those tasks in turn each time the scheduler is called +(e.g. every tick interrupt). On the other hand, the ESP-IDF FreeRTOS scheduler +may skip tasks when Round Robin scheduling multiple Ready state tasks of the +same priority. + +The issue of skipping tasks during Round Robin scheduling arises from the way +the Ready Tasks List is implemented in FreeRTOS. In vanilla FreeRTOS, +``pxReadyTasksList`` is used to store a list of tasks that are in the Ready +state. The list is implemented as an array of length ``configMAX_PRIORITIES`` +where each element of the array is a linked list. Each linked list is of type +``List_t`` and contains TCBs of tasks of the same priority that are in the +Ready state. The following diagram illustrates the ``pxReadyTasksList`` +structure. + +.. figure:: ../_static/freertos-ready-task-list.png + :align: center + :alt: Vanilla FreeRTOS Ready Task List Structure + + Illustration of FreeRTOS Ready Task List Data Structure + + +Each linked list also contains a ``pxIndex`` which points to the last TCB +returned when the list was queried. This index allows the ``vTaskSwitchContext()`` +to start traversing the list at the TCB immediately after ``pxIndex`` hence +implementing Round Robin Scheduling between tasks of the same priority. + +In ESP-IDF FreeRTOS, the Ready Tasks List is shared between cores hence +``pxReadyTasksList`` will contain tasks pinned to different cores. When a core +calls the scheduler, it is able to look at the ``xCoreID`` member of each TCB +in the list to determine if a task is allowed to run on calling the core. The +ESP-IDF FreeRTOS ``pxReadyTasksList`` is illustrated below. + +.. figure:: ../_static/freertos-ready-task-list-smp.png + :align: center + :alt: ESP-IDF FreeRTOS Ready Task List Structure + + Illustration of FreeRTOS Ready Task List Data Structure in ESP-IDF + +Therefore when **PRO_CPU** calls the scheduler, it will only consider the tasks +in blue or purple. Whereas when **APP_CPU** calls the scheduler, it will only +consider the tasks in orange or purple. + +Although each TCB has an ``xCoreID`` in ESP-IDF FreeRTOS, the linked list of +each priority only has a single ``pxIndex``. Therefore when the scheduler is +called from a particular core and traverses the linked list, it will skip all +TCBs pinned to the other core and point the pxIndex at the selected task. If +the other core then calls the scheduler, it will traverse the linked list +starting at the TCB immediately after ``pxIndex``. Therefore, TCBs skipped on +the previous scheduler call from the other core would not be considered on the +current scheduler call. This issue is demonstrated in the following +illustration. + +.. figure:: ../_static/freertos-ready-task-list-smp-pxIndex.png + :align: center + :alt: ESP-IDF pxIndex Behavior + + Illustration of pxIndex behavior in ESP-IDF FreeRTOS + +Referring to the illustration above, assume that priority 9 is the highest +priority, and none of the tasks in priority 9 will block hence will always be +either in the running or Ready state. + +1) **PRO_CPU** calls the scheduler and selects Task A to run, hence moves +``pxIndex`` to point to Task A + +2) **APP_CPU** calls the scheduler and starts traversing from the task after +``pxIndex`` which is Task B. However Task B is not selected to run as it is not +pinned to **APP_CPU** hence it is skipped and Task C is selected instead. +``pxIndex`` now points to Task C + +3) **PRO_CPU** calls the scheduler and starts traversing from Task D. It skips +Task D and selects Task E to run and points ``pxIndex`` to Task E. Notice that +Task B isn’t traversed because it was skipped the last time **APP_CPU** called +the scheduler to traverse the list. + +4) The same situation with Task D will occur if **APP_CPU** calls the +scheduler again as ``pxIndex`` now points to Task E + +One solution to the issue of task skipping is to ensure that every task will +enter a blocked state so that they are removed from the Ready Task List. +Another solution is to distribute tasks across multiple priorities such that +a given priority will not be assigned multiple tasks that are pinned to +different cores. + +.. _scheduler-suspension: + +Scheduler Suspension +^^^^^^^^^^^^^^^^^^^^ + +In vanilla FreeRTOS, suspending the scheduler via ``vTaskSuspendAll()`` will +prevent calls of ``vTaskSwitchContext()`` from context switching until the +scheduler has been resumed with ``vTaskResumeAll()``. However servicing ISRs +are still permitted. Therefore any changes in task states as a result from the +current running task or ISRSs will not be executed until the scheduler is +resumed. Scheduler suspension in vanilla FreeRTOS is a common protection method +against simultaneous access of data shared between tasks, whilst still allowing +ISRs to be serviced. + +In ESP-IDF FreeRTOS, ``vTaskSuspendAll()`` will only prevent calls of +``vTaskSwitchContext()`` from switching contexts on the core that called for the +suspension. Hence if **PRO_CPU** calls ``vTaskSuspendAll()``, **APP_CPU** will +still be able to switch contexts. If data is shared between tasks that are +pinned to different cores, scheduler suspension is **NOT** a valid method of +protection against simultaneous access. Consider using critical sections +(disables interrupts) or semaphores (does not disable interrupts) instead when +protecting shared resources in ESP-IDF FreeRTOS. + +.. _tick-interrupt-synchronicity: + +Tick Interrupt Synchronicity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In ESP-IDF FreeRTOS, tasks on different cores that unblock on the same tick +count might not run at exactly the same time due to the scheduler calls from +each core being independent, and the tick interrupts to each core being +unsynchronized. + +In vanilla FreeRTOS the tick interrupt triggers a call to +``xTaskIncrementTick()`` which is responsible for incrementing the tick +counter, checking if tasks which have called ``vTaskDelay()`` have fulfilled +their delay period, and moving those tasks from the Delayed Task List to the +Ready Task List. The tick interrupt will then call the scheduler if a context +switch is necessary. + +In ESP-IDF FreeRTOS, delayed tasks are unblocked with reference to the tick +interrupt on PRO_CPU as PRO_CPU is responsible for incrementing the shared tick +count. However tick interrupts to each core might not be synchronized (same +frequency but out of phase) hence when PRO_CPU receives a tick interrupt, +APP_CPU might not have received it yet. Therefore if multiple tasks of the same +priority are unblocked on the same tick count, the task pinned to PRO_CPU will +run immediately whereas the task pinned to APP_CPU must wait until APP_CPU +receives its out of sync tick interrupt. Upon receiving the tick interrupt, +APP_CPU will then call for a context switch and finally switches contexts to +the newly unblocked task. + +Therefore, task delays should **NOT** be used as a method of synchronization +between tasks in ESP-IDF FreeRTOS. Instead, consider using a counting semaphore +to unblock multiple tasks at the same time. + +.. _critical-sections: + +Critical Sections & Disabling Interrupts +---------------------------------------- + +Vanilla FreeRTOS implements critical sections in ``vTaskEnterCritical`` which +disables the scheduler and calls ``portDISABLE_INTERRUPTS``. This prevents +context switches and servicing of ISRs during a critical section. Therefore, +critical sections are used as a valid protection method against simultaneous +access in vanilla FreeRTOS. + +On the other hand, the ESP32 has no hardware method for cores to disable each +other’s interrupts. Calling ``portDISABLE_INTERRUPTS()`` will have no effect on +the interrupts of the other core. Therefore, disabling interrupts is **NOT** +a valid protection method against simultaneous access to shared data as it +leaves the other core free to access the data even if the current core has +disabled its own interrupts. + +For this reason, ESP-IDF FreeRTOS implements critical sections using mutexes, +and calls to enter or exit a critical must provide a mutex that is associated +with a shared resource requiring access protection. When entering a critical +section in ESP-IDF FreeRTOS, the calling core will disable its scheduler and +interrupts similar to the vanilla FreeRTOS implementation. However, the calling +core will also take the mutex whilst the other core is left unaffected during +the critical section. If the other core attempts to take the same mutex, it +will spin until the mutex is released. Therefore, the ESP-IDF FreeRTOS +implementation of critical sections allows a core to have protected access to a +shared resource without disabling the other core. The other core will only be +affected if it tries to concurrently access the same resource. + +The ESP-IDF FreeRTOS critical section functions have been modified as follows… + + - ``taskENTER_CRITICAL(mux)``, ``taskENTER_CRITICAL_ISR(mux)``, + ``portENTER_CRITICAL(mux)``, ``portENTER_CRITICAL_ISR(mux)`` are all macro + defined to call ``vTaskEnterCritical()`` + + - ``taskEXIT_CRITICAL(mux)``, ``taskEXIT_CRITICAL_ISR(mux)``, + ``portEXIT_CRITICAL(mux)``, ``portEXIT_CRITICAL_ISR(mux)`` are all macro + defined to call ``vTaskExitCritical()`` + +For more details see :component_file:`freertos/include/freertos/portmacro.h` +and :component_file:`freertos/task.c` + +It should be noted that when modifying vanilla FreeRTOS code to be ESP-IDF +FreeRTOS compatible, it is trivial to modify the type of critical section +called as they are all defined to call the same function. As long as the same +mutex is provided upon entering and exiting, the type of call should not +matter. + +.. _deletion-callbacks: + +Thread Local Storage Pointers & Deletion Callbacks +-------------------------------------------------- + +Thread Local Storage Pointers are pointers stored directly in the TCB which +allows each task to have a pointer to a data structure containing that is +specific to that task. However vanilla FreeRTOS provides no functionality to +free the memory pointed to by the Thread Local Storage Pointers. Therefore if +the memory pointed to by the Thread Local Storage Pointers is not explicitly +freed by the user before a task is deleted, memory leak will occur. + +ESP-IDF FreeRTOS provides the added feature of deletion callbacks. These +deletion callbacks are used to automatically free the memory pointed to by the +Thread Local Storage Pointers when a task is deleted. Each Thread Local Storage +Pointer can have its own call back, and these call backs are called when the +Idle tasks cleans up a deleted tasks. + +Vanilla FreeRTOS sets a Thread Local Storage Pointers using +``vTaskSetThreadLocalStoragePointer()`` whereas ESP-IDF FreeRTOS sets a Thread +Local Storage Pointers and Deletion Callbacks using +``vTaskSetThreadLocalStoragePointerAndDelCallback()`` which accepts a pointer +to the deletion call back as an extra parameter of type +```TlsDeleteCallbackFunction_t``. Calling the vanilla FreeRTOS API +``vTaskSetThreadLocalStoragePointer()`` is still valid however it is internally +defined to call ``vTaskSetThreadLocalStoragePointerAndDelCallback()`` with a +``NULL`` pointer as the deletion call back. This results in the selected Thread +Local Storage Pointer to have no deletion call back. + +For more details see :component_file:`freertos/include/freertos/task.h` + +.. _esp-idf-freertos-configuration: + +Configuring ESP-IDF FreeRTOS +---------------------------- + +The ESP-IDF FreeRTOS can be configured using ``make menuconfig`` under +``Component_Config/FreeRTOS``. The following section highlights some of the +ESP-IDF FreeRTOS configuration options. For a full list of ESP-IDF +FreeRTOS configurations, see :doc:`FreeRTOS <../api-reference/kconfig>` + +:ref:`CONFIG_FREERTOS_UNICORE` will run ESP-IDF FreeRTOS only +on **PRO_CPU**. Note that this is **not equivalent to running vanilla +FreeRTOS**. Behaviors of multiple components in ESP-IDF will be modified such +as :component_file:`esp32/cpu_start.c`. 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. + +:ref:`CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS` will define the +number of Thread Local Storage Pointers each task will have in ESP-IDF +FreeRTOS. + +:ref:`CONFIG_SUPPORT_STATIC_ALLOCATION` will enable the backported +functionality of ``xTaskCreateStaticPinnedToCore()`` in ESP-IDF FreeRTOS + +:ref:`CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION` will trigger a halt in +particular functions in ESP-IDF FreeRTOS which have not been fully tested +in an SMP context. + \ No newline at end of file diff --git a/docs/api-guides/index.rst b/docs/api-guides/index.rst index 0f155bafb8..72bd9f04b1 100644 --- a/docs/api-guides/index.rst +++ b/docs/api-guides/index.rst @@ -9,6 +9,7 @@ API Guides Deep Sleep Wake Stubs ESP32 Core Dump Flash Encryption <../security/flash-encryption> + FreeRTOS SMP Changes High Level Interrupts JTAG Debugging Partition Tables