Hardwarezugriffe


[ Seminar Linux und Apache ] [ Inhalt ] [ Sonstige Systembestandteile ] [ Echtzeit ]

Übersicht: Hardwarezugriffe


User-Mode

Anstelle eines richtigen Treibers kann ein User-Mode Programm für Hardwarezugriffe benutzt werden.
Ein einfacher User-Mode Treiber sieht wie folgt aus[1] :


int main() {
int datareg=0x378; /* Datenregister des 1. Parallelports */
int value=atoi(argv[1]);

ioperm(datareg, 3, 1); /* Zugriffsrecht für 0x378-0x37a anfordern */
outb(value, datareg); /* Daten ausgeben */
outb(0, datareg+2);
printf(``%i\n'', inb(datareg+1)); /* Statusregister ausgeben */
ioperm(datareg, 3, 0); /* Zugriffsrecht für Port aufgeben */
return 0;
}

Damit das Programm funktioniert, muss es root Privilegien haben. Außerdem darf der Port von keiner anderen Anwendung belegt sein (z.B. printer deamon). Über exec() können Portprivilegien an nichtprivilegierte Prozesse vererbt werden. Zur Erhöhung der Stabilität bietet es sich außerdem an, die Hardwarezugriffe in einem gesonderten Programm zu realisieren, dass dann als Server für das eigentliche Programm dient.


Kernel-Mode

Treiber im Kernel-Mode sind eine sauberere Lösung, z.T. jedoch aufwändiger. Kernel Treiber können angesprochen werden über Weitere Details zur Entwicklung wurden bereits in einem Seminarvortrag behandelt.


Comedi

Comedi[21] (COntrol and MEasurement Devices Interface) ist eine einheitliche Schnittstelle für Ein- und Ausgabekarten.
Es gibt feste Definitionen von Subdevices, die auf Interfacekarten auftreten können: Auf diese Subdevices kann über standardisierte Schnittstellen zugegriffen werden. Comedi sollte verwendet werden, wenn das Gerät unterstützt wird.


[ Seminar Linux und Apache ] [ Inhalt ] [ Sonstige Systembestandteile ] [ Nach oben ] [ Echtzeit ]