FreeRTOS

202411.00
FreeRTOS is a market-leading real-time operating system kernel designed for microcontrollers and small microprocessors, featuring a small memory footprint and fast execution times. It provides a comprehensive ecosystem of libraries for IoT connectivity, security, and over-the-air updates, supporting over 40 processor architectures including ARM and RISC-V.

Features

  • 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 →
Cardputer GPS Info

Cardputer GPS Info

A lightweight GPS diagnostic and information tool designed for the M5Stack Cardputer. It parses NMEA 0183 data using the TinyGPSPlus library to display real-time coordinates, satellite visibility, and sky plots. The project features configurable UART settings and microSD support for persistent configuration on ESP32-S3 hardware.

freertos
ESP32 A2DP Sink with LDAC, aptX HD, and AAC Support

ESP32 A2DP Sink with LDAC, aptX HD, and AAC Support

A premium Bluetooth audio receiver firmware for ESP32-WROVER modules that enables high-resolution streaming via LDAC and aptX codecs. It features a custom DSP pipeline for 3D audio enhancement, real-time LED matrix visualization, and a secure OTA recovery system built on FreeRTOS.

freertos littlefslwip
WIZnet FreeRTOS SDK for Raspberry Pi Pico Ethernet

WIZnet FreeRTOS SDK for Raspberry Pi Pico Ethernet

A robust framework and collection of examples for implementing Ethernet connectivity on Raspberry Pi Pico (RP2040/RP2350) using FreeRTOS. It integrates WIZnet's hardwired TCP/IP controllers with mbedTLS for secure MQTT and SSL/TLS communication.

freertos

Dual-Boot ESP32 with PlatformIO and Arduino

This project demonstrates a streamlined method for implementing dual-boot functionality on an ESP32 using PlatformIO and the Arduino framework. By utilizing custom partition tables and the ESP-IDF OTA API, it allows users to store multiple applications on a single device and switch between them using a physical GPIO pin.

freertos
GhostBLE

GhostBLE

GhostBLE is a portable BLE privacy scanner and wardriving application designed for the M5Stack ecosystem, including the Cardputer and StickC series. Leveraging the NimBLE-Arduino library on the ESP32 platform, it provides real-time analysis of Bluetooth Low Energy devices, privacy posture heuristics, and GPS-tagged logging for security research and education.

freertos nimbleh2zero-esp-nimble-cpp
STM32N6 AI Object Detection and H.264 USB Video Streaming

STM32N6 AI Object Detection and H.264 USB Video Streaming

This project demonstrates high-performance computer vision on the STM32N6570-DK discovery board, utilizing an NPU-accelerated quantized AI model for real-time object detection. It leverages a multi-threaded FreeRTOS architecture to manage a complex pipeline including DCMIPP image processing, hardware H.264 encoding, and USB Video Class (UVC) streaming.

freertos
IC-705 CI-V Band Decoder and Transverter Controller

IC-705 CI-V Band Decoder and Transverter Controller

An advanced embedded controller for the Icom IC-705 that decodes CI-V band data via Bluetooth or USB to manage external transverters and power amplifiers. Built for the M5Stack ecosystem using FreeRTOS, it provides automated frequency translation, PTT breakout, and seamless integration with PC-based logging and digital mode software.

freertos
GhostESP

GhostESP

GhostESP is a multi-protocol security testing toolkit for ESP32 microcontrollers, built on the ESP-IDF framework and FreeRTOS. It provides extensive capabilities for Wi-Fi, BLE, Sub-GHz, NFC, and Infrared auditing across a wide range of hardware, including M5Stack devices and custom development boards.

freertos lvgllwip