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

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. 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.

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):
 allocate only;
 allocate and free with a very simple, fast, algorithm;
 a more complex but fast allocate and free algorithm with memory coalescence;
 an alternative to the more complex scheme that includes memory coalescence that allows a heap to be broken across multiple memory areas.
 and C library allocate and free with some mutual exclusion protection.
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 ( to  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
 Book and reference manuals.
 Small memory size, low overhead, and fast execution.
 Tick-less option for low power applications.
 Intended for both hobbyists and professional developers working on commercial products.
 Scheduler can be configured for both preemptive or cooperative multitasking. 
 Coroutine support (coroutines in FreeRTOS are simple and lightweight tasks with limited use of the call stack)
 Trace support through generic trace macros. Tools such as Tracealyzer, a commercial tool by FreeRTOS partner Percepio, can thereby record and visualize the runtime behavior of FreeRTOS-based systems for debugging and verification. This includes task scheduling and kernel calls for semaphore and queue operations.

Supported architectures

 Altera Nios II
 ARM architecture
 ARM7
 ARM9
 ARM Cortex-M
 ARM Cortex-A
 Atmel
 Atmel AVR
 AVR32
 SAM3, SAM4
 SAM7, SAM9
 SAMD20, SAML21
Ceva
Ceva-BXx
SensPro
Ceva-XC16
Ceva-XM6
Ceva-Xx
Ceva-XM4
 Cortus
 APS1
 APS3
 APS3R
 APS5
 FPS6
 FPS8
 Cypress
 PSoC
 Energy Micro
 EFM32
 eSi-RISC
 eSi-16x0
 eSi-32x0
 DSP Group
 DBMD7
 Espressif
 ESP8266
 ESP32
 Fujitsu
 FM3
 MB91460
 MB96340
 Freescale
 Coldfire V1, V2
 HCS12
 Kinetis
 IBM
 PPC404, PPC405
 Infineon
 TriCore
 Infineon XMC4000
 Intel
 x86
 8052
 Microchip Technology
 PIC18, PIC24, dsPIC
 PIC32
 Microsemi
 SmartFusion
 Multiclet
 P1
 NXP
 LPC1000
 LPC2000
 LPC4300
 Renesas
 78K0R
 RL78
 H8/S
 RX600
 RX200
 SuperH
 V850
 RISC-V
 RV32I
 RV64I
 PULP RI5CY
 Silicon Labs
 Gecko (ARM Cortex)
 STMicroelectronics
 STM32
 STR7
 Texas Instruments
 C2000 series (TMS320F28x)
 MSP430
 Stellaris
 Hercules (TMS570LS04 & RM42)
 Xilinx
 MicroBlaze
 Zynq-7000

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.

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 of the FreeRTOS project. Both SAFERTOS and FreeRTOS share the same scheduling algorithm, have similar application programming interfaces (APIs), and are otherwise very similar, but they were developed with differing objectives. SAFERTOS was developed solely in the C language to meet requirements for certification to IEC61508.

SAFERTOS can reside solely in the on-chip read-only memory (ROM) of a microcontroller for standards compliance. 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. SAFERTOS is included in the ROM of some Stellaris Microcontrollers 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.

See also 

 Embedded operating system

References

External links 

 

Amazon Web Services
ARM operating systems
Embedded operating systems
Free software operating systems
Microkernel-based operating systems
Microkernels
Real-time operating systems
X86 operating systems