Echtzeitbetriebssystem Mit Open-Source gegen Abhängigkeit

Die Entscheidung für eine bestimmte Betriebssystemplattform hat für viele Firmen eine strategische Bedeutung, da sie über viele Jahre und Folgeprojekte stabil bleiben sollte. Hier macht das Prinzip der quelloffenen, freien Software unabhängig von den Entscheidungen des Betriebssystemanbieters.

Seit Jahren werden immer mehr eingebettete Systeme mit speziellen Betriebssystemen ausgestattet. Neben den klassischen Grundfunktionen wie Multitasking und Intertask-Kommunikation gewinnen erweiterte Funktionen wie Dateisysteme für Flash-Karten, aber auch USB- und Netzwerkanbindung immer mehr an Bedeutung. Ein schlüsselfertiges Betriebssystem erleichtert hier die Entwicklung ungemein. Die Entwickler können sich stärker auf die produktspezifischen Herausforderungen konzentrieren und sich auf die fertigen Dienste und Funktionen des Betriebssystems stützen.
Allerdings gibt es ein böses Erwachen, wenn das Betriebssystem aus verschiedensten Gründen plötzlich nicht mehr zur Verfügung steht - sei es, weil der Hersteller einzelne Prozessorarchitekturen nicht mehr unterstützt, sich strategisch neu ausrichtet oder schlicht vom Markt verschwindet. Die Weiternutzung in bestehenden Produkten ist zwar meist noch sichergestellt, allerdings muss man dann ohne Bug-Fixes oder gar Funktions-erweiterungen auskommen. Eine Nutzung desselben Betriebssystems in einem Nachfolgeprodukt ist jedoch unmöglich, das angeeignete Betriebssystem-Know-how und der produktspezifische Quellcode ist in weiten Teilen verloren.

Quelloffene Alternative

Das kann mit Open-Source-Software nicht passieren. Der offene Quellcode ermöglicht ein tiefer gehendes Verständnis des Betriebssystems; neben großen Erleichterungen bei der Applikationsentwicklung wird dadurch auch der Wissensaustausch von Entwickler zu Entwickler gefördert.
Das Echtzeitbetriebssystem »RTEMS« hat seine Wurzeln im Bereich der U.S.-Army, es wurde für Steuerungszwecke als Ersatz für ein kommerzielles Echtzeitbetriebssystem entwickelt. Schon relativ bald wurde sein Quellcode veröffentlicht und unter einer modifizierten GPL (General Public License) nutzbar. Seit diesem Zeitpunkt orientiert sich die Weiterentwicklung einerseits an den Anforderungen der Anwender, andererseits aber an den festen Eckpfeilern Echtzeitfähigkeit, Quelloffenheit und kostenfreie Nutzbarkeit. Die Anwender können zwar weltweit auf kommerziellen Support zurückgreifen, sind aber nicht abhängig davon. Hinzu kommt noch, dass viele Verbesserungen, die Anwender für RTEMS entwickelt haben, in das System integriert wurden, damit sie allen Nutzern zur Verfügung stehen und mit dem Betriebssystem kontinuierlich weiter gepflegt werden.
Beispielhaft für die Einsatzmöglichkeiten von RTEMS wird im Folgenden ein System zur Datenaufzeichnung (Logger) im Rennsportbereich beschrieben, das der Autor mitentwickelt hat. Die Kernanforderungen waren anspruchsvoll:

  • Integration der Hardware in die speziell konzipierte Motorsteuerung; 
  • Bootzeit unter fünf Sekunden; 
  • Aufzeichnungsdatenraten im Bereich von 500 KByte/s bis 1000 KByte/s; 
  • maximale Aufzeichnungsdauer im Stundenbereich; 
  • Speicherung der Daten auf Flash-Karte; 
  • Abruf der Daten per Ethernet mit mindestens 80 MBit/s: 
  • Flexibilität für sich ändernde Einsatzszenarien; 
  • Ankopplung an den CAN-Bus. 

Die Hardware wurde für diese Anwendung maßgeschneidert entwickelt. Als zentraler Mikrocontroller kam dabei ein »MPC5200« von Freescale zum Einsatz, der nicht nur über alle benötigten Schnittstellenmodule verfügt, sondern auch ausreichend Rechenleistung bietet.

