Chapter 4. API Guides
* Preemption
* Time Slicing
* Tick Interrupts
* Idle Tasks
* Scheduler Suspension
* Disabling Interrupts
* Startup and Termination
– Critical Sections
* API Changes
* Implementation
* Restrictions and Considerations
– Misc
* Floating Point Usage
* ESP-IDF FreeRTOS Single Core
4.14.1 Overview
The original FreeRTOS (hereinafter referred to as Vanilla FreeRTOS) is a small and efficient Real Time Operating
System supported on many single-core MCUs and SoCs. However, numerous ESP targets (such as the ESP32 and
ESP32-S3) are capable of dual core symmetric multiprocessing (SMP). Therefore, the version of FreeRTOS used
in ESP-IDF (hereinafter referred to as ESP-IDF FreeRTOS) is a modified version of Vanilla FreeRTOS v10.4.3.
Theses modifications allow ESP-IDF FreeRTOS to utilize the dual core SMP capabilities of ESP SoCs.
Note: Some ESP targets (such as the ESP32-S2 and ESP32-C3) are single core SoCs. ESP-IDF applications built
for these targets will be built with ESP-IDF FreeRTOS instead of Vanilla FreeRTOS. However, the builds for
these single core targets will always have the CONFIG_FREERTOS_UNICORE configuration enabled. See ESP-IDF
FreeRTOS Single Core for more details.
Note:
• For information regarding features that have been added to ESP-IDF FreeRTOS, see ESP-IDF FreeRTOS Ad-
ditions.
• For a detailed ESP-IDF FreeRTOS API Reference, see FreeRTOS API reference.
4.14.2 Symmetric Multiprocessing
Basic Concepts
SMP (Symmetric Multiprocessing) is a computing architecture where two or more identical CPUs (cores) are con-
nected to a single shared main memory and controlled by a single operating system. In general, an SMP system
…
• has multiple cores running independently. Each core has its own register file, interrupts, and interrupt handling.
• presents an identical view of memory to each core. Thus a piece of code that accesses a particular memory
address will have the same effect regardless of which core it runs on.
The main advantages of an SMP system compared to single core or Asymmetric Multiprocessing systems are that…
• the presence of multiple CPUs allows for multiple hardware threads, thus increases overall processing through-
put.
• having symmetric memory means that threads can switch cores during execution. This in general can lead to
better CPU utilization.
Espressif Systems 1358
Submit Document Feedback
Release v4.4