FreeRTOS
202411.00Features
-
Preemptive or co-operative multitasking with priority-based scheduling for deterministic performance.
-
Symmetric Multiprocessing (SMP) support for multi-core microcontroller architectures.
-
Native TCP/IP stack (FreeRTOS+TCP) with comprehensive support for both IPv4 and IPv6.
-
Integrated TLS v1.3 support via MbedTLS and WolfSSL for secure encrypted communications.
-
AWS IoT integration for Over-the-air (OTA) updates, Device Shadow, and Jobs management.
-
Support for ARMv8-M TrustZone and ARMv8.1-M PACBTI security extensions for firmware protection.
-
Lightweight IoT messaging via coreMQTT and coreMQTT Agent for shared network connections.
-
Cryptographic identity and key management through the corePKCS11 library.
-
Formal verification of software correctness for core libraries using CBMC proofs.
-
Memory Protection Unit (MPU) support for task isolation and enhanced system reliability.
-
Cellular interface library for seamless mobile network integration.
-
SNTP client for accurate network-based time synchronization across devices.
-
Support for 40+ architectures and 15+ toolchains including latest RISC-V and ARMv8-M.
-
Low power modes and tickless idle functionality for energy-efficient battery operation.
-
Trace and profiling support via Percepio View for real-time application analysis.
Architecture
FreeRTOS utilizes a microkernel design focused on providing a minimal but robust set of primitives for real-time applications. The core kernel is responsible for task management, scheduling, and inter-process communication (IPC) through queues, semaphores, and mutexes. It is designed to be highly portable, with a clear separation between the hardware-independent core and the hardware-dependent port layer. This architecture allows it to maintain a tiny memory footprint, typically around 6K to 12K bytes of ROM, depending on the architecture and configuration.
The system is highly modular, following a “kernel + libraries” approach. While the core kernel handles execution, additional functionality such as the TCP/IP stack (FreeRTOS+TCP), MQTT, and security protocols are provided as optional, loosely coupled libraries under the FreeRTOS-Plus umbrella. This design pattern ensures that developers only include the code necessary for their specific application, optimizing resource usage for constrained embedded devices.
Core Components
- Task Scheduler: Supports preemptive, co-operative, and round-robin scheduling with priority levels.
- IPC Primitives: Includes thread-safe queues, binary semaphores, counting semaphores, and recursive mutexes.
- Software Timers: Allows for the execution of functions at specific times or periodic intervals.
- Event Groups: Enables tasks to wait for combinations of events to occur.
- Stream/Message Buffers: Optimized for task-to-task and interrupt-to-task data transfer.
Use Cases
This RTOS is ideal for:
- Industrial Automation: Managing real-time sensor data and motor control loops with deterministic timing requirements.
- Consumer Electronics: Powering smart home devices, wearables, and appliances that require low power consumption and small footprints.
- Medical Devices: Providing a reliable and formally verified foundation for life-critical monitoring and diagnostic equipment.
- IoT Gateways: Handling complex networking stacks, TLS encryption, and cloud connectivity for edge-to-cloud data routing.
- Automotive Systems: Implementing non-safety critical telematics and infotainment systems using ARM Cortex-R or Cortex-A processors.
- Smart Energy: Managing smart meters and grid infrastructure components that require long-term stability and remote OTA updates.
Getting Started
To begin developing with FreeRTOS, it is recommended to clone the main repository using the --recurse-submodules flag, as the kernel and supplementary libraries are maintained in separate Git submodules. Developers should start by exploring the FreeRTOS/Demo directory, which contains pre-configured projects for hundreds of hardware platforms and various compilers (GCC, IAR, Keil). These demos provide a functional baseline that includes the necessary port files and configuration headers (FreeRTOSConfig.h).
Extensive documentation is available on the official FreeRTOS website, including a Kernel Quick Start Guide and a comprehensive API Reference. For community support, developers can access the FreeRTOS Support Forums to interact with the primary developers and the broader ecosystem.
Related Projects
View All Projects →M-Step: A Single-Stepping Framework for Side-Channel Analysis on TrustZone-M
M-Step is a software-based research framework for instruction-level side-channel analysis on ARM TrustZone-M microcontrollers, specifically targeting the STM32L5 series. It enables precise single-stepping of Secure world code from a Non-Secure environment to evaluate vulnerabilities such as interrupt latency and cache activity. The project integrates with FreeRTOS and MCUboot to provide a complete environment for assessing the security of Trusted Firmware-M (TF-M) implementations.
IOnode
IOnode is a specialized firmware that transforms ESP32 microcontrollers into NATS-addressable hardware nodes, allowing GPIO, ADC, and I2C sensors to be reached over a network via simple request/reply messages. Built on the Arduino framework and FreeRTOS, it provides a 'no-SDK' approach to hardware control with features like fleet discovery, threshold events, and a built-in web UI.
Overhead
Overhead is a modular multi-page situational-awareness dashboard for ESP32-based touchscreen modules, such as the Cheap Yellow Display. Built on the Arduino framework and FreeRTOS, it integrates real-time data for satellite passes, aircraft ADS-B tracking, aviation weather, and celestial events. The project is specifically engineered for reliability on low-memory hardware, featuring a serialized HTTPS task and a remote web interface for control and monitoring.
GeoShake
GeoShake is an open-source firmware and hardware project for a distributed, real-time earthquake monitoring station based on the ESP32-S3. It utilizes high-precision accelerometers and on-device seismic processing to contribute to a global seismic network via MQTT and BLE connectivity.
BubblePager
BubblePager is a dedicated hardware pager for Telegram that displays video notes, stickers, and text on a round GC9A01 display. Built on the ESP32-S3 platform using the LVGL graphics library and FreeRTOS, it communicates with a self-hosted FastAPI server that transcodes media into MJPEG streams. The system features a custom unread queue, touch/button navigation, and motion-wake capabilities.
InkCast
InkCast is an ESP32-S3 firmware for a battery-powered e-paper weather station that balances high-density information with extreme power efficiency. Built using the Arduino framework on FreeRTOS, it features a web-based configuration portal and supports multiple weather providers to deliver a long-lasting, wall-mounted dashboard.
ESP-Sniffer
A real-time Wi-Fi packet capture and analysis tool built for the ESP32 platform. It utilizes the microcontroller's promiscuous mode to intercept raw 802.11 frames, which are then streamed over serial in PCAP format to a Python host for live decoding and color-coded visualization.
Fridge Tracker (鲜知贴)
A low-power smart home solution for tracking food and household items using ESP32-C3/S3 microcontrollers and e-paper displays. The system features server-side image rendering to minimize hardware overhead and supports various tri-color and four-color display sizes.