Nach Analyse der Anforderungen wurde RTEMS als Betriebssystem ausgewählt: Alle benötigten APIs für die benötigten Funktionen waren vorhanden, und durch die quelloffene Struktur war ersichtlich, dass die Anpassungen an die speziellen Anforderungen des Systems unterstützt wurden (Bild 1). Die weitere Entwicklung erfolgte dann in mehreren Schritten: 

  • Die Portierung von RTEMS an die spezifische Hardware-Plattform und deren Schnittstellen wurde von einem RTEMS-Support-Center durchgeführt. 
  • Die Struktur der Applikationssoftware wurde geplant und dann, unterstützt vom Support-Center, von den Softwareentwicklern innerhalb des Rennsportteams durchgeführt. 
  • Der Durchsatz der kritischen Datenpfade wurde überprüft und dabei einige Schwachstellen identifiziert, die sich durch die Struktur der eingesetzten Hardware ergaben. Daher wurde das Zusammenspiel der beteiligten Softwarekomponenten optimiert, begonnen bei den Schnittstellentreibern über die Dateisystem-Unterstützung von RTEMS bis zur Applikation.

Gerade die Durchsatzoptimierung (Bild 2) gestaltete sich relativ einfach, da auch die Betriebssystemmodule für eine Analyse offen sind. Der Quellcode zeigt die generelle Struktur und Funktionsweise, erlaubt Änderungen und Anpassungen. So konnte die Puffer-Verwaltung im genutzten Dateisystem auf große Dateien hin optimiert und die Unterstützung von DMA-fähigen Flash-Treibern verbessert werden. Damit ließen sich die gesetzten Ziele erreichen.
Hier zeigen sich exemplarisch die Vorteile des Open-Source-Prinzips von RTEMS: Die Verbesserungen, die für dieses Kundenprojekt am Betriebssystemcode vorgenommen wurden, wurden ins Quellcode-Repository von RTEMS übernommen. Einerseits profitieren heute alle RTEMS-Anwender von den Verbesserungen, andererseits stehen die Optimierungen dem Kundenprojekt auch in zukünftigen Betriebssystemversionen weiter zur Verfügung, da sie dort weiter gepflegt werden.
Das entwickelte System zur Datenaufzeichnung hat sich inzwischen über mehrere Jahre bewährt. Der Erfolg sorgt dafür, dass auch in benachbarten Applikationsfeldern über Einsatzmöglichkeiten dieses flexiblen Betriebssystems diskutiert wird.

RTEMS unter der Lupe

Das Betriebssystem ist bereits in vielen Marktsegmenten im Einsatz. Diese umfassen neben dem Automobilmarkt auch fahrerlose Transportsysteme, Satellitentechnik, Telekommunikation, Medizintechnik, Robotik, Audiotechnik, Wehrtechnik und Industrieanwendungen. Mittlerweile ist RTEMS auf einigen 16-Bit- und fast allen 32-Bit-Architekturen einsetzbar. Dazu zählen »PowerPC«, »ARM«, »SPARC«, »MIPS«, »M68k«, »ColdFire« und »Microblaze«. Für ein minimales System reichen bereits 25 KByte RAM. Der Systemkern teilt Rechenzeit, Speicher und I/O-Ressourcen auf verschiedene Tasks auf. Er unterstützt dabei sowohl das POSIX- als auch das RTEID-API.

Zusätzliche Dienste stellen dann unter anderem verschiedene Dateisysteme, USB- und Netzwerkankopplung (Ethernet, CAN und andere) zur Verfügung (Bild 3).
An Entwicklungswerkzeugen herrscht kein Mangel. So stellt die RTEMS-Community speziell an das Betriebssystem angepasste Versionen des GNU-C-Compilers (gcc) sowie der zugehörigen Assembler und Linker (»binutils«) zur Verfügung. Diese Werkzeuge können in viele integrierte Entwicklungsumgebungen (IDE) integriert werden, beispielsweise auch in »Eclipse«. Als Debugger kommt häufig der »GNU Debugger« (gdb) zum Einsatz. Aber auch kommerzielle Debug-Systeme mit erweiterten Fähigkeiten können genutzt werden. So bietet der »TRACE32-ICD« von Lauterbach eine umfangreiche RTEMS-Awareness zur Anzeige von RTEMS-Objekten.
Die Lizenzierung gestaltet sich einfach: RTEMS wird unter einer modifizierten GPL V2 veröffentlicht. Die GPL stellt sicher, dass Änderungen und Verbesserungen am RTEMS-Quellcode offengelegt werden. Die RTEMS-spezifische Modifikation bestimmt andererseits, dass proprietärer Quellcode, der mit dem RTEMS-Kernel gelinkt wird, weiterhin unter Verschluss gehalten werden darf. Damit ist die Kontrolle über das produktspezifische Know-how gewährleistet. Gleichzeitig steht ein umfassender Support zur Verfügung. Neben der offen zugänglichen Dokumentation und dem Projekt-Wiki gibt es Mailing-Listen für den Austausch zwischen RTEMS-Anwendern. Zusätzlich existiert, maßgeschneidert auf die Projektbedürfnisse, kommerzieller Support. In Europa ist hierfür die Firma embedded brains qualifiziert, die auch regelmäßig Schulungen zu RTEMS durchführt.

Über den Autor:

Thomas Dörfler ist Geschäftsführer von embedded brains.