Echtzeitbetriebssystem 05.04.2022, 17:43 Uhr

Mit FreeRTOS den Source-Code unter Kontrolle

Das produktive Leichtgewicht und seine Vorteile für die Entwicklung von Embedded-Lösungen
(Quelle: TQ-Group)
In Anbetracht der meist nicht üppigen Ressourcen von Mikrocontrollern, will der Einsatz eines Betriebssystems gut überlegt sein. FreeRTOS ist ein Open-Source-Echtzeitbetriebssystem, das aus einem sehr schlanken Kernel und einer Reihe von Bibliotheken besteht. Damit lassen sich sowohl Stand-alone-Lösungen als auch Cloud-fähige IoT-Geräte realisieren.
Zahlreiche Embedded-Lösungen – speziell Mikrocontroller basierte – haben nur eine spezifische Aufgabe zu bewältigen. Daher setzten viele Entwickler lange Zeit auf monolithische Lösungen, bei denen die Applikationssoftware und die Firmware eine Einheit bildeten und auch meist aus einer (Entwickler-)Hand kamen. Damit wird oftmals das maximal mögliche aus den Ressourcen beschränkten Mikrocontrollersystemen herausgeholt. Allerdings hat sich das Umfeld für Embedded Systeme im Laufe der Zeit geändert und es wurden Anforderungen an die Entwickler herangetragen, die diesen Bare-Metal-Ansatz an die Grenzen brachten: Ob es nun erhöhter Zeitdruck war und damit die Softwareentwicklung im Team notwendig wurde oder technische Wünsche der Kunden den Aufwand vergrößerten - um den Einsatz von Betriebssystemen kommt man kaum noch herum. Entsprechend hat der Markt reagiert und eine Vielzahl von Embedded-Betriebssystemen entwickelt: Von einfachen Prozess-Schedulern bis hin zu umfangreichen Echtzeitbetriebssystemen inklusiver Server-Funktionalität reicht mittlerweile die Spanne.
Damit lassen sich alle Anwendungsanforderungen von einer schnellen und prädiktiven Reaktion (harte Echtzeit) bis hin zu Server- und Cloud-Lösungen realisieren – aber eben nicht mit allen Betriebssystemen: Entweder ist der Funktionsumfang nicht passend oder der Ressourcenbedarf (Hardware, Entwicklungsaufwand und Kosten) ist zu hoch. Die Suche nach dem besten Betriebssystem für eine spezifische Anwendung hat sich so zur Quadratur des Kreises entwickelt: Es gibt nur Näherungen, aber keine perfekte Lösung.

Kleines, zertifiziertes System

Wenn weniger mehr sein soll, dann ist FreeRTOS ein interessanter und leistungsfähiger Open-Source-Kandidat, der ganz bewusst schlank gehalten wird: Die Mikrokernelarchitektur schont die Ressourcen und lässt sich einfacher an verschiedene Mikrocontroller-Familien anpassen – aktuell gibt es Portierungen für über 40 Plattformen, unter anderem ARM, Intel und Renesas. Typischerweise ist der Kernel-Platzbedarf gerade einmal zwischen 6 KB und 12 KB groß.
Der Kernel fokussiert sich dabei auf das Wesentliche, also Scheduling, Interprozess-Kommunikation und grundlegende Speicherverwaltung - alle weiteren Funktionen sind als hinzuladbare Bibliotheken realisiert. Das erleichtert nicht nur die Portierung auf eine neue Architektur, auch der Code-Review vereinfacht sich. So ist FreeRTOS beispielsweise nach dem Security Evaluation Standard for IoT Platforms (SESIP) Assurance Level 2 zertifiziert. Mit dieser Zertifizierung haben die FreeRTOS 202012.00 LTS-Bibliotheken, einschließlich des FreeRTOS-Kernels und der zugehörigen IoT-Bibliotheken gezeigt, dass sie einen bestimmten Satz von Sicherheitskriterien für IoT-Plattformen erfüllen: Die Zertifizierung prüfte die Verifizierung der Plattform- und Instance-Identität, Firmware-Updates Over-the-Air (OTA), sichere Kommunikation, Software-Isolationsfähigkeiten und kryptografische Operationen. Darüber hinaus können Embedded-Entwickler, die FreeRTOS-basierte Anwendungen erstellen, die SESIP-Zertifizierung schneller für ihre eigenen Anwendungen erreichen, da die zugrunde liegenden Bibliotheken auf Konformität getestet wurden.

