Deshalb ist es von gro゚em Interesse, derartige Parameter in Echtzeit
mit hoher Pr艘ision steuern zu knen. Auch muss die Messwertaufnahme
zu genau definierten Zeitpunkten in zur Temperatursteuerung parallelen
threads erfolgen. Zugriffe auf die Hardware (in diesem Fall einem
CAMAC-Controller) mssen voreinander geschtzt werden.
Der Inhalt des Vortrages besteht aus einer kleinen Einfhrung in die
Kernel-Modulprogrammierung und wie durch deren Laden (insmod, modprobe)
dem Kernel neue Funktionalit舩 zur Laufzeit dynamisch dazugelinkt
wird. Anschlie゚end werden dann die Funktionen unterster Ebene zum
Ansprechen der Hardware im Detail vorgestellt, da fr den erw臧nten
Controller keine Treiber existieren.
Es folgt eine kurze Definition von Echtzeit, bevor die rtlinux
Erweiterung des Kernels und (auf Wunsch) dessen Installation vorgestellt
wird. Am Beispiel unseres Mess-Systems werden dann die
Programmiertechniken und Funktionen von rtlinux vorgestellt:
- Erzeugen, Starten und Stoppen von threads
- Schtzen von paralleler Ausfhrung in kritischen Bereichen durch
mutex-locking
- Erzeugen und Benutzen von FIFOS zur Kommunikation von rtlinux mit
einem Hauptprogramm
- Benutzung eines handlers zur asynchronen Benachrichtigung von
FIFOS
- Suspendieren und Aufwecken von threads
- Zeiten und Uhren im Kernel
- die thread-Ausfhrung halten und zu periodischen (oder einmaligen,
zu genau festgelegten Zeitpunkten) fortsetzen.
Die Kommunikation zwischen Hauptprogramm und rtlinux erfolgt ber
FIFOS. Zu deren Vereinfachung wurde eine C++ Klassenbibliothek, welche
kompatibel zum Analyseprogramm "root" (Teil der CERN-library) ist,
erstellt. Deren Aufbau (ebenfalls thread benutzend) soll kurz skizziert
werden.
Eine in unserem Projekt nicht benutzte Technik ist
der mbuff shared-memory driver. Diese Methode soll zum Abschluss
vorgestellt werden. Auf Wunsch kann noch kurz gezeigt werden, wie das
anfangs besprochene CAMAC Modul in einen "echten" linux-Treiber
verwandelt werden kann.