FreeRTOS

FreeRTOS ist ein, unter der MIT Open Source License verfügbares Multitasking Betriebssystem, welches insbesondere für den Einsatz im Embedded Bereich vorgesehen ist. Da es als Source Code zur Verfügung steht, kann es auf beliebige Plattformen portiert werden. Die offizielle, von Amazon Web Services zur Verfügung gestellte Distribution enthält allerdings bereits eine ganze Reihe von offiziellen Portierungen für verschiedenste Mikrocontroller. Dazu gehören unter anderem Derivate der STM32 F4 Familie, der NXP LPC Familie, der MSP430-Serie von Texas Instruments und viele weitere CPUs. Eine Liste der offiziellen Portierungen (die auch Bestandteil der Distribution sind) findet sich auf den Seiten des Projekts.
Zur Distribution gehören auch komplette Beispielprojekte für verschiedenste Entwicklungsumgebungen wie GCC, Keil, IAR oder Eclipse, die den Start einer eigenen Entwicklung nochmal beschleunigen können.

Vorteile von FreeRTOS gegenüber Super Loop

Microcontroller werden immer leistungsfähiger. Gleichzeitig steigen die Anforderungen an Embedded Systeme. Neben Kernaufgaben wie Regelungen und Steuerungen sind heute häufig Zusatzfunktionen wie eine komfortabele Benutzerschnittstelle oder Logging-Funktionen gefordert. FreeRTOS bietet preemptives Scheduling von Tasks sowie effektive Mechanismen zur Kommunikation zwischen einzelnen Tasks an. Da es zudem kostenlos verfügbar ist und bereits eine Reihe von Portierungen auf verschiedenste Platformen zur Verfügung stehen, stellt FreeRTOS eine hervorragende Basis für viele Embedded System dar.

Solche komplexen Systeme liessen sich zwar auch mit dem Ansatz der im Bereich der Embedded Systeme weit verbreiteten Super-Loop implementieren. Allerdings müssen die in der Hauptschleife aufgerufenen Funktionen alle so implementiert sein, dass sie eine bestimmte kurze Laufzeit nicht überschreiten. Nur so wird sichergestellt, dass tatsächlich zeitkritische Funktionen stets innerhalb eine akzeptablen Zeitintervals aufgerufen werden und ausreichend Rechenzeit zur Verfügung haben. Deshalb müssen umfangreichere Aufgaben in Teilaufgaben unterteilt werden. Dabei kommen häufig Statemachines zum Einsatz. Diese, wiederum, können schnell unübersichtlich werden, was der Softwarequalität nicht unbedingt förderlich ist. Das zusätzliche Zerteilen von Abläufen in Einzelschritte bläht den Code zudem auf, sodass es ab einem bestimmten Punkt durchaus Codespeicher sparen kann, auf FreeRTOS zu setzen statt eine Bare Metal Strategie zu verfolgen.

Multitasking

FreeRTOS erlaubt es, einzelne Aufgaben auf Threads aufzuteilen und diese weitgehend klassisch zu implementieren. Auf Statemachines kann weitgehend verzichtet werden. Da FreeRTOS die Priorisierung von Tasks unterstützt, kann weiterhin sichergestellt werden, zeitaufwändige Tasks sofort unterbrochen werden können, sobald ein äußeres Ereignis eintritt. Nach der Bearbeitung des Ereignisses werden die unterbrochenen Aufgaben an der Stelle fortgeführt, an der sie unterbrochen wurden.

Während es beim Super-Loop-Ansatz oft schwer vermeidbar ist, dass zu bestimmten Zeiten keine Aufgaben bearbeitet werden, obwohl welche vorhanden wären, wird die Resource Rechenzeit mit dem Multitasking-Betriebssystem FreeRTOS optimal genutzt.

Sowohl für die Synchronisation von Tasks als auch für den Nachrichtenaustausch zwischen einzelnen Tasks bietet FreeRTOS eine Reihe von Mechanismen, wie zum Beispiel Queues und Semaphoren an.

Speicherverwaltung

Besonders hervorzuheben ist die unter FreeRTOS verfügbare Speicherverwaltung. Während Desktop-Betriebssysteme eine einzige Speicherverwaltung bereitstellen, mit der eine Vielzahl verschiedenster Anforderungen möglichst optimal erfüllt werden, geht man bei FreeRTOS einen anderen Weg, der eine möglichst schlanke Implementierung verspricht.

Im Falle von Embedded Systemen ist ja bereits in der Entwicklungsphase klar, welche Anforderungen die Speicherverwaltung erfüllen muß. Daher kann häufig auf allzu komplexe Algorithmen zur Speicherverwaltung verzichtet werden, was nicht nur Codespeicher spart sondern auch zu einem vorhersehbareren Zeitverhalten der Applikation führen kann.

Die Anforderungen, die an eine Speicherverwaltung gestellt werden, rangieren zwischen zwei Extremen: Auf der einen Seite gibt es Anwendungen, die auf eine dynamische Speicherverwaltung komplett verzichten können, weil alle Daten, die nicht auf dem Stack abgelegt werden, an festen Stellen auf dem Heap gespeichert werden. Das andere Extrem stellen Anwendungen dar, die im Laufe der Zeit immer wieder Speicherbereiche unterschiedlicher Größe reservieren und freigeben und dadurch den verfügbaren Speicher mehr oder weniger stark fragmentieren.

Das FreeRTOS Paket bietet bereits mehrere Implementierungen an. Der Entwickler kann entweder auf eine dieser Implementierungen zurückgreifen oder eine eigene Strategie zur Speicherverwaltung implementieren.

Lizens

Das FreeRTOS-Projekt ist heute ein AWS Open Source Projekt und unterliegt der MIT Open Source License.

Zielplattformen

Das FreeRTOS-Paket ist zunächst sehr umfangreich. Dabei ist der Code, welcher für ein bestimmtes Projekt notwendig ist, eher übersichtlich. Der für ein Projekt notwendige Code setzt sich aus einem allgemeinen Teil und einem prozessorspezifischen Teil zusammen. Das FreeRTOS-Paket beinhaltet neben dem allgemeinen Teil die prozessorspezifischen Teile für eine ganze Reihe von Plattformen, wobei mit Plattform die Kombination aus Controller und verwendetem Compiler gemeint ist.

In vielen Fällen kann ein Projekt auf einem der im FreeRTOS-Paket bereits enthaltenen Projekt-Templates aufsetzen. Sollte eine Portierung notwendig sein, kann man wohlmöglich auf einem der unterstützten Derivate aufbauen. Zudem bieten Chiphersteller wie ST Templates an, mit denen FreeRTOS-Projekte recht zügig für ihre Prozessoren gestartet werden können.

Ansonsten muss der prozessorspezifische Teil tatsächlich explizit beigesteuert werden. Dieser bezieht sich dann insbesondere auf Taskswitches und auf die damit eng verbundene Interruptverarbeitung.

  • Sie erwägen ein Echtzeitbetriebssystem einzusetzen, wünschen sich eine Beratung, oder die konkrete Implementation?
  • Nehmen Sie bitte Kontakt mit uns auf.