Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Rodos (Betriebssystem)

Rodos (Realtime Onboard Dependable Operating System) ist ein Echtzeitbetriebssystem für eingebettete Systeme und wurde für Anwendungen entwickelt, die hohe …

Inhalt6 Abschnitte
  1. 1. Grundidee und Einsatz
  2. 2. Entwicklung und Anwendungen
  3. 3. Mehrschichtige Architektur
  4. 4. Zentrale Merkmale
  5. 5. Beispiel: Hallo Welt
  6. 6. Threads und Topics

Grundidee und Einsatz

Rodos steht für „Realtime Onboard Dependable Operating System“ und ist ein Echtzeitbetriebssystem für eingebettete Systeme. Es wurde für Anwendungen entwickelt, die hohe Anforderungen an Zuverlässigkeit, Fehlertoleranz und Echtzeitfähigkeit stellen. Das System wird von der Universität Würzburg – Informatik 8 – weiterentwickelt, steht unter der Apache-Lizenz Version 2.0 und ist als Open-Source-Projekt verfügbar. Rodos ist in C, C++ und Assemblersprache programmiert.

Neben der Raumfahrt wird Rodos in der Forschung und Entwicklung für autonome Systeme, Robotik und industrielle Automatisierung eingesetzt. Durch seine Plattformunabhängigkeit können Echtzeitanwendungen flexibel auf unterschiedlichen Hardwareplattformen entwickelt werden.

Entwicklung und Anwendungen

Rodos wurde am Deutschen Zentrum für Luft- und Raumfahrt (DLR) entwickelt und basiert auf dem Betriebssystem BOSS. Es wird unter anderem im Mikro-Satellitenprogramm des DLR eingesetzt. Zu den bekannten Anwendungen gehören die Satelliten TET-1 und BIROS, die beide erfolgreich im Orbit betrieben werden. Außerdem wurde Rodos bei den Kleinsatelliten BeeSat 1 und BeeSat 2 verwendet.

Die Weiterentwicklung erfolgt aktuell in enger Zusammenarbeit zwischen dem DLR und dem Lehrstuhl Informationstechnik für Luft- und Raumfahrt der Julius-Maximilians-Universität Würzburg, insbesondere in der Abteilung für Luft- und Raumfahrtinformatik.

Mehrschichtige Architektur

Rodos ist als Framework mit einer mehrschichtigen Architektur aufgebaut:

  • Die Hardware-Schicht bildet die unterste Ebene. Sie steuert die Hardware direkt an.
  • Die Middleware-Schicht ermöglicht die Kommunikation zwischen Anwendungen und Systemkomponenten.
  • Die Anwendungsschicht unterstützt die Entwicklung spezifischer Anwendungen.

Das Betriebssystem wurde objektorientiert in C++ entwickelt und durch hardwarespezifischen C- und Assembler-Code ergänzt. Ein wichtiges Entwicklungsziel war, unnötige Komplexität zu vermeiden und ein einfach nutzbares, übersichtliches System bereitzustellen.

Rodos unterstützt unter anderem Mikrocontroller mit ARM7-Architektur, Atmel AVR32, STM32 mit 32-bit ARM Cortex-M3, Xilinx PowerPC PPC405, Raspberry Pi und RISC-V. Es kann außerdem als Gastsystem auf Linux, FreeRTOS, RTEMS, Windows oder TinyOS aufsetzen.

Zentrale Merkmale

Rodos stellt typische Funktionen von Echtzeitsystemen bereit, darunter Threads und Semaphoren. Threads sind ausführbare Programmteile; Semaphore unterstützen die Synchronisation. Weitere wichtige Merkmale sind:

  • ein objektorientiertes C++-Interface zur Vereinfachung der Entwicklung,
  • schnelles Booten für zeitkritische Anwendungen,
  • prioritätenbasiertes, präemptives Multitasking,
  • umfassendes Zeitmanagement,
  • threadsichere Kommunikation und Synchronisation,
  • effiziente Verteilung von Ereignissen.

Beim präemptiven Multitasking kann ein Thread durch einen wichtigeren Thread unterbrochen werden. Zusammen mit dem Zeitmanagement ermöglicht dies plattformunabhängige Echtzeitanwendungen, die flexibel und zuverlässig arbeiten.

