Introduction to FreeRTOS
FreeRTOS (Real-time operating system) is an open-source real-time operating system designed to run on small, embedded systems. It is a popular choice for developers who need an efficient and reliable operating system that can handle multitasking and real-time constraints.
This technical article will provide an in-depth overview of FreeRTOS, including its features, architecture, and use cases. It will also cover how to get started with FreeRTOS and provide some tips for working with the operating system.
The FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 35 microcontroller platforms. It is distributed under the MIT License. It has been ported to many different architectures and compilers. Each RTOS port is accompanied by a pre-configured demo application to get you up and running quickly. Better still, each demo application is accompanied by a documentation page providing full information on locating the RTOS demo project source code, building the demo project, and configuring the target hardware.
History & Inventions of FreeRTOS
FreeRTOS (Real-time operating system) was created by Richard Barry in 2003. Barry started developing FreeRTOS while working at a consulting company that specialized in embedded systems. He found that many of his clients required a reliable, efficient, and cost-effective operating system for their embedded systems. Barry began developing FreeRTOS to fill this need and released it as an open-source project in 2003.
Since then, FreeRTOS has become one of the most widely used real-time operating systems for embedded systems. It has been ported to many microcontrollers and processors and has been used in a wide range of applications, from consumer electronics to medical devices and aerospace systems.
One of the key innovations of FreeRTOS is its support for preemptive multitasking. This allows the operating system to handle multiple tasks simultaneously, making it ideal for real-time systems that require fast response times. FreeRTOS also offers real-time scheduling, ensuring that the most critical tasks are executed on time.
FreeRTOS has been continually updated and improved over the years, with new features and enhancements added with each release. In 2017, Amazon Web Services (AWS) acquired FreeRTOS, with the goal of making it even more accessible and widely used. Since the acquisition, AWS has continued to support the development of FreeRTOS, adding new features and integrations with AWS services to make it easier for developers to use FreeRTOS in their cloud-connected embedded systems.
Features of FreeRTOS:
- Designed to be small, simple and easy to use.
- Free RTOS kernel – preemptive, cooperative and hybrid configuration options.
- Includes a tickless mode for low power applications.
- Official support for 34 embedded system architectures.
- Supports the ARM Cortex-M3 MPU.
- Very portable, predominantly written in C.
- Supports both real time tasks and co-routines.
- Mutexes with priority inheritance.
- Powerful execution trace functionality.
- Stack overflow detection options.
- No software restriction on the number of real time tasks that can be created.
- No software restriction on the number of task priorities that can be used.
- No restrictions imposed on task priority assignment – more than one real time task can be assigned the same priority.
Architecture of FreeRTOS
FreeRTOS is designed as a layered architecture with multiple modules that can be customized to fit the needs of the system. It is a real-time operating system that is designed to run on small, embedded systems. It is designed to be portable and can be easily adapted to different microcontrollers and processors. The architecture of FreeRTOS is based on a kernel that provides multitasking and real-time scheduling capabilities.
The kernel is responsible for managing the execution of tasks, which are the building blocks of a FreeRTOS system. Each task is a separate thread of execution that runs independently of other tasks. The kernel provides mechanisms for creating, deleting, and managing tasks, as well as for synchronizing their execution.
In addition to tasks, FreeRTOS also supports other mechanisms for inter-task communication, such as queues, semaphores, and mutexes. These mechanisms allow tasks to communicate and synchronize their execution in a real-time system.

