Programmierung mit dem Echtzeitframework Linux-Xenomai

1 Versuchsziel

In diesem Versuch sollen die grundlegenden Kenntnisse eines Betriebs­systemkerns am Beispiel von Xenomai erworben werden. Das Praktikum umfasst die Realisierung und Validierung von harten Echtzeitanwendungen.

2 Grundlagen

Das Echtzeitframework Xenomai ist aus dem RTAI Projekt hervorgegangen und wurde nach Einführung von ADEOS zur Interruptverwaltung als eigenständiges Projekt ausgelagert. Xenomai ist für diverse Hardwareplattformen wie X86, PowerPC, ARM, uvm. verfügbar. Xenomai verändert den Kernel eines bestehenden Linux nur dahingehend, dass ein reibungsloses Zusammenarbeiten möglich ist. Das eigentliche System bleibt ansonsten weitestgehend unangetastet. Xenomai läuft daher nahezu unsichtbar und parallel im Hintergrund zum eigentlichen Linux. Zusätzlich bietet Xenomai allerdings die Möglichkeit über eine eigene Treiberschnittstelle auf Hardware mit Echtzeiteigenschaften zuzugreifen. Physisch ist Xenomai ein Patch für frei verfügbare Linux Kernel, d.h. Xenomai arbeitet mit jeder Linux-Distribution zusammen, auf der ein Kernel lauffähig ist. Um einen Xenomai zu erstellen, muss vorher ein Linux-Kernel im Quelltext vorliegen. Im Anschluss wird dieser Linux-Kernel unter Einbeziehung des Xenomai-Patches sowie des ADEOS-Patches erweitert, kompiliert und kann dann zum Einsatz kommen. Der Grundlegende Aufbau von Xenomai ist in der nachfolgenden Abbildung dargestellt. Das Ziel von Xenomai ist es, harte Echtzeiteigenschaften auch im User-Space zu ermöglichen. Dies soll durch den Einsatz von Skins gewährleistet werden können. Skins sind in der Lage die APIs anderer Systeme zu emulieren. Der bisherige Linux-Kernel wird als Echtzeitprozess mit niedrigster Priorität weitergeführt. Das Scheduling dieser Prozesse übernimmt wie bisher der interne Linux-Kernelscheduler. Interrupts des Linux-Kernels werden erst bearbeitet, wenn die Echtzeitthreads sowie Echtzeitinterrupts bearbeitet wurden. Der Linux-Kernel kann bei Bedarf komplett abgeschaltet werden. Für das Programmieren von Anwendungen unter Xenomai werden eine Vielzahl von Funktionen zur Verfügung gestellt. Diese decken u.a. folgende Teilgebiete ab:

  • Starten/Beenden/Steuern von Prozessen
  • Interruptbehandlung und Interruptsteuerung
  • Scheduling- und Zeitfunktionen
  • Interprozesskommunikation

3 Studienfragen

  • Beschreiben Sie den Grundsätzlichen Aufbau von Xenomai!
  • Was ist ADEOS und wie arbeitet es mit Xenomai und Linux zusammen?
  • Was ist der Unterschied zwischen User-Space und Kernel-Space?
  • Erläutern Sie den Unterschied zwischen blockierender und nicht-blockierender Synchronisation?
  • Was ist ein Scheduler und wie arbeitet dieser?
  • Was sind Posix Threads?
  • Was bedeuten die Kommandos gcc, make und pico?

4 Hausaufgaben

  • Informieren Sie sich über die Pinbelegung eines Parallel Ports sowie dessen Ansteuerung unter Linux in C!
  • Was sind Posix Threads?
  • Informieren Sie sich über die Posix API!

5 Aufgaben

  • Erstellen Sie ein Linux Programm, welches ein PWM Signal auf einen der Pins des Parallel Ports geben kann! Das Programm soll hierzu einen zwei gesonderte Posix-Thread nutzen, wobei einer zum High schalten und einer zum Low schalten genutzt werden soll.
  • Ermitteln Sie die kleinste mögliche Periode, die Sie so für die PWM erreichen können! Prüfen Sie diese mit einem Oszilloskop.
  • Finden Sie eine Möglichkeit, den PC (CPU, Speicher,...) stark zu belasten! Wie verändert sich das PWM Signal bei welcher Belastung?
  • Ändern Sie Ihr Programm dahingehend, dass es Xenomai-Echtzeitthreads für das Ansteuern des Parallel Ports nutzt!
  • Ermitteln Sie die kleinste mögliche Periode, die Sie unter Xenomai erreichen können! Prüfen Sie diese mit einem Oszilloskop.
  • Wie verändert sich die Xenomai-PWM unter Belastung?
  • Fertigen Sie ein Protokoll in elektronischer Form an und diskutieren Sie darin Ihre Ergebnisse! Stimmen die erwarteten Messwerte mit den tatsächlich gemessenen Ergebnissen überein?

6 Literatur