FreeRTOS is a popular real-time kernel for embedded devices, that has been ported to
34 microcontrollers.
It is distributed under the GPL with an optional exception.
The exception permits users' proprietary code to remain closed source while maintaining
the kernel itself as open source, thereby facilitating the use of FreeRTOS in proprietary
applications.
Implementation FreeRTOS is designed to be small and simple.
The kernel itself consists of only three or four C files.
To make the code readable, easy to port, and maintainable, it is written mostly in C, but
there are a few assembly functions included where needed.
FreeRTOS provides methods for multiple threads or tasks, mutexes, semaphores and software
timers.
A tick-less mode is provided for low power applications.
Thread priorities are supported.
In addition there are four schemes of memory allocation provided:
allocate only; allocate and free with a very simple, fast,
algorithm; a more complex but fast allocate and free
algorithm with memory coalescence; and C library allocate and free with some
mutual exclusion protection.
There are none of the more advanced features typically found in operating systems like
Linux or Microsoft Windows, such as device drivers, advanced memory management, user
accounts, and networking.
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 IO abstraction add-ons 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/1000 of a second to 1/100 of a second, via an interrupt from a
hardware timer, but this interval is often changed to suit a particular application.
The download contains prepared configurations and demonstrations for every port and compiler,
allowing rapid application design.
The FreeRTOS.org site also contains lots of documentation and RTOS tutorials, details
of the RTOS design.
Key features Very small memory footprint, low overhead,
and very fast execution.
Tick-less option for low power applications.
Equally good for hobbyists who are new to OSes, and professional developers working
on commercial products.
Scheduler can be configured for both preemptive or cooperative operation.
Coroutine support Trace support through generic trace macros.
Tools such as FreeRTOS+Trace can thereby record and visualize the runtime behavior of FreeRTOS-based
systems.
This includes task scheduling and kernel calls for semaphore and queue operations.
Price point = US$1500.
However, no free tracer is currently available.
Supported architectures
Related projects SafeRTOS
SafeRTOS was constructed as a complementary offering to FreeRTOS, with common functionality
but with a uniquely designed safety-critical implementation.
When the FreeRTOS functional model was subjected to a full HAZOP, weakness with respect to
user misuse and hardware failure within the functional model and API were identified and
resolved.
The resulting requirements set was put through a full IEC 61508 SIL 3 development life cycle,
the highest possible 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 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 is known for its ability, unique among Operating Systems, to reside solely
in the on-chip memory of a microcontroller, thus enabling the pre-certification of complete
Hardware and Software systems to IEC61508 or other safety or reliability operating standards.
When implemented in hardware memory, SafeRTOS code can only be utilized in its original
configuration, so certification testing of systems using this OS need not re-test this
portion of their designs during the functional safety certification process.
SafeRTOS is included in the ROM of some Stellaris Microcontrollers from Texas Instruments.
This allows SafeRTOS to be used in commercial applications without having to purchase its
source code.
In this usage scenario, a simple C header file is used to map SafeRTOS API functions
to their location in read-only memory.
The use of read-only memory is ideal because the code it contains cannot be changed - eliminating
the possibility of user error, and ensuring the code that was originally tested remains
absolutely identical throughout the project lifetime.
It will not need re-testing as the application code grows and evolves around it.
The burden of complex kernel testing is removed as the already certified and approved certification
evidence, including the test plan, code and results, can be purchased "off the shelf".
OpenRTOS Another project related to FreeRTOS, one with
identical code but different licensing, is OpenRTOS.
The OpenRTOS license removes all reference to the GPL and its implications.
For example: one of the conditions of using FreeRTOS in a commercial product is that the
user is made aware of the use of FreeRTOS and the source code of FreeRTOS must be provided
upon request.
As it is a commercial product available for purchase, OpenRTOS doesn't have this licensing
requirement.
OpenRTOS users also have access to full technical support.
See also Embedded operating system
Real-time operating system List of real-time operating systems
References
External links FreeRTOS.org
OPENRTOS SAFERTOS
FreeRTOS+Trace FreeRTOS ecosystem products