II-PRT-HOME

  1. Einführung

  2. Angezielte SW-Architektur

  3. ELinOS über die Schulter geschaut

    1. Schritte für ein Diskettensystem

    2. Beispiel zu syslinux

  4. Aufgabe 6


II-PRT REALZEITSYSTEME SS04
EX6: Zur Arbeitsweise von ELinOS; Aufgabe Nr.6

    Achtung : Skript ist nicht notwendigerweise identisch mit den  mündlichen Erläuterungen !!!
                        

AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: September-16, 2003
DATE OF LAST CHANGE: June-16, 2004
EMAIL: doeben_at_fb2.fh-frankfurt.de



1. Einführung

In den letzten Vorlesungen geht es um eingebettete Realzeitsysteme ('embedded real time systems'). Für die Implementierung bedeutet dies, dass man Software --in der Regel-- auf einer Entwicklungsplattform erstellt und dass man dann das fertig kompilierte bootfähige Image auf den Zielrechner bringt. Dieser Vorgang ist relativ komplex und erfordert sehr viel Knowhow. Um einen ersten Einstieg in diese komplexe Materie zu bekommen, benutzen wir das Entwicklungswerkzeug ELinOS der Firma Sysgo AG. Dies ermöglicht es, dass sogar 'Anfänger' solche Systeme erzeugen können (siehe als ein weiteres Beispiel auch Übung Nr.1 von I-RT.


START



2. Angezielte SW-Architektur

Als muss man sich klar machen, wie denn die angezielte SW-Architektur aussieht, die schliesslich bekannt und benutzt werden soll. Was das nachfolgende Bild zeigt, kann man grob vier Schichten unterscheiden:



sw-architcture

Software Architektur für Realzeitsysteme für WS03



An der Basis liegt die Hardware, die eingebettet ist in eine Mikroarchitektur (Mikrokode, Maschinensprache...).

Darüber liegt ein Softwarelayer, der für Realzeitbehandlung ausgelegt ist, in unserem Fall das RTAI := Real Time Application Interface. Parallel zu der Realzeitschicht kann man auch mit einem normaen Betriebssystem arbeiten um damit die bekannten Ressourcen nutzen zu können. Im Fall der Vorlesung benutzen wir als Btriebssystem Linux, da dieses direkt mit dem RTAI zusammenarbeitet. Um die Zusammenarbeit zwischen RTAI und Linux möglichst komfortabel zu gestalten wurde in den letzten Jahren zusätzlich ein spezieller Scheduler entwickelt, der in der aktuellen Version NEWLXRT heisst. NEWLXRT ist hervorgegangen aus LXRT. Es heisst z.B.: "NEWLXRT schedules just LINUX tasks and kernel threads natively. Under NEWLXRT kernel space threads works in hard mode always, user space Linux tasks can be soft/hard as in LXRT. You can think of it as something that makes Linux a hard real time kernel natively, albeit under the constraint of using RTAI APIs. Anything that runs under RTAI can run under NEWLXRT (kernel/user space)."(Paolo Mantegazza in einer email vom 24.Sept.2002)

Schliesslich kommt die Schicht des Betriebssystems (hier: Linux).

Oberhalb des Betriebssystems liegt dann der User Space, der irgendwelche Anwenderprogramme beinhalten kann. Wichtig ist, dass man vom User Space aus das Verhalten von Linux und RTAI über den NEWLXRT steuern kann! Per Software schaltet man Realzeitverhalten ein oder aus.

Für die ersten Übungen benutzen wir aber noch nicht die Realzeitschichten, sondern nur Linux. (siehe Bild unten).



sw-architcture

Software Architektur noch ohne Realzeitschicht für WS03




START



3. ELinOS über die Schulter geschaut

An dieser stelle sollten erste Blicke 'hinter die Oberfläche' einer Betriebssystemerzeugung geworfen werden.


START



3.i Schritte für ein Diskettensystem

In einem erten Überblick gilt, dass der/die EntwicklerIn mit Hilfe von ELinOS sich ein schon vorhandes Projekt aus dem ordner '/opt/elinos/demos' als Ausgangspunkt wählen kann, indem er dies Projekt 'klont' (elinos-cloneproject). Anschliessend muss er dann angeben, welche Eigenschaften seine neues Zielsystem hat. Dabei muss u.a. angegeben werden, welche Bootstrategie gewählt wird. Bis auf weiteres nehmen wir ein Booten von einer Diskette an. Dies bedeutet, dass als Programm zum Booten des Systems der Bootlader syslinux ist. Nachdem alle Eigenschaften angegeben wurden, werden aus den Linux-Sourcen alle jene Teile zusammengestellt, die für das neue Zielsystem benötigt werden. Die notwendigen Kernelparameter werden eingestellt. Ist diese Konfiguration abgeschlossen, dann können mittels des Befehls make boot alle Dateien erzeugt werden, die für ein neues System benötigt werden. Die hier einschlägigen Dateien sind:

  1. banner: Text bzw. Grafik, die beim Laden angezeigt wird


  2. ___.tgz: Das root-Dateisystem als tar-Archiv verpackt und gezippt


  3. boot/vmlinuz: Der neue Kernel


  4. syslinux.cfg: Parameter, die dem Bootlader 'syslinux' beim Starten übergeben werden.


Diese Dateien müssen dann --z.B. mit den mtools von Linux-- auf Diskette kopiert werden und die so bespielte Diskette muss dann mit dem Befehl syslinux bootfähig gemacht werden. Mit dieser diskette sollte dann ein PC --in unserem Fall ein PC mit Intelarchitektur-- gebootet werden können.



sw-architcture

Schritte bei der Erstellung eines floppybasierten Systems



Wird der PC eingeschaltet, dann wird zuerst das Ladeprogramm syslinux gelesen und ausgeführt. Dieses liest die Datei syslinux.cfg für eventuelle zusätzliche Informationen (z.B. die Information, dass eine RAM-Disk angelegt werden soll, die als Harddisk für das Root-Dateisystem dienen soll). Danach wird die Datei banner geladen und angezeigt, dann das Root-Dateisystem '____.tgz',dann wird der Kernel 'linux' geladen; alle Dateien werden entpackt und der Kernel wird gestartet. Dieser führt dann im Falle der Floppy-Bootstrategie verbunden mit einer RAM-Disk als erstes das Programm 'linuxrc' aus. 'linuxrc' kann dazu benutzt werden, weitere vorbereitende Massnahmen zu treffen. Eine sinnvolle Massnahme ist, alle in /etc/fstab' genannten Geräte, die gemounted werden sollen, zu mounten. Dazu bietet ELinOS den Befehl 'mounta', der dies sehr kompakt tut. Im Bespiel 'MyFirst' wird daher 'linuxrc' mittels eines symbolischen Links ( linuxrc -> /bin/mounta) auf das Programm 'mounta' im Verzeichnis /bin' gelinkt, das dann entsprechend ausgeführt wird. und dann das Programm 'init', das sich in einem der Ordner '/sbin', '/bin' oder '/etc' befinden kann. Liegen diese nicht vor, dann wird nach dem Programm 'sh' in '/bin' gesucht. Schlagen alle diese Versuche fehl, dann tritt 'kernal panic' ein.


START



3.ii Beispiel zu syslinux

syslinux liest beim Booten die Datei syslinux.cfg. Hier ist der Inhalt der Datei im Beispielprojekt 'Hello':

gerd@kant:~/ELINOS-TEST/MyFirst> cat syslinux.cfg
append root=ramfs initrd=hello.tgz
display banner
timeout 0  

Wie aus der Dokumentation zu syslinux entnommen werden kann, bedeutet das Keywort append, dass zusätzlich zu möglichen Kernelparametern noch die folgenden Kommandozeilenparameter für den Kernel berücksichtigt werden sollen:

  1. root=ramfs Hier wird festgelegt, dass das root-Dateisystem das 'Simple RAM Filestem' sein soll.


  2. initrd=MyFirst.tgz Es soll eine RAM-Disk eingerichtet werden, die den Inhalt der Datei MyFirst.tgz aufnehmen soll. Die Datei MyFirst.tgz muss ein vollständiges das Root-Dateisystem enthalten.


  3. timeout 0 der TIMEOUT wird gezählt in Einheiten von 1/10 s. Ein timeout von 0 setzt den Mechanismus ausser Kraft; dies ist auch die Default Einstellung.


  4. display banner DISPLAY besagt, dass der nachfolgende Name eine Datei bedeutet, die dann auf dem Bildschirm angezeigt werden soll.


  5. panic=N Wird ein reboot nach N Sekunden starten, falls vorher 'panic' auftrat



START



4. Aufgabe 6

In der Übung Nr.1 haben Sie ein C/C++-Programm erstellt, das auf einfache Weise einen Reaktionstest realisieren sollte. Nehmen Sie dieses Programm und konvertieren Sie das Programm zu einem Programm, das von einer bootfähigen Diskette auf einem Intelrechner gestartet werden kann.

Benutzen Sie für die Erstellung das Entwicklungssystem ELinOS von Sysgo.

Die Übungsaufgabe Nr.6 gilt als erfolgreich abgegeben, wenn:

Eine bootfähige Diskette im Testrechner (vorne links im BCN 105) gestartet werden kann und das Programm das Verhalten zeigt, das ihrer Beschreibung aus Übung Nr.1 entspricht.

Hinweis: Sie können das Programm elinos dadurch Aufrufen, dass Sie in den Ordner /opt/elinos wechseln und dort erstellen. Für das Klonen eines alten Projektes und das Kompilieren ihres neuen Projektes benötigen Sie sehr viel Speicherplatz (je nachdem mehr als 40 MB).


START