Rodos (operating system)

Rodos (Real Time Onboard Dependable Operating System) is a real- time operating system for embedded systems and is designed for applications that have high demands on reliability.

History

Rodos was developed at the German Aerospace Center (DLR ) and emerged from the BOSS operating system. It found, inter alia in the current micro - satellite program using the DLR. The system runs on the satellite TET -1 in orbit and will also be used on the under development satellite Biros.

Is further developed Rodos currently both the DLR and the Chair " Information Technology for Aerospace " the Julius- Maximilians- University of Würzburg.

Features

Rodos is implemented as a framework with a multilayer structure. The lowest layer is the direct control of the hardware on which touches the second layer, the middleware. Task of the middleware is to enable communication between different applications and components of the highest layer. Rodos was written in object-oriented C , supplemented by hardware-specific C and assembly code.

Rodos makes it possible to write in a simple way real-time applications for various platforms variable. A special attention was paid to the development of the simplest possible implementation of the components of the operating system. Unnecessary complexity should be avoided and made an uncomplicated, clear system available to the user. Rodos support for real-time operating systems, typical features, such as threads and semaphores.

Special features include:

  • Object-oriented C interface
  • Fast boot
  • Priorities -based, preemptive multitasking
  • Time management ( as the central point)
  • Thread-safe communication and synchronization
  • Event distribution

Examples

Hello World

The standard example program Hello world sees in Rodos as follows:

# include " rodos.h "   class HelloWorld: public Thread {    void run () {      PRINTF ("Hello World \ n " );    } Hello world }; As you can see, the implementation is very straightforward. The Thread class is extended by a special run method, in turn, the string "Hello World!" outputs using the PRINTF function. All the components, the user needs to develop Rodos software programs are integrated rodos.h by the header file.

Threads

Rodos uses fair priority preemptive scheduling controlled. The thread with the highest priority is executed, possibly already running threads are paused ( preemptive multitasking ). If several threads have the same priority and are to be executed, this received alternately a fixed computation time interval.

Example:

High Priority class Thread: public Thread { public:    High Priority Thread ( ): Thread ( " HiPriority ", 25) {    }    void run () {      while (1 ) {        xprintf ("*" );        suspendCallerUntil (NOW () 1 * SECONDS );      }    } Highprio };   LowPriorityThread class: public Thread { public:    LowPriorityThread (): Thread ( " LowPriority ", 10) {    }      void run () {      while (1 ) {           xprintf ("." )      }    } Lowprio }; Here the thread LowPriorityThread are constant the "character. " and "*" is interrupted in seconds intervals by the thread high priority thread and the output of.

Topics

For communication between different threads, but also via gateways between different systems used Rodos topics. A topic represents a message of a certain type, for whose type is one thread can register as a receiver (subscriber). A thread can act as such a message sender (publisher ). The messaging system is thus realized by the publisher-subscriber design. Here's a simple example with a publisher and a subscriber who both use the Topic counter1, which only contains a long integer.

Example:

Topic counter1 (-1, " counter1 ");   MyPublisher class: public Thread { public: MyPublisher (): Thread ( "Sender Simple" ) {}   void run () { long cnt = 0; TIME_LOOP (3 * SECONDS, 3 * SECONDS ) { PRINTF ( " Publish: % ld \ n ", cnt); counter1.publish (cnt ); } } Publisher };   MySubscriber class: public SubscriberReceiver { public:      MySubscriber (): SubscriberReceiver ( counter1 ) {}      void put ( long & data) {          PRINTF ( "Received: % ld \ n", data);      } subscriber }; The Publisher thread sends here in 3 -second intervals an increasing count, while the Subscriber outputs the thus received Integer easy.

Supported Architectures

Supported architectures:

  • Microcontroller with ARM7 architecture
  • Atmel AVR32
  • STM32 32- bit ARM Cortex- M3
  • Xilinx PowerPC PPC405
  • Raspberry Pi

Furthermore, Rhodes Place as a guest on other operating systems:

Weblink

  • DLR - The RODOS framework
  • Real-time operating system
689810
de