The architecture of FreeRTOS is composed of the following layers:
- Hardware Abstraction Layer (HAL): The HAL layer provides an interface between the hardware and the operating system. It includes device drivers, interrupt handlers, and other hardware-specific functions.
- Kernel: The kernel layer is the heart of the operating system and provides the scheduling and task management functions. It includes the task scheduler, task management, memory management, synchronization mechanisms, and interrupt handling.
- Application Programming Interface (API): The API layer provides a set of functions that can be used by the application to create, delete, and manage tasks, as well as manage shared resources and synchronize tasks.
- Application Code: The application code layer includes the user application code that runs on top of the operating system. It can be developed using standard programming languages such as C and C++.
Getting Started with FreeRTOS
FreeRTOS can be used to develop real-time embedded systems for a wide range of applications. To get started with FreeRTOS, developers will need to download the source code and port it to their target hardware platform. FreeRTOS provides a range of sample projects and documentation to help developers get started.
Once FreeRTOS has been ported to the target hardware platform, developers can begin using its API to create and manage tasks. The API provides functions for creating and deleting tasks, as well as for synchronizing their execution using mechanisms like queues, semaphores, and mutexes.
Developers can also configure the real-time scheduling parameters of FreeRTOS to ensure that the most critical tasks are executed on time. This involves assigning each task a priority level and configuring the scheduling algorithm to ensure that higher priority tasks are executed before lower priority tasks.
Supported Hardware Microcontroller Archtectures by FreeRTOS
FreeRTOS is designed to be portable to a wide range of microcontroller architectures, and it currently supports the following architectures:
- ARM Cortex-M: This includes Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, and Cortex-M7 microcontrollers, which are widely used in embedded systems and IoT devices.
- ARM Cortex-A: This includes Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17, and Cortex-A53 processors, which are used in applications such as automotive infotainment, set-top boxes, and other multimedia applications.
- Atmel AVR: This includes AVR32 UC3 and AVR XMEGA microcontrollers, which are widely used in industrial control and automation systems.
- Microchip PIC32: This includes the PIC32MX and PIC32MZ microcontrollers, which are used in various applications such as consumer electronics, medical devices, and industrial automation.
- Renesas RX: This includes RX100, RX200, and RX600 series microcontrollers, which are used in automotive, industrial, and consumer applications.
- Texas Instruments MSP430: This includes MSP430F5xx and MSP430F6xx microcontrollers, which are used in low-power and battery-operated applications.
- Xilinx Zynq-7000: This includes the Zynq-7000 series of system-on-chip (SoC) devices, which combine ARM Cortex-A9 processors with programmable logic for applications such as industrial automation, medical devices, and automotive systems.
- Xtensa LX6: The ESP32 and ESP8266 microcontrollers from Espressif Systems based on the Xtensa LX6 CPU architecture are widely used with FreeRTOS, and the FreeRTOS distribution includes a port for the ESP32 platform that provides support for both cores of the microcontroller, as well as various peripherals commonly used in embedded systems. Get started with FreeRTOS ESP32 to leverage the power of real-time operating systems and unleash the full potential of your embedded systems and IoT devices in applications ranging from industrial automation to smart home devices.
Including to these above architectures, FreeRTOS can also be ported to other microcontroller platforms, as it provides a well-defined API and a flexible architecture that can be adapted to meet the specific requirements of different platforms.
Aplications of FreeRTOS
FreeRTOS is a popular real-time operating system kernel designed for embedded systems, IoT devices, and other applications that require real-time processing capabilities. Some of the common applications of FreeRTOS are:
- IoT Devices: FreeRTOS is widely used in IoT devices, such as smart home devices, wearable devices, and industrial automation systems. The real-time processing capabilities of FreeRTOS enable these devices to respond quickly to user input or environmental changes.
- Automotive Systems: FreeRTOS is used in automotive systems, such as in-car entertainment systems and driver assistance systems. The low overhead and high performance of FreeRTOS make it well suited for these applications.
- Medical Devices: FreeRTOS is used in medical devices, such as monitoring systems, infusion pumps, and diagnostic equipment. The real-time capabilities of FreeRTOS ensure that these devices respond quickly and accurately to patient data.
- Aerospace and Defense Systems: FreeRTOS is used in aerospace and defense systems, such as satellite communication systems, avionics, and missile guidance systems. The high reliability and real-time processing capabilities of FreeRTOS make it well suited for these critical applications.
- Industrial Automation: FreeRTOS is used in industrial automation systems, such as process control and monitoring systems. The real-time processing capabilities of FreeRTOS ensure that these systems can respond quickly to changes in production processes.
- Robotics: FreeRTOS is used in robotics systems, such as autonomous vehicles, drones, and industrial robots. The real-time processing capabilities of FreeRTOS enable these systems to quickly and accurately respond to sensor data and user input.
- Home Automation: FreeRTOS is used in home automation systems, such as smart lighting, heating, and security systems. The real-time capabilities of FreeRTOS enable these systems to respond quickly to user input and environmental changes.
Advantages of FreeRTOS:
FreeRTOS (Real-time operating system) is a popular open-source real-time operating system designed to run on microcontrollers and small embedded systems. Some of the advantages of using FreeRTOS include:
- Open-Source: FreeRTOS is an open-source operating system that is available for free, which makes it easy for developers to access and modify the source code to fit their specific project requirements.
- Low Memory Footprint: FreeRTOS has a small memory footprint and can run on microcontrollers with limited memory, making it an ideal choice for embedded systems.
- Preemptive Multitasking: FreeRTOS supports preemptive multitasking, which means that it can handle multiple tasks at the same time, ensuring that critical tasks are executed on time.
- Easy to Use: FreeRTOS is easy to use and comes with a simple API that developers can use to create, delete, and manage tasks.
- Real-Time Scheduling: FreeRTOS offers real-time scheduling, ensuring that the most critical tasks are executed on time.
- Cross-Platform Support: FreeRTOS can be ported to various microcontrollers and processors, making it a versatile choice for different embedded systems.
- Great Community Support: FreeRTOS has a large and active community of developers who can offer support, share knowledge, and help with any challenges developers may face.
Disadvantages of FreeRTOS
While FreeRTOS has many advantages, there are some disadvantages to consider:
- Steep Learning Curve: FreeRTOS can have a steep learning curve for developers who are new to real-time systems and multitasking. It requires an understanding of how to manage tasks, handle synchronization, and avoid common pitfalls like priority inversion.
- Limited Documentation: The documentation for FreeRTOS can be limited, making it more challenging for developers to troubleshoot problems and debug issues.
- Limited Hardware Support: While FreeRTOS can be ported to a variety of microcontrollers and processors, it may not support all the hardware features of each device.
- No Formal Certification: FreeRTOS is not certified for safety-critical applications, meaning that it may not be suitable for use in certain industries where formal certification is required.
- Limited Debugging Capabilities: FreeRTOS provides limited debugging capabilities, which can make it challenging to identify and resolve complex issues.
- Risk of Errors: As with any software, using FreeRTOS introduces the possibility of errors and bugs, which can impact the stability and reliability of the system.