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
  Vorlesungsfolien
  Übungen
  Tools
  Teamarbeit mit svn
  Schein, Prüfung
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  SS 2007  >  OSE  >  Übung

Betriebssystemtechnik (OSE) - SS 2007

AO-Stubs Betriebsystem

Import in Eclipse

Die Dateien des AO-Stubs Betriebssystems liegen im SVN Repository https://www4.informatik.uni-erlangen.de:8088/i4ose/ose-2007. Diese URL kann der Repository-Liste von Eclipse hinzugfügt werden, wie es im Folgenden beschrieben ist (ihr könnt svn natürlich auch weiterhin über die Kommandozeile verwenden):

  1. Konfiguriert das SVN Plugin so, wie es auf der Tools-Seite beschrieben wird.
  2. Öffnet die SVN Perspektive
  3. Wählt im Repository-Browser (linker Rand) [rechte Maus]->"New"->"Repository Location..."
  4. Textfeld "URL" : https://www4.informatik.uni-erlangen.de:8088/i4ose/ose-2007
  5. Textfeld "User" : Benutzernamen
  6. Dialog schließen
  7. Im Repository-Browser wählt ihr nun das Verzeichnis trunk/aose des ose-2007 Repository aus und betätigt [rechteMaus]->"Check out as Project"
  8. Eclipse beenden.
  9. Das Shell-Skript after-first-checkout.sh aufrufen.

Einrichtung des Projekts

Ist das Projekt erfolgreich importiert, müssen noch einige Einstellungen vorgenommen werden, die leider nicht zusammen mit den Projektinformationen gesichert werden:

  1. Öffne Dialogfenster "Project"->"Properties" des AO-Stubs Projekts
  2. Wechsle zur Ansicht "C/C++ Make Projekt"
  3. Die Registerzunge "AspectC++ Make" auswählen
  4. Textfeld "Repository file" : <absolute path to workspace>/aose/config/os/ac.repo
    Hinweis: Die Datei ac.repo wird beim ersten Übersetzen generiert. Vorher funktioniert die Auswahl mittels "Browse" logischerweise nicht. Manuell kann aber auch ein Pfad zu einer nicht-existierenden Datei angegeben werden.
  5. Textfeld "new prefix to be set" : config/os
Tipp: Um eine Übersicht der Make Targets zu bekommen, öffnet in eurer Perspektive die "Make Targets" Ansicht. Darin findet ihr --nach der Konfigurierung-- unter config/os eine Übersicht. make help gibt außerdem eine kleine Hilfe aus.

Hinweis: Damit ihr das Projekt verwenden könnt, muss die pure::variants Lizenz installiert sein, wie auf der Tools-Seite beschrieben. Die Installation der Lizenz muss einmalig für jeden Benutzer durchgeführt werden.

Struktur

Unterhalb des Wurzelverzeichnisses existieren folgende Unterverzeichnisse:

config Familien-Modell. Außerden landen hier die konfigurierten Quelldateien
model Feature- und Komponenten-Modelle aller Subdomänen
os Quelldateien des Betriebssystems
base Startup Code, Linker section file
com Kommunikation (D5)
debug Debugging und Monitoring mit AspectC++ (D7)
devices Gerätetreiber (D2)
guard Unterbrechungsbehanlung und Kernsychronisation (D4)
make Makefiles und Scripts der Build-Umgebung
mem Speicherverwaltung (D1)
object Utility-Klassen, wie einfache Container und Streams (D6)
thread Fadenverwaltung und Synchronisation (D3)
pv_examples Ein Dummy-Subsystem, mit dem verschiedene Fähigkeiten von pure::variants demonstriert werden: Generierung von Flags mit Werten, etc. Einfach mal anschauen und ggfs. benötigte Elemente mit Copy&Paste in das eigene Featuremodell / Familienmodell kopieren.