Beispiel: Hallo Welt

Ein einfaches Rodos-Programm bindet mit #include "rodos.h" die benötigten Bestandteile ein. Eine Klasse HelloWorld wird von StaticThread<> abgeleitet und definiert eine run()-Methode. In dieser Methode gibt PRINTF("Hello World!\\n") die Zeichenkette „Hello World!“ aus.

Die spezielle run-Methode erweitert die Thread-Klasse um den auszuführenden Programmcode. Für die Entwicklung einer Rodos-Software benötigt der Nutzer lediglich die Header-Datei rodos.h, die alle notwendigen Bestandteile einbindet.

Threads und Topics

Rodos verwendet ein „fair priority controlled preemptive scheduling“. Dabei wird immer der Thread mit der höchsten Priorität ausgeführt. Laufende Threads mit niedrigerer Priorität werden pausiert. Haben mehrere Threads dieselbe Priorität, werden sie nacheinander in festen Zeitscheiben ausgeführt.

Im Beispiel besitzt HighPriorityThread die Priorität 25 und LowPriorityThread die Priorität 10. Der Thread mit der niedrigeren Priorität gibt fortlaufend „.“ aus. Der höher priorisierte Thread gibt in Sekundenintervallen „*“ aus und unterbricht dafür den niedrig priorisierten Thread. Die Wartezeit wird mit suspendCallerUntil(NOW() + 1*SECONDS) festgelegt.

Für die Kommunikation zwischen Threads oder zwischen Systemen über Gateways nutzt Rodos Topics. Ein Topic ist eine Nachricht eines bestimmten Typs. Threads können sich als Empfänger (Subscriber) registrieren oder als Sender (Publisher) auftreten. Dieses Publisher-Subscriber-Modell ermöglicht eine flexible Nachrichtenverarbeitung.

Im Beispiel wird Topic<long> counter1(-1, "counter1") verwendet. Der Publisher erhöht einen Zähler und veröffentlicht ihn mit counter1.publish(cnt) in 3-Sekunden-Intervallen. Der Subscriber empfängt den Long-Integer und gibt den erhaltenen Zählerstand direkt aus.

Weiterlesen

C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Assemblersprache Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen'), ist eine Programmiersprache, die auf den Befehlsvorrat eines … Hardware Unterteilung · Ausgabegeräte (Drucker, Bildschirm, Beamer, Lautsprecher …) · Eingabegeräte (Tastatur, Maus, Joystick …) · Einlesegeräte (Mikrofone, … Middleware Middleware ist eine zusätzliche Schicht zwischen Betriebssystem und Anwendungen. Im Bereich der Computerspieleentwicklung werden hingegen Teilsysteme (oder auch … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin … Thread (Informatik) Kritischer Abschnitt · Nebenläufigkeit · Parallele Programmierung · Prozess · Threadsicherheit. Literatur. Bearbeiten. Peter Ziesche: Nebenläufige & verteilte … Semaphor (Informatik) Semaphor (Informatik) Methode. Erzeuger und Verbraucher, sowie zur Koordination asynchroner Abläufe. Ein Semaphor ist eine Datenstruktur mit einer … Objektorientierung Unter Objektorientierung (kurz OO) versteht man in der Softwaretechnik eine Sichtweise auf komplexe Systeme, bei der ein System durch das Zusammenspiel … Booten Der Bootprozess eines Computers verläuft in mehreren Stufen. Nach dem Einschalten wird zunächst ein einfaches Programm aus einem kleinen Festwertspeicher (ROM) … Multitasking Der Begriff Multitasking [ˌmʌltiˈtɑːskɪŋ] (engl.) bzw. Mehrprozessbetrieb bezeichnet die Fähigkeit eines Betriebssystems, mehrere Aufgaben (Tasks) … Klasse (Objektorientierung) Die Klasse dient als Bauplan für die Abbildung von realen Objekten in Softwareobjekte und beschreibt Attribute (Eigenschaften) und Methoden (Verhaltensweisen) … Integer (Datentyp) Als grundlegender arithmetischer Datentyp werden Ganzzahlen von der Hardware fast aller Rechenanlagen nativ unterstützt und sind in nahezu jeder …