FreeRTOS

Last updated
FreeRTOS
Logo freeRTOS.png
Developer Amazon Web Services
Written in C
OS family Real-time operating systems
Working stateCurrent
Source model Open source
Initial release2003;21 years ago (2003)
Latest release 11.1.0 [1] / April 22, 2024;5 months ago (2024-04-22)
Repository
Marketing target Embedded systems
Available in English
Platforms ARM (ARM7, ARM9, Cortex-M3, -M4, -M7, -A, -R4), Atmel AVR, AVR32, HCS12, MicroBlaze, Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8), MSP430, PIC, Renesas H8/S, SuperH, RX, x86, 8052, Coldfire, V850, 78K0R, Fujitsu series MB91460, MB96340, Nios II, TMS570, RM4x, Espressif ESP32, RISC-V (e.g. SHAKTI)
Kernel type Real-Time Microkernel
License MIT [2]
Official website www.freertos.org

FreeRTOS is a real-time operating system kernel [3] [4] [5] for embedded devices that has been ported to 40 microcontroller platforms. It is distributed under the MIT License.

Contents

History

The FreeRTOS kernel was originally developed by Richard Barry around 2003, and was later developed and maintained by Barry's company, Real Time Engineers Ltd. In 2017, the firm passed stewardship of the FreeRTOS project to Amazon Web Services (AWS). Barry continues to work on FreeRTOS as part of an AWS team. [6] With the transition to Amazon control, subsequent releases of the project also switched licensing from GPL version 2 (with special exceptions for static linking to proprietary code outside the FreeRTOS kernel itself) to MIT. [7]

Implementation

FreeRTOS is designed to be small and simple. It is mostly written in the C programming language to make it easy to port and maintain. It also comprises a few assembly language functions where needed, mostly in architecture-specific scheduler routines.

Process management

FreeRTOS provides methods for multiple threads or tasks, mutexes, semaphores and software timers. A tickless mode is provided for low power applications. Thread priorities are supported. FreeRTOS applications can be statically allocated, but objects can also be dynamically allocated with five schemes of memory management (allocation):

RTOSes typically do not have the more advanced features that are found in operating systems like Linux and Microsoft Windows, such as device drivers, advanced memory management, and user accounts. The emphasis is on compactness and speed of execution. FreeRTOS can be thought of as a thread library rather than an operating system, although command line interface and POSIX-like input/output (I/O) abstraction are available.

FreeRTOS implements multiple threads by having the host program call a thread tick method at regular short intervals. The thread tick method switches tasks depending on priority and a round-robin scheduling scheme. The usual interval is 1 to 10 milliseconds (11000 to 1100 of a second) via an interrupt from a hardware timer, but this interval is often changed to suit a given application.

The software distribution contains prepared configurations and demonstrations for every port and compiler, allowing rapid application design. The project website provides documentation and RTOS tutorials, and details of the RTOS design.

Key features

Supported architectures

Derivations

Amazon FreeRTOS

Amazon provides a now deprecated extension of FreeRTOS, this is FreeRTOS with libraries for Internet of things (IoT) support, specifically for Amazon Web Services. Since version 10.0.0 in 2017, Amazon has taken stewardship of the FreeRTOS code, including any updates to the original kernel. [9] [10] [11]

SAFERTOS

SAFERTOS was developed as a complementary version of FreeRTOS, with common functions, but designed for safety-critical implementation. FreeRTOS was subject to hazard and operability study (HAZOP), and weaknesses were identified and resolved. The result was put through a full IEC 61508 SIL 3 development lifecycle, the highest level for a software-only component.

SAFERTOS was developed by Wittenstein High Integrity Systems, in partnership with Real Time Engineers Ltd, primary developer [3] of the FreeRTOS project. [12] Both SAFERTOS and FreeRTOS share the same scheduling algorithm, have similar application programming interfaces (APIs), and are otherwise very similar, [13] but they were developed with differing objectives. [14] SAFERTOS was developed solely in the C language to meet requirements for certification to IEC61508. [15]

SAFERTOS can reside solely in the on-chip read-only memory (ROM) of a microcontroller for standards compliance. [16] When implemented in hardware memory, SAFERTOS code can only be used in its original, certified configuration. This means certifying a system needs no retesting of the kernel portion of a design. [17] SAFERTOS is included in the ROM of some Stellaris Microcontrollers [18] from Texas Instruments. SAFERTOS source code does not need to be separately purchased. In this usage scenario, a C header file is used to map SAFERTOS API functions to their location in read-only memory.

