Mit FreeRTOS behält der Entwickler den Source-Code unter seiner Kontrolle.

Mit FreeRTOS behält der Entwickler den Source-Code unter seiner Kontrolle. (Bild: https://elements.envato.com/de/YouraPechkin)

Mit Embedded-Betriebssystemen 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.

Warum sich FreeRTOS sich einfach an verschiedene Mikrocontroller-Familien anpassen lässt

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

SESIP-Zertifizierung schneller erreichen

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.

Deshalb passt das Konzept von FreeRTOS optimal zu den Crossover-MCUs der TQMa117xL- und MBa117xL-Serien

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 × 38 mm bzw. 31 mm × 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.

FreeRTOS ermöglicht ein differenzielles Update von Geräten im Feld über die Cloud.
FreeRTOS ermöglicht ein differenzielles Update von Geräten im Feld über die Cloud. (Bild: TQ-Group)

FreeRTOS für Embedded-Lösungen

Viele 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. Im Laufe der Zeit wurden jedoch Anforderungen an die Entwickler herangetragen, die diesen „Bare Metal“-Ansatz an die Grenzen brachten. Ohne den Einsatz eines Betriebssystems geht es inzwischen kaum noch. Entsprechend hat der Markt reagiert und eine Vielzahl von Embedded-Betriebssystemen entwickelt. Welche Vorteile FreeRTOS bietet, erläutert der Beitrag.

Auch wenn FreeRTOS für die drei neuen Modul-Serien erstmals als primäres Betriebssystem zum Einsatz kommt, so ist es bei TQ-Modulen der i.MX8-Serie nicht unbekannt: NXP bietet für die eigene Entwicklungssoftware MCUXpresso Software Development Kit (MCUXpresso SDK) ein vorintegriertes FreeRTOS an. Zusätzlich hat NXP mit RPMsg einen passenden Software-Layer zur Interprozessorkommunikation entwickelt (siehe Kasten), um das Echtzeitverhalten möglichst wenig zu beeinflussen. Ziel ist es, die vorhandenen Cortex-M-Cores möglichst effizient einzubinden. TQ-Embedded unterstützt dies mit den BSPs (Board Support Packages) für die i.MX8-Module.

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

Die Architektur von FreeRTOS setzt auf klare Trennung der einzelnen Funktionalitäten.
Die Architektur von FreeRTOS setzt auf klare Trennung der einzelnen Funktionalitäten. (Bild: TQ-Group)

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 z. B. 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 des FreeRTOS-Scheduler 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.

Die FreeRTOS+IO-Bibliothek entkoppelt die Anwendungssoftware sauber und ohne Aufwand von der Schnittstellen-Hardware und ihren Treibern.
Die FreeRTOS+IO-Bibliothek entkoppelt die Anwendungssoftware sauber und ohne Aufwand von der Schnittstellen-Hardware und ihren Treibern. (Bild: TQ-Group)

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.

Warum FreeRTOS besonders für (I)IoT-Anwendungen geeignet ist

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

Das Embedded-Modul TQMa117xL.
Das Embedded-Modul TQMa117xL. (Bild: TQ-Group)

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 bekannte 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 kommt noch MCUBoot, ein konfigurierbarer, sicherer Bootloader, der von mehreren Branchenführern gepflegt wird und die kryptografische Überprüfung von Software-Images unterstützt.

Wie Sie Bibliotheken mit FreeRTOS aufbauen

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 Repositorys: eines für einzelne Bibliotheken und eines für Pakete

FreeRTOS nutzt zwei Repositorys: 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-Repositorys für die einzelnen Bibliotheken sind auf zwei GitHub-Organisationen aufgeteilt: Repositorys, die FreeRTOS-spezifische Bibliotheken (z. B. FreeRTOS+TCP) oder generische Bibliotheken (z. B. coreMQTT, das Cloud-unabhängig ist und mit jedem MQTT-Broker funktioniert) enthalten, befinden sich in der FreeRTOS-GitHub-Organisation. Repositorys 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.

Das Embedded-Modul TQMaX4XxL.
Das Embedded-Modul TQMaX4XxL. (Bild: TQ-Group)

Ausgelegt für zeitkritische und/oder Embedded-Anwendungen

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 (z. B. 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.

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 Anwendern die Möglichkeit, Embedded-Prozessoren von führenden Herstellern wie NXP, Texas Instruments und Intel problemlos in ihre eigenen Produkte zu integrieren für eine Vielzahl unterschiedlicher Applikationen. (neu)

Autor

Autor, Manne Kreuzer

Manne Kreuzer ist Technischer Redakteur bei der TQ-Group.

Sie möchten gerne weiterlesen?

Unternehmen

TQ-Group

Gut Delling, Mühlstraße 2
82229 Seefeld
Germany