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 →
TinyMakerWifi
TinyMakerWifi is an enhanced firmware for the TinyMaker MSLA resin 3D printer that introduces WiFi connectivity, a web-based dashboard, and direct integration with PrusaSlicer. Built on the ESP32 platform using the Arduino framework and FreeRTOS, it features advanced resin tracking, power-loss recovery, and over-the-air (OTA) updates.
Clawdmeter Plus
An embedded desk display project using the Waveshare ESP32-S3-Touch-AMOLED-2.16 to track live Claude Code usage, local weather, and background agent health. The system leverages the LVGL graphics library for its UI and connects to a host computer via Bluetooth LE using the NimBLE stack.
XIAO nRF52 Standalone BLE DFU Updater
A standalone BLE DFU client for Seeed XIAO nRF52840 and RAK4631 that flashes Nordic-format firmware bundles to target nRF52 devices. It features a USB Mass Storage interface for drag-and-drop firmware updates and uses a configuration-based filtering system to identify and update remote hardware in the field.
Purplx — Cyberdeck OS for M5Stack Cardputer ADV
Purplx is a comprehensive cyberdeck operating system designed for the M5Stack Cardputer ADV (ESP32-S3). It features a wide array of tools including a WiFi CSI human-presence radar, a firmware launcher for booting guest binaries, off-grid survival guides, and a collection of retro games. The project utilizes FreeRTOS and the NimBLE stack on the ESP32-S3 platform to provide a multi-functional cyberpunk utility environment.
E-OS — ESP32-S3 Handheld Console
A custom-built handheld gaming console powered by the ESP32-S3 and a dual-screen setup (TFT and OLED). It runs E-OS, a custom operating system built on FreeRTOS that features a dual-core architecture for dedicated rendering and logic. The project includes 15 custom-coded games and several applications, utilizing libraries like TFT_eSPI and U8g2 for high-performance graphics.
NucleoOS
NucleoOS is a web-native operating system designed for the M5Stack Cardputer (ESP32-S3), featuring both a native firmware UI and a desktop-class web shell. Built on the ESP-IDF framework and FreeRTOS, it optimizes constrained hardware (512 KB RAM) by offloading heavy tasks like AI and image generation to the browser via WebAssembly and WebGPU. The system includes a wide array of applications ranging from offline AI assistants and media players to a suite of security-testing tools.
ESP32-PLC
ESP32-PLC is an open-source firmware project that transforms the ESP32 microcontroller into a functional Programmable Logic Controller (PLC) using ladder logic. Built on the Espressif IoT Development Framework (ESP-IDF) and FreeRTOS, it leverages the ladderlib library to execute industrial control programs and supports web-based logic editing and simulation.
Web3 Pi UPS
An open-source DC uninterruptible power supply designed specifically for the Raspberry Pi 5, featuring triple-input power paths and smart battery management. It utilizes a dual-MCU architecture with a CH32X035 for power delivery and an RP2040 for the user interface, while supporting remote monitoring via FreeRTOS and the lwIP stack.