Die Verzeichnissen mit einer Domänenangabe "gehören" ab jetzt den jeweiligen Gruppen, d.h. diese sind dafür verantwortlich. Alle anderen Verzeichnise (insbesondere base) "gehören" jedoch allen, hier müsst ihr euch bei Änderungen einigen.

Konfigurierung

Um AO-Stubs zu konfigurieren, müsst ihr das Familien Modell config/config.vdm öffnen, die gewünschten Merkmale selektieren und abschließend diese Konfiguration mittels des "Transform Model" Knopfes auswerten. Dieser Vorgang generiert unter config das Verzeichnis os, in dem nun die konfigurierten Quelldateien zu finden sind. Eventuell ist dieses Verzeichnis erst nach einem "Refresh" der Navigatoransicht zu sehen.

Übersetzen

Ist das Betriebssystem konfiguriert, kann es anschließend im Verzeichnis config/os übersetzt werden. Dies kann entweder aus Eclipse heraus geschehen oder durch einen make Aufruf in diesem Verzeichnis. Alle wichtigen Make Targets und relevanten Umgebungsvariablen erhält man durch das make help Kommando.

Simulieren und Debuggen von Testprogrammen

Um ein Testprogramm zu übersetzen, muss man innerhalb des Verzeichnisses config/os einen make Aufruf starten der als Target den Pfad zum Testprogramm übergeben bekommt. Zum Beispiel: make test/com/t_serial_stream

Um den Simulator mit einem Testprogramm zu starten, wird bei einem make Aufruf an den Namen des Testprogramms die Dateiendung .sim angehängt. Zum Beispiel: make test/com/t_serial_stream.sim
Die Ausgabe der "seriellen Schnittstelle" des RXCSimulators, kann man mit dem Programm simSendRecv.sh aus dem /proj/i4ose/tools/bin Verzeichniss verfolgen. Damit können auch Zeichen an die "serielle Schnittstelle" übertragen werden.
Möchte man ein Testprogramm debuggen ruft man make <testprogramm>.gdb auf, wenn man den GNU Debugger verwenden will oder make <testprogramm>.ddd um den Data Display Debugger zu starten.

Überspielen (Download) von Testprogrammen auf den RCX

Das Überspielen eines Testprogramms auf den RCX Baustein erfolgt durch den Aufruf make <testprogramm>.rcx . Damit der Transfer ordungsgemäß funktioniert, muss sich der RCX Baustein im Ausgangszustand befinden und eingeschaltet sein. Der Ausgangszustand kann durch ein Softwarereset oder durch die Entnahme einer Batterie wieder hergestellt werden.
Nach dem Start des des Testprogramms, kann man mit dem terminal Programm (in /proj/i4ose/tools/bin) Zeichen vom RCX Baustein empfangen oder dorthin senden.

Reduzierung der Turn-Around-Zeiten mit make editmode

Achtet bei der Entwicklung darauf, ob ihr auf dem Original oder auf dem konfigurierten Quellbaum (unter config/os) arbeitet. Änderungen im konfigurierten Quellbaum sind normalerweise nach der nächsten Konfigurierung verloren. Das kann unter Umständen erwünscht sein ("quick hacks") ist es im allgemeinen aber nicht.

Da es insbesondere bei der aktiven Entwicklung nervig werden kann, wenn man nach jeder kleinen Änderung erst einmal wieder konfigurieren muss, gibt es das spezielle make target editmode. Dadurch werden alle Dateien unter config/os, die während der Transformation aus dem Quellbaum kopiert oder umbenannt wurden, ersetzt durch Links auf ihre Originale. Änderungen in der konfigurierten Variante wirken sich also direkt auf das Original aus. (Das funktioniert natürlich nur mit Dateien, für die es ein Original gibt. Also nicht bei "echt generierten" Dateien, wie z.B. die Header-Files für "class aliases" oder Flags.)

  Impressum   Datenschutz Stand: 2007-06-12 13:58   DL