OPENRTOS

OPENRTOS is a commercially licensed version of Amazon FreeRTOS, sold by Wittenstein High Integrity Systems. This product provides support and allows companies to use the Amazon FreeRTOS kernel and libraries without the a:FreeRTOS MIT license. [19] [20]

See also

Related Research Articles

A real-time operating system (RTOS) is an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints. An RTOS is distinct from a time-sharing operating system, such as Unix, which manages the sharing of system resources with a scheduler, data buffers, or fixed task prioritization in multitasking or multiprogramming environments. All operations must verifiably complete within given time and resource constraints or else fail safe. Real-time operating systems are event-driven and preemptive, meaning the OS can monitor the relevant priority of competing tasks, and make changes to the task priority. Event-driven systems switch between tasks based on their priorities, while time-sharing systems switch the task based on clock interrupts.

<span class="mw-page-title-main">Embedded system</span> Computer system with a dedicated function

An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use. In 2009, it was estimated that ninety-eight percent of all microprocessors manufactured were used in embedded systems.

OSEK is a standards body that has produced specifications for an embedded operating system, a communications stack, and a network management protocol for automotive embedded systems. It has produced related specifications, namely AUTOSAR. OSEK was designed to provide a reliable standard software architecture for the various electronic control units (ECUs) throughout a car.

<span class="mw-page-title-main">Blackfin</span> Family of 16-/32-bit microprocessors

The Blackfin is a family of 16-/32-bit microprocessors developed, manufactured and marketed by Analog Devices. The processors have built-in, fixed-point digital signal processor (DSP) functionality performed by 16-bit multiply–accumulates (MACs), accompanied on-chip by a microcontroller. It was designed for a unified low-power processor architecture that can run operating systems while simultaneously handling complex numeric tasks such as real-time H.264 video encoding.

Micro-Controller Operating Systems is a real-time operating system (RTOS) designed by Jean J. Labrosse in 1991. It is a priority-based preemptive real-time kernel for microprocessors, written mostly in the programming language C. It is intended for use in embedded systems.

The MicroBlaze is a soft microprocessor core designed for Xilinx field-programmable gate arrays (FPGA). As a soft-core processor, MicroBlaze is implemented entirely in the general-purpose memory and logic fabric of Xilinx FPGAs.

Eclipse ThreadX is a highly deterministic, embedded real-time operating system (RTOS) programmed mostly in the language C.

TI-RTOS is an embedded tools ecosystem created and offered by Texas Instruments (TI) for use across a range of their embedded system processors. It includes a real-time operating system (RTOS) component-named TI-RTOS Kernel, networking connectivity stacks, power management, file systems, instrumentation, and inter-processor communications like DSP/BIOS Link. It is free and open-source software, released under a BSD license.

<span class="mw-page-title-main">ChibiOS/RT</span> Real-time operating system

ChibiOS/RT is a compact and fast real-time operating system supporting multiple architectures and released under a mix of the GNU General Public License version 3 (GPL3) and the Apache License 2.0. It is developed by Giovanni Di Sirio.

BeRTOS is a real-time operating system designed for embedded systems.

Nano-RK is a wireless sensor networking real-time operating system (RTOS) from Carnegie Mellon University, designed to run on microcontrollers for use in sensor networks. Nano-RK supports a fixed-priority fully preemptive scheduler with fine-grained timing primitives to support real-time task sets. "Nano" implies that the RTOS is small, using 2 KB of random-access memory (RAM) and using 18 KB of flash memory, while RK is short for resource kernel. A resource kernel provides reservations on how often system resources can be used. For example, a task might only be allowed to execute 10 ms every 150 ms, or a node might only be allowed to transmit 10 network packets per minute. These reservations form a virtual energy budget to ensure a node meets its designed battery lifetime and to prevent a failed node from generating excessive network traffic. Nano-RK is open-source software, is written in C and runs on the Atmel-based FireFly sensor networking platform, the MicaZ motes, and the MSP430 processor.

The uIP is an open-source implementation of the TCP/IP network protocol stack intended for use with tiny 8- and 16-bit microcontrollers. It was initially developed by Adam Dunkels of the Networked Embedded Systems group at the Swedish Institute of Computer Science, licensed under a BSD style license, and further developed by a wide group of developers.

