I-RT-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 2


I-RT REALZEITSYSTEME WS0304
EX2: Zur Arbeitsweise von ELinOS; Aufgabe Nr.2

    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: Oct-29, 2003
EMAIL: Gerd Döben-Henisch



1. Einführung

In der ersten Übung wurde das praktische Vorgehen gezeigt, wie man unter Benutzung einiger Befehle von ELinOS durch einfache Eingaben auf Shellebene ein neues Zielsystem erstellt werden kann. Unklar bliebt dabei, was diese 'Oberfläche' an 'zugrundeliegenden Prozessen' impliziert. Die heutige Übung stellt einen ersten Schritt dar, dieses Informationsdefizit ein wenig zu behebn.


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 2

Eine allgemeine Beschreibung von Aufgabe 2 findet sich unter dem entsprechenden Link.

Der allgemeine Programmieranteil dieser Aufgabe enthält nichts, was nicht in Programmieren 1-3 und in der Vorlesung Softwareengineering schon vermittelt worden ist. Im einzelnen wird gefordert:

  1. Als Sprache L stehen zur Auswahl C oder C++, wobei im vorliegenden Fall C++ möglicherweise vorteilhafter ist, da C++ viele Sprachelemente enthält, für die man unter C erst mühsam Kode schreiben müsste.

  2. Als Zielplattform gilt Intelplattform.

  3. Offizieller Testrechner ist der dafür vorgesehene PC in BCN 103.

  4. In der Aufgabenstellung wird allerdings vorausgesetzt, dass das Programm im Kontext der Benutzeraktionen Reaktionszeiten messen kann. Zum Zeitpunkt der Aufgabenstellung war noch nicht erklärt worden, wie dies programmtechnisch geht. Es gehört zur Aufgabenstellung, auf eigene Faust herauszufinden (Manuals, Bücher, Web,...), wie man die Zeitmessung unter C/C++ realisieren kann.

  5. Von den aufgeführten Varianten kann man sich eine beliebige aussuchen.

  6. Da die B-Gruppen gegenüber den A-Gruppen 1 Woche mehr Zeit haben, müssen die B-Gruppen eine Zusatzaufgabe lösen. in der Dokumentation zu syslinux wird beschrieben, wie man in derjenigen Datei, die durch DISPLAY gekennzeichnet wird, durch bestimmte Kontrollwerte das Verhalten der Anzeige begrenzt steuern kann. Nutzen Sie diese Informationen aus, um eine eigene Anzeige zu generieren, die als Hintergrundfarbe light grey besitzt und als Vordergrundfarbe dark red. Das Banner soll ihren Namen anzeigen, evtl. noch einen Titel, sonst nichts.

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

  1. Eine bootfähige Diskette im Testrechner gestartet werden kann und das Programm das Verhalten zeigt, das im Use Case und in der Ereignis-Reaktionsliste beschrieben wird.


  2. Der Quelltext des Programms ausgedruckt vorliegt.


  3. Die AutorenInnen ihr Programm vor der gesamten Gruppe erläutern können.


  4. Insbesondere muss auch erklärt werden, wie das Problem mit der Zeitrechnung gelöst wurde bzw., falls man die Zeitmessung nicht realisieren konnte, dann muss man überzeugend darlegen können, warum die gewünschte Zeitmessung nicht möglich ist.



START