Perfektes Match: FreeRTOS und TQ Embedded

Dem Credo "klein aber leistungsfähig" von FreeRTOS folgt auch TQ-Embedded mit seinen TQMa64xxL-, TQMa243xL- und TQMa117xL-Modul-Serien: Die kleinen Module (38 mm x 38 mm bzw. 31 mm x 31 mm) sind genügsam in der Leistungsaufnahme und damit auch in der Wärmeentwicklung, verfügen trotzdem über zahlreiche Schnittstellen. Die Mikrocontroller und die zugehörigen Module lassen sich den Aufgaben entsprechend konfigurieren und ähneln damit dem Konzept von FreeRTOS – nicht verwunderlich, dass TQ-Embedded diese Modulserien mit FreeRTOS ausliefert - im Fall der TQMa64xxL-Module zusätzlich noch mit Linux für die A53-Cores.
Module für verschiedene Einsatzzwecke
TQ-Group
Die Module der TQMa64xxL-, TQMa243xL- und TQMa117xL-Serie vereinen die Grundfunktionen eines Computers – Prozessor, Speicher und Schnittstellenlogik – auf einer kleinen LGA-Platine. Diese wird auf die Applikationsbaugruppe aufgelötet und stellt so die Computing-Funktionen dem Gerät zur Verfügung. Mögliche Einsatzgebiete sind Steuerungen in der Industrie- und Gebäudeautomation sowie Industrial-IoT-Lösungen.
Das Embedded-Modul TQMa243xL basiert auf der Prozessorfamilie AM243x (Quad Cortex R5F) von Texas Instruments (TI). Es eignet sich hervorragend für Headless-Applikationen mit erweiterten Echtzeitanforderungen. Die CPU bietet mit ihrer integrierten PRU (Programmable Realtime Unit) bis zu vier Gigabit-Ethernet-Schnittstellen mit TSN-Unterstützung. Hinzu kommen weitere industrielle Schnittstellen wie CAN-FD, UART und SerDes aber auch USB 2.0.
Das TQMa64xxL ist pinkompatibel zum TQMa243xL, kann also ohne Änderung in die gleiche Träger-Hardware eingelötet werden. Der Hauptunterschied ist der AM64xx-Prozessor von TI, der zusätzlich über zwei bis vier Cortex A53 Cores verfügt und dadurch auch rechenintensivere Aufgaben übernehmen kann. Damit kann das Modul nicht nur Steuerungsaufgaben erfüllen, sondern auch aufwändige Datenanalysen als Entscheidungsgrundlage mit bewältigen.
Das TQMa117xL basiert auf NXPs i.MX RT1170, einem Cortex M7 unterstützt von diversen Hardware-Beschleunigern wie einer GPU. Damit ermöglicht es – im Gegensatz zu den beiden TI-Modulen – auch die Grafikausgabe auf Displays. Steuerungen der Industrie- und Gebäudeautomation sowie Industrial-IoT-Lösungen können so mit einem Human-Machine-Interface auf Touchdisplay-Basis ausgestattet bzw. erweitert werden. Die typische Leistungsaufnahme des Moduls liegt bei rund 1 W, was auch die Anwendung in Mobilapplikationen ermöglicht.
Als Industrieprodukt hängt der Produktpreis der Module sehr stark von den Stückzahlen ab, der Verfügbarkeitsdauer und den gewünschten Design-Services. Mit der Kombination aus eigener Entwicklung und Produktion gepaart mit dem Anspruch an Qualität, Robustheit, Langlebigkeit und langfristige Verfügbarkeit bietet TQ den Kunden die Möglichkeit, Embedded-Prozessoren von führenden Herstellern wie NXP, Texas Instruments und Intel problemlos in ihre eigenen Produkte zu integrieren – und das für eine Vielzahl unterschiedlicher Applikationen.
Mit den drei neuen Modulserien baut TQ-Embedded für die Kunden eine Brücke von den traditionellen Mikrocontroller-Designs, die an ihre Grenzen gestoßen sind, hin zu neuen, leistungsfähigeren Mikrocontrollern beziehungsweise Prozessoren. Dies entlastet die Entwickler in ihren Projekten, da sie bei einem Umstieg auf eine neue Prozessorarchitektur nicht alle Eigenheiten für das Hardware-Design erlernen müssen. So bestehen beispielsweise auf Energieeffizienz getrimmte Prozessoren aus unterschiedlichen Cores, die für gewisse Aufgaben energieoptimiert sind und bei Nichtbedarf in Winterschlaf geschickt werden. Das bringt deutliche Energieersparnisse, der Schaltungsaufwand für die CPU-Versorgung erhöht sich allerdings. Auch verlangen die immer höher getakteten Speicher nach HF-Design-Expertise. Es spricht also viel dafür, diesen Entwicklungsaufwand TQ-Embedded zu überlassen und die einsatzbereiten Embedded-Module zu nutzen.
Ziel beim Wechsel der Architektur sollte es sein, den Aufwand zu reduzieren, auch im Softwarebereich. (Echtzeit-)Betriebssysteme wie FreeRTOS helfen dabei merklich, da man sich der neuen Architektur auf einer höheren Abstraktionsebene nähert und so weniger Detailkenntnisse zum Beispiel für die Initialisierung der Bausteine, notwendig sind. Damit lassen sich auch leichter neue Programmierer an die Embedded-Welt heranführen bzw. es ist einfacher, mit mehreren Software-Entwicklern an einem Projekt zu arbeiten.

