Das Echtzeitbetriebssystem PX5 RTOS mit nativer Implementierung des Industriestandards POSIX Threads zielt ab auf Entwickler von anspruchsvollen Embedded-Anwendungen. Es ist extrem klein, kann mit Geschwindigkeit, Effizienz und Einfachheit glänzen – und der Unterstützung durch bewährte Testtools.
Mit einem Anteil von 70 % am Embedded-Markt ist Embedded Linux eines der beliebtesten Embedded-Betriebssysteme. Allerdings ist Embedded Linux zu speicher- und rechenintensiv für ressourcenbeschränkte oder harte Echtzeit-Embedded-Anwendungen. Hier kommt das neue PX5 RTOS ins Spiel, ein fortschrittliches Echtzeitbetriebssystem der 5. Generation: Es bietet eine native Implementierung des Industriestandards POSIX-Threads (Pthreads) API und bringt damit die gleiche API, die auch in Embedded Linux zu finden ist, auf ressourcenbeschränkte Prozessoren. Mit der breiten Prozessorunterstützung von PX5 RTOS ermöglicht dies die gemeinsame Nutzung von plattformübergreifenden Anwendungen und hilft Unternehmen, ihre Investitionen in Software zu schützen.
PX5 zielt auf Anwendungen ab, bei denen Geschwindigkeit, Effizienz und Determinismus ganz zentrale Anforderungen sind, wie z. B. System-on-Chip (SoC), Automotive, industrielle Automatisierung, Medizintechnik und Unterhaltungselektronik. Es ist extrem klein und benötigt bei minimaler Nutzung weniger als 1 kB, sodass PX5 RTOS auch in Prozessoren mit stark beschränktem Speicher passt.
Hinsichtlich der Leistung ist das PX5 RTOS sehr schnell und effizient. Auf einem durchschnittlichen 32-bit-Mikrocontroller mit 80 MHz werden die meisten API-Aufrufe und Kontextwechsel in weniger als einer Mikrosekunde abgeschlossen. Nur die wenigsten der anderen aktuell am Markt erhältlichen Echtzeitbetriebssysteme übertreffen dieses Leistungsniveau.
Das PX5 RTOS wurde mit Blick auf Safety und Security entwickelt. Es verfügt über die zum Patent angemeldete Technik Pointer/Data Verification (PDV) und umfangreiche Tests, die sicherstellen, dass es selbst strenge Sicherheitsstandards erfüllt. Das Betriebssystem wird sogar auf eine 100-prozentige Codeabdeckung von Anweisungen und Verzweigungsentscheidungen getestet, was es zu einem der zuverlässigsten Betriebssysteme am Markt macht. PX5 RTOS ist deterministisch, was bedeutet, dass die Verarbeitung für jede API und jeden Kontextwechsel vollständig vorhersehbar ist und nicht davon abhängt, wie viele Threads aktiv sind. So kann gewährleistet werden, dass das System auch unter den anspruchsvollsten Bedingungen zu- verlässig und konsistent arbeitet.
Auf Seiten der Anwendungsentwicklung bedeutet der Einsatz von PX5 RTOS mit dem Industriestandard Pthreads, dass Entwickler nur minimale Kenntnisse benötigen, um mit der Erstellung ihrer Anwendung beginnen zu können. Das auf Einfachheit ausgelegte PX5 RTOS besteht aus nur zwei Quelldateien und kann in drei einfachen Schritten installiert werden:
Durch Änderung des C-Hauptprogramms, um pthread.h einzubinden und px5_pthread_start aufzurufen, konvertiert das PX5 RTOS das Hauptprogramm zum ersten Thread und macht es für den Entwickler startbereit.
PX5 RTOS wurde entwickelt, um Unternehmen dabei zu helfen, ihre Produkte schneller auf den Markt zu bringen, gleichzeitig deren Qualität zu erhöhen und sie sicherer zu machen. Dank der Implementierung des Industriestandards Pthreads API kann der Anwendungscode leicht wiederverwendet werden und ist besser portierbar; plattformübergreifende Anwendungen werden vollständig unterstützt. Außerdem ist dank der Verwendung des Industriestandards POSIX Threads nur ein Minimum an Schulung erforderlich.
Als Bill Lamie in den frühen 1990er-Jahren sein erstes kommerzielles Echtzeitbetriebssystem entwickelte, wandte er eine Technik an, bei der das Benutzerhandbuch noch vor dem eigentlichen Implementierungscode geschrieben wurde. Der Hauptgrund für diesen Ansatz war, dass er sicherstellen wollte, dass das neue RTOS »sinnvoll« ist – das heißt, wenn es im Benutzerhandbuch nicht leicht zu erklären ist (API oder Funktion), ist es falsch und sollte geändert werden. Auf einer höheren Ebene diente dieser Ansatz auch als ausgezeichnete Kontrolle für die Spezifikation und die Anforderungen des Echtzeitbetriebssystems. Zudem konnte so die Erstellung des Benutzerhandbuchs parallel zur eigentlichen Implementierung erfolgen. In jedem Fall erwies sich diese Vorgehensweise als sehr vorteilhaft für alle folgenden Projekte.
Aber auch wenn der »Document-First«-Ansatz wesentlich zur Erhöhung der Benutzerfreundlichkeit der Software beiträgt, so trägt er dennoch nicht genug zur Verbesserung der Qualität des zugrunde liegenden Implementierungscodes bei. Die Softwarequalität hängt immer noch stark von gründlichen Tests ab, einschließlich einer statischen Analyse. In seinem Buch »Test-Driven Development for Embedded C« hat James W. Grenning den Ansatz der testgetriebenen Entwicklung (Test-Driven Development, TDD) untersucht. Der Grundgedanke dahinter ist, dass die Tests zuerst geschrieben werden – noch vor dem Implementierungscode selbst. Die Betonung liegt hier auf »vor«. Wenn ein TDD-Test zum ersten Mal kompiliert wird, kommt es immer zu Kompilierungs- und Linker-Fehlern, da der Implementierungscode nicht existiert.
Einen Teil seines Erfolges verdankt PX5 RTOS zum Beispiel auch den bereits verfügbaren Tools, zu dem auch die Entwicklungswerkzeuge von IAR gehören, die sowohl für die Entwicklung der TDD-Tests als auch des Implementierungscodes verwendet wurden. Insbesondere die Entwicklungsumgebung der Embedded Workbench von IAR wurde bei der Erstellung und dem Debugging der Testumgebung, der Tests und des Implementierungscodes eingesetzt. Der Debugger wurde für die Fehlersuche und -behebung sowie zur Bestimmung der Abdeckung des Implementierungscodes im Zusammenhang mit den TDD-Tests genutzt. Mit dem Debugger von IAR ist es einfach, die Codepfade zu identifizieren, die während der Tests ausgeführt wurden – und, was vielleicht genauso wichtig ist, die Pfade, die nicht ausgeführt wurden. Schließlich hilft die statische Analyse mit Hilfe von IAR C-STAT bei der Identifizierung von Codeproblemen zur Compile-Zeit sowie bei der Bewertung der MISRA-Konformität.