Jump to content

FreeRTOS: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Supported architectures: citations needed for most architectures
Implementation: Removed advertisement for "supported by wolfssl" as freeRTOS doesn't have a network stack *to* support.
Tags: references removed Mobile edit Mobile web edit
Line 34: Line 34:
*an alternative to the more complex scheme that includes memory coalescence that allows a heap to be broken across multiple memory areas.
*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.
*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 I/O abstraction add-ons are available. It is also supported by popular [[Transport Layer Security|SSL/TLS]] libraries such as [[wolfSSL]].<ref>{{Cite web|url=https://www.wolfssl.com/yassl-embedded-web-server-safertos-port/|title=yaSSL Embedded Web Server SafeRTOS Port - wolfSSL|date=2012-10-31|language=en-US|access-date=2019-02-13}}</ref>
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 I/O 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.
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.

Revision as of 07:44, 17 February 2020

FreeRTOS
DeveloperReal Time Engineers Ltd.
OS familyReal-time operating systems
Working stateCurrent
Source modelOpen source
Latest release10.2.1[1] / 2019-05-13 (2019-05-13)
Repository
Marketing targetEmbedded devices
PlatformsARM (ARM7, ARM9, Cortex-M3, Cortex-M4, Cortex-A), 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 MB91460 series, Fujitsu MB96340 series, Nios II, Cortex-R4, TMS570, RM4x, Espressif ESP32, RISC-V
Kernel typeMicrokernel
LicenseMIT[2]
Official websitewww.freertos.org

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

Implementation

FreeRTOS is designed to be small and simple. The kernel itself consists of only three 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 (mostly in architecture-specific scheduler routines).

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. FreeRTOS applications can be completely statically allocated. Alternatively RTOS objects can be dynamically allocated with five 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;
  • 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.

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 I/O 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 a lot of documentation and RTOS tutorials (additional manuals and tutorials are available for a fee), as well as details of the RTOS design.

Key features

  • Book and reference manuals.
  • Small memory footprint, 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 operation.
  • 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 by FreeRTOS partner Percepio can thereby record and visualize the runtime behavior of FreeRTOS-based systems. This includes task scheduling and kernel calls for semaphore and queue operations. Tracealyzer uses a freemium pricing strategy, offering a feature-limited free version.

Supported architectures

Derivations

Amazon FreeRTOS

Amazon provides an extension of FreeRTOS, referred to as a:FreeRTOS. This is FreeRTOS with libraries for 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.[7][8][9]

SAFERTOS

SAFERTOS was developed as a complementary version of FreeRTOS, with common functionality but designed specifically for safety-critical implementation. FreeRTOS was subjected to HAZOP, and weaknesses were identified and resolved. The result was put through a full IEC 61508 SIL 3 development life cycle, 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.[10] Both SAFERTOS and FreeRTOS share the same scheduling algorithm, have similar APIs, and are otherwise very similar,[11] but they were developed with differing objectives.[12] SAFERTOS was developed solely in the C language to meet requirements for certification to IEC61508.[13]

SAFERTOS can reside solely in the on-chip read only memory of a microcontroller for standards compliance.[14] When implemented in hardware memory, SAFERTOS code can only be utilized in its original, already-certified, configuration. This means certification of systems do not need to re-test the kernel portion of their designs.[15] SAFERTOS is included in the ROM of some Stellaris Microcontrollers[16] 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. [17][18]

See also

References

  1. ^ "www.freertos.org/History.txt". 2019-09-28.
  2. ^ "FreeRTOS open source licensing". 2017-12-22.
  3. ^ a b "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 functionality, 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. ^ "Using FreeRTOS on RISC-V Microcontrollers". FreeRTOS. Retrieved 11 September 2019.
  7. ^ "Amazon FreeRTOS". Amazon. Retrieved 28 November 2018.
  8. ^ "FAQ: Amazon FreeRTOS". FreeRTOS. Retrieved 28 November 2018.
  9. ^ "Amazon FreeRTOS is a new OS for IoT". TechCrunch. Retrieved 4 December 2018.
  10. ^ "FreeRTOS". Retrieved 8 Aug 2012.
  11. ^ "SmartBotPaper" (PDF). Archived from the original (PDF) on 2012-07-04. Retrieved 8 Aug 2012.
  12. ^ Relationship between FreeRTOS and SAFERTOS
  13. ^ "EETimesSafetyCritical". Retrieved 8 Aug 2012.
  14. ^ "Embedded Systems Design Europe". Retrieved 10 Aug 2012.
  15. ^ "Texas Instruments" (PDF). Archived from the original (PDF) on 4 July 2013. Retrieved 10 Sep 2012.
  16. ^ TI Stellaris Product range
  17. ^ "OPENRTOS". High Integrity Systems. Retrieved 28 November 2018.
  18. ^ "FreeRTOS open source licensing". FreeRTOS. Retrieved 28 November 2018.