Breite Konfigurierbarkeit sorgt für hohe Flexibilität

Der FreeRTOS-Scheduler ist konfigurierbar für einen präemptiven oder kooperativen Multitasking-Betrieb. Er ist auch geeignet für eine symmetrische Multicore-Konfiguration (SMP) und erschließt so ohne großen Aufwand das Potenzial vieler moderner Multi-Core-Prozessoren: Mit einer Instanz von FreeRTOS lassen sich die Aufgaben auf die mehreren Kerne verteilen. Ein aktueller Trend der Prozessorhersteller ist es jedoch, unterschiedliche Core-Versionen auf einem Baustein zu vereinigen, also eine asymmetrische Multicore-Konfiguration (AMP) anzubieten. Auch hier kann FreeRTOS weiterhelfen, allerdings mit einer eigenen Betriebssysteminstanz für jeden Core, was sich aufgrund der geringen Kernel-Größe gut verschmerzen lässt.
Je nach Mikrocontroller ist auch ein Tickless-Modus realisiert, um den Stromverbrauch zu reduzieren. Durch das Anhalten des Tick-Interrupts kann der Mikrocontroller in einem tiefen Stromsparzustand verbleiben, bis entweder ein Interrupt auftritt oder es für den RTOS-Kernel an der Zeit ist, eine Task in den Bereitschaftszustand zu versetzen. Damit lassen sich Applikationen leichter realisieren, die auf eine lange Batterielaufzeit angewiesen sind.
Für die Interprozesskommunikation sind neben den üblichen zwischengeschalteten Objekten wie Queues, Event Groups und Semaphoren auch direkte Task Notifications konfigurierbar. Damit kann der Anwender die für seine Applikation beste Kommunikationsstrategie wählen.
Auch die Speicherverwaltung von FreeRTOS ist flexibel. So lassen sich Kernel-Objekte entweder vom Compiler statisch allokieren oder dynamisch zur Laufzeit. Für letzteres gibt es fünf unterschiedliche Schemata, um den jeweiligen Anforderungen der Anwendungen und den Fähigkeiten der Mikrocontroller gerecht zu werden.
Für höhere Betriebssystemfunktionen stehen vier Bibliotheken zur Verfügung:
  • FreeRTOS Plus
  • FreeRTOS Core
  • FreeRTOS for AWS IoT
  • FreeRTOS Labs