<span class="mw-page-title-main">XtratuM</span> Hypervisor

XtratuM is a bare-metal hypervisor specially designed for embedded real-time systems available for the instruction sets LEON2/3/4, ARM v7 and V8 processors and RISC-V processor.

<span class="mw-page-title-main">QP (framework)</span> Operating system

QP is a family of open source real-time embedded frameworks (RTEFs) and runtime environments based on active objects (actors) and hierarchical state machines. The QP family consists of the lightweight QP/C and QP/C++ frameworks, written in C (C99) and C++ (C++11), respectively.

<span class="mw-page-title-main">OpenComRTOS</span> Real-time operating system

OpenComRTOS is a commercial network-centric, formally developed real-time operating system (RTOS), aimed mainly at the embedded system market.

<span class="mw-page-title-main">T-Kernel</span> Open-source RTOS tailored for 32-bit microcontrollers

T-Kernel is an open source real-time operating system (RTOS) designed for 32-bit microcontrollers. It is standardized by the T-Engine Forum, which distributes it under a T-License agreement. There is also a corresponding Micro T-Kernel (μT-Kernel) implementation designed for embedded systems with 16-bit or 8-bit microcontrollers.

<span class="mw-page-title-main">Zephyr (operating system)</span> Real-time operating system

Zephyr is a small real-time operating system (RTOS) for connected, resource-constrained and embedded devices supporting multiple architectures and released under the Apache License 2.0. Zephyr includes a kernel, and all components and libraries, device drivers, protocol stacks, file systems, and firmware updates, needed to develop full application software.

<span class="mw-page-title-main">Apache Mynewt</span> Real-time operating system

Apache Mynewt is a modular real-time operating system for connected Internet of things (IoT) devices that must operate for long times under power, memory, and storage constraints. It is free and open-source software incubating under the Apache Software Foundation, with source code distributed under the Apache License 2.0, a permissive license that is conducive to commercial adoption of open-source software.

PX5 RTOS is a real-time operating system (RTOS) designed for embedded systems. It is implemented using the ANSI C programming language.

References

  1. "FreeFTOS Github Releases". GitHub . 2024-04-22.
  2. "FreeRTOS open source licensing". 2017-12-22.
  3. 1 2 "2011 Embedded Market Study". EE Times. Archived from the original on 2012-04-02.
  4. Kolesnik, Sergey (2013-12-08). "Comparing microcontroller real-time operating systems". A kernel is not an RTOS, but this can be a confusing issue because of the inappropriate naming chosen for some popular kernels, 'freeRTOS' for example.
  5. "Why RTOS and What Is RTOS?" . Retrieved 29 August 2014. What is FreeRTOS? … The size constraints, and dedicated end application nature, rarely warrant the use of a full RTOS implementation - or indeed make the use of a full RTOS implementation possible. FreeRTOS therefore provides the core real-time scheduling functions, inter-task communication, timing, and synchronisation primitives only. This means it is more accurately described as a real time kernel, or real time executive. …
  6. "RTOS - Free professionally developed and robust real time operating system for small embedded systems development".
  7. "Update to MIT licensed FreeRTOS V10.0.0".
  8. "Using FreeRTOS on RISC-V Microcontrollers". FreeRTOS. Retrieved 11 September 2019.
  9. "Amazon FreeRTOS". Amazon. Retrieved 28 November 2018.
  10. "FAQ: Amazon FreeRTOS". FreeRTOS. Retrieved 28 November 2018.
  11. "Amazon FreeRTOS is a new OS for IoT". TechCrunch. 29 November 2017. Retrieved 4 December 2018.
  12. "FreeRTOS" . Retrieved 8 Aug 2012.
  13. "SmartBotPaper" (PDF). Archived from the original (PDF) on 2012-07-04. Retrieved 8 Aug 2012.
  14. Relationship between FreeRTOS and SAFERTOS
  15. "EETimesSafetyCritical" . Retrieved 8 Aug 2012.
  16. "Embedded Systems Design Europe". Archived from the original on 23 October 2012. Retrieved 10 Aug 2012.
  17. "Texas Instruments" (PDF). Archived from the original (PDF) on 4 July 2013. Retrieved 10 Sep 2012.
  18. TI Stellaris Product range
  19. "OPENRTOS". High Integrity Systems. Retrieved 28 November 2018.
  20. "FreeRTOS open source licensing". FreeRTOS. Retrieved 28 November 2018.