Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssystemtechnik
 
  Vorlesungsüberblick
  Voraussetzungen
  Skript
  Übungen
  Fragensammlung
  Schein, Prüfung
Department Informatik  >  Informatik 4  >  Lehre  >  SS 2003  >  OSE  >  Übung

Betriebssystemtechnik (OSE) - SS 2003

Aufgabe 4: Subsystemimplementierung

In dieser Aufgabe soll die Implementierung der Programmfamilie durchgeführt werden.

Ausgabetermin Vorgabe (spätester) Abgabetermin
10.06.2003 -- 30.06.2003

Bearbeitung und Abgabe

Die Bearbeitung erfolgt wieder in der Gruppe. Bis zum o.g. Datum ist die Implementierung eures jeweiligen Subsystems und einer Reihe von Testprogrammen abzuschließen. Funktionstüchtige Zwischenstände sind umgehend einzuchecken.

Im Rahmen der Tafelübungen werde ich jede Gruppe nach dem aktuellen Stand der Entwicklung befragen. Auch kurze Demonstrationen sind denkbar.

Entwicklungsumgebung

Anders als bisher wird euer Code nun für die Zielplattform übersetzt. Dies geschieht in mehreren Schritten:

  • AspectC++ transformiert den Code und fügt dabei Debugging- und Monitoringoperationen ein.
  • SOSP zerlegt den Code, um "Function-Level Linking" zu realisieren.
  • Ein Cross-Compiler (g++ für Hitachi H8) erzeugt den Code für die RCX Plattform.
Vor der Übersetzung muss das OSE System jedoch konfiguriert werden. Dazu reicht wie bisher ein make im ose-X Verzeichnis. Daraufhin startet consulat, wo ihr nach dem Auswählen der gewünschten Features 'Edit/Generate' ausführen müsst. Nach dem Konfigurieren kann consulat verlassen werden. Das Erstellen des Systems als Bibliothek erfolgt dann durch make lib. Sofern alles gut geht, landet die fertige Bibliothek in ose-X/compile/libose.a.

Wichtig ist, dass eure Dateien die Endung .h (Header-Dateien), .cc (C++ Funktionsimplementierungen), .ah (Aspekt-Header-Dateien), .s oder .S (Assemblerdateien) haben.

Testprogramme

Für jede Arbeitsgruppe wurde ein Verzeichnis ose-X/tst/Subsystemname eingerichtet (am besten einfach den kompletten Baum nochmal auschecken). Dort sollen die Testprogramme für das jeweilige Subsystem abgelegt werden. Außderdem soll für jedes Testprogramm eine Feature-Liste (Testprog.feat) eingecheckt werden.

Unter ose-X/tst/init/empty.cc und empty-X.feat liegt ein leeres Testprogramm, dass sich übersetzen, binden und ausführen lässt. Dazu sind folgende Schritte durchzuführen:

  1. cd ose-X
  2. cp tst/init/empty-X.feat ose.feat
  3. make + Edit/Generate + File/Exit
  4. make lib
  5. make tst/init/empty.sim
Die letzte Anweisung übersetzt das Testprogramm, bindet es mit der OSE-Bibliothek und startet den RCX-Simulator. Der Simulator kennt die Option "--help". Die Pfade sind dem Makefile zu entnehmen. Weitere Flags für den Simulatoraufruf können dem Makefile in der Umgebungsvariablen RCXFLAGS übergeben werden. Auch das Debuggen mit dem Cross-gdb unter /proj/i4vs/pub/cross-gdb-5.2.1 ist möglich. (Option -gdb)

Mit make tst/init/empty.coff kann man sich das gebundene Testprogramm erstellen lassen, ohne den Simulator zu starten. Mit Hilfe der Werkzeuge unter /proj/i4vs/pub/cross-gcc-3.2.2 kann der Code dann zum Beispiel disassembliert werden.

Init u. Platform Features

Die Platform-Unterstützung beschränkt sich noch auf das Minimum. Daher müssen die Features ...

  1. platform_RCS
  2. platform_Hitachi_H8
  3. platform_GNU_C++
... immer gewählt werden.

In der Domäne 'init' muss 'init_RunMain' gewählt werden, da das Laden von Anwendungen noch lange nicht unterstützt wird. Achtung: die Konstruktoren und Destruktoren globaler Objekte werden noch nicht ausgeführt. Dieses Feature wird aber demnächst realisiert (siehe sys/init/README).

Wann geht es auf die 'echte' Hardware?

Sorry, es hat sich alles etwas verzögert. Ich werde die notwendigen Treiber und Tools, die nötig sind, um die Programme auf die Lego-Roboter zu laden, im Laufe dieser Woche installieren. In der Übung am 17.6. bekommt ihr dann alle notwendigen Hinweise.

Ein letzter Hinweis

Wie wir gesehen haben, gibt es starke Abhängigkeiten zwischen den Gruppen. Seid daher rücksichtsvoll und checkt nichts ein, was nicht funktioniert. Das gilt insbesondere dann, wenn es sich um Dinge handelt, die an sehr wichtige oder obligatorische Features geknüpft sind. Sollte einer anderen Gruppe ein Fehler unterlaufen sein oder liefert sie nicht, was von ihr erwartet wird, setzt euch möglichst schnell mit den Gruppenmitgliedern in Verbindung.

  Impressum   Datenschutz Stand: 2003-09-09 09:58   OS