FreeRTOS Plus gliedert sich in Unterpakete auf. Dazu zählen der Socket basierte TCP/IP-Stack, der Command Line Interpreter und POSIX-artige Peripherietreibererweiterungen. Hinzu kommen noch Logging-Funktionen und Rückfall-Algorithmen. Letztere dienen zur Entlastung des Datenverkehrs in Netzwerken.
Die FreeRTOS-Core-Bibliotheken implementieren auf offenen Standards basierende Konnektivität, Sicherheit und verwandte Funktionen. Diese Bibliotheken eignen sich für den Aufbau intelligenter Mikrocontroller-basierter Geräte, die mit der Cloud verbunden sind. So stehen MQTT-Client- und –Agent-Funktionen zur Verfügung ebenso wie ein HTTP-Client, SNTP (Simple Network Time Protocol) Funktionen, ein an JSON angelehnter Parser, PKCS #11 Schlüsselverwaltung, LTE CAT M-1 Interface und das Netzwerktransport-Interface.

FreeRTOS: Viele Vorteile für (I)IoT-Anwendungen

Seit 2017 liegt die Verantwortung und Koordination der Weiterentwicklung von FreeRTOS bei Amazon Web Services (AWS). Dies schlägt sich in der beeindruckenden FreeRTOS for AWS IoT Bibliothek nieder. Sie implementiert Clients für Mikrocontroller-basierte IoT-Geräte, die sich mit den AWS spezifischen Cloud-Mehrwertdiensten verbinden. Damit erschließen sich Funktionalitäten die absolut auf der Höhe der Zeit sind, ohne dafür ein großes und Ressourcen fressendes Betriebssystem betreiben zu müssen. Allen voran Over-the-Air (OTA) Updates, um im Feld befindliche Geräte sicher zu aktualisieren. Hinzu kommen Verwaltungsfunktionen wie die Bereitstellung neuer IoT-Geräte, Security Monitoring, Signature-Mechanismen, Job-Verwaltung und die virtuelle Repräsentation der Geräte in der Cloud („digitaler Zwilling“).
FreeRTOS Labs Projekte sind funktionsfähig, aber entweder unvollständig, experimentell oder einfach für die Open-Source-Gemeinschaft gedacht. Dazu zählen ein LoRaWAN-Stack für das Low-Power-Funknetz, POSIX Threading Wrapper, FAT12/FAT16/FAT32-Dateisystem, IPv6-Funktionalität und Erweiterungen für die parallele Nutzung mehrerer TCP/IP-Netze. Hinzu kommen noch MCUBoot, ein konfigurierbarer, sicherer Bootloader, der von mehreren Branchenführern gepflegt wird und die kryptografische Überprüfung von Software-Images unterstützt.
Beim Aufbau der Bibliotheken wird darauf geachtet, möglichst wenige Abhängigkeiten von anderen Bibliotheken zu erzeugen. FreeRTOS Core und FreeRTOS for AWS IoT haben sogar keine anderen Abhängigkeiten als die zur Standard-C-Bibliothek - sie sind auch nicht einmal von einem RTOS abhängig. Damit wird ein Problem vermieden, das aktuell in der Linux-Gemeinde heiß diskutiert wird: die über 30 Jahre gewachsene Dependency Hell der über 10.000 main.h-Header, deren Auflösung für über 80 Prozent der Compilerungszeit verantwortlich sein soll. In Summe kommt der Linux-Kernel auf rund 53.000 Quellcodedateien.
Im Gegensatz dazu hat FreeRTOS vier (!) Dateien - drei die sich alle Portierungen teilen und eine Mikrocontroller-spezifische. Zudem entsprechen die drei FreeRTOS-Kernquelldateien, die allen Ports gemeinsam sind, den Richtlinien der MISRA-Codierungsstandards. Um auch mit älteren C-Compilern zu funktionieren, hat man sich auf den C99-Standard als Obergrenze festgelegt – einige Bibliotheken kommen sogar mit dem elementaren C90 aus.
Durch die Konfigurierbarkeit von FreeRTOS lässt es sich für spezifische Anwendungsfälle optimieren, unter anderem für:
  • Steuerungsaufgaben mit harten Echtzeitanforderungen
  • (I)IoT-Anwendungen mit Cloud-Anbindung
  • Low-Power-Applikationen mit langen Batterielaufzeiten
  • Safety-kritsche Aufgaben mit hoher Zuverlässigkeit
Der Source Code von FreeRTOS steht per GitHub zur Verfügung und unterliegt der MIT-Lizenzbedingung: Sie ist kompatibel mit vielen Copyleft-Lizenzen, erlaubt aber auch die Wiederverwendung innerhalb proprietärer Software, vorausgesetzt, dass alle Kopien der Software oder ihrer wesentlichen Teile eine Kopie der Bedingungen der MIT-Lizenz sowie einen Copyright-Vermerk enthalten. Damit ist FreeRTOS auch für nichtfreie Projekte geeignet.
FreeRTOS nutzt zwei Repositories: eines für einzelne Bibliotheken und eines für Pakete. Jedes einzelne Bibliotheks-Repository enthält den Quellcode für eine Bibliothek ohne Build-Projekte oder Beispiele. Paket-Repository enthalten mehrere Bibliotheken und können vorkonfigurierte Projekte enthalten, die die Verwendung der Bibliothek demonstrieren. Package Repositorys enthalten zwar mehrere Bibliotheken, aber keine Kopien dieser Bibliotheken. Stattdessen verweisen Paket-Repositorys auf die Bibliotheken, die sie als Git-Submodule enthalten. Durch die Verwendung von Submodulen wird sichergestellt, dass es für jede einzelne Bibliothek eine einzige Quelle gibt.
Die Git-Repositories für die einzelnen Bibliotheken sind auf zwei GitHub-Organisationen aufgeteilt: Repositories, die FreeRTOS-spezifische Bibliotheken (zum Beispiel FreeRTOS+TCP) oder generische Bibliotheken (zum Beispiel coreMQTT, das Cloud-unabhängig ist und mit jedem MQTT-Broker funktioniert) enthalten, befinden sich in der FreeRTOS-GitHub-Organisation.
Repositories mit AWS IoT-spezifischen Bibliotheken (wie der AWS IoT-Over-the-Air-Update-Client) befinden sich in der AWS GitHub-Organisation.
Jedes Open-Source-Projekt lebt von seiner Community - mit AWS steht schon mal ein anerkanntes Schwergewicht als Maintainer bereit. Hinzu kommen die Halbleiterhersteller Cypress, CEVA, Espressif, Infineon, Mediatek, Microchip, Nuvoton, NXP, Qualcomm, Realtek, Renesas, SiFive, Silicon Lab, STMicroelectronics, Texas Instruments und Xilinx. Zu den Entwicklungs-Tool-Herstellern in der FreeRTOS-Community zählen Code Confidence, IAR, Percepio und Segger. Abgerundet wird das Spektrum durch Anbieter von Trainings-, Consulting- und Software-Services.

Fazit

Wie die meisten Echtzeitbetriebssysteme ist auch FreeRTOS für zeitkritische und/oder Embedded-Anwendungen ausgelegt – wer eine große Auswahl an (zukaufbarer) Standard-Softwarepakete oder exotische Programmiersprachen will, ist hier falsch. Der Minimalismus von FreeRTOS ist die Antwort auf viele Bedenken traditioneller Mikrocontroller-Programmierer, die sich nicht dem undurchschaubaren Datei-Wust anderer offener Betriebssystem-Distributionen ausliefern wollen – sie behalten weiterhin den Überblick und die Kontrolle über ihre Software. Gleichzeitig gewinnen sie aber auch den einfachen und stressfreien Zugang zu diversen Funktionalitäten (zum Beispiel Cloud), die bislang mit Mikrocontrollern kaum erreichbar schienen oder sehr viel Entwicklungszeit in Anspruch nahmen. In Kombination mit einem vorintegrierten Prozessormodul lässt sich den Projekt-Deadlines so elegant ein Schnippchen schlagen.
Manne Kreuzer, technischer Redakteur bei TQ-Group



Das könnte Sie auch interessieren