PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt am Parallelport mit Parapin



Scholli
29-07-2004, 15:05
Halle zusammen!

Habe mir mit Parapin ein nette Anwenung geschrieben, mit der ich den Parallelport unter Linux polle. Klappt auch alles sehr gut. Problem ist leider nur die hohe CPU Auslastung! Nun würde ich lieber per Interrupt melden, daß Daten auf dem Bus anliegen, die zu holen sind. Nur weiß ich leider gar nicht, wie das gehen mag. Hat da irgendwer Ahnung von, wie das ganze klappen kann?!?!?? :confused:

Scholli

f0rtex
30-07-2004, 08:28
Schaue im Buch Linux Device Drivers (http://www.xml.com/ldd/chapter/book/index.html) das Kapitel 9 an.

Des Weiteren würde ich dir noch den The Linux Kernel Module Programming Guide (http://www.tldp.org/LDP/lkmpg/2.6/html/index.html) wärmstens empfehlen.

Greets
f0rtex

Scholli
30-07-2004, 09:19
Dann werde ich mir das mal reinziehen. Von O'Reilly habe ich auch gestern noch auf deutsch gefunden ;-) Liest sich dann schon was leichter.... *fg*

Wäre nur halt interessant gewesen mit Parapin, da dort auch schon einge Funktionen deklariert sind, die womöglich schon mit dem Interrupt arbeiten.

Danke schon mal vorab... gehe jetzt was lesen.... :D

Scholli
03-08-2004, 09:53
Bin echt zu doof....

Um die Interrupts ansprechen zu können muss ich doch in den Kernel Modus. Also muss ich ein Modul einbinden. Das habe ich dann auch mal bei dem Parapin gemacht. Aber wie spricht man jetzt die Funktionen des Treibers an!? Mit open("/dev/kparapin") komme ich alleine ja nicht weiter....

Hat nicht irgendwer Ahnung davon?!?!?

f0rtex
03-08-2004, 13:31
Also ich kenne Parapin nicht. Um IRQ gebrauchen zu können, musst du selber ein Kernel-Modul schreiben. (Details zum Aufbau findest du im Kernel Module Programming Giude inkl. das Schreibein eines IRQ-Handlers (http://www.tldp.org/LDP/lkmpg/2.6/html/x1258.html)).

Wenn du wissen willst welche Funktionen dir im Kernel-Space zur Verfügung stehen, kannst du ein cat /proc/kallsyms machen. (unter Kernel 2.4 ein cat /proc/ksyms)[1]

Greets
f0rtex

Edit:
[1] Siehe dazu http://www.tldp.org/LDP/lkmpg/2.6/html/x466.html
3.1.4. Name Space

Scholli
03-08-2004, 15:32
Das klingt irgendwie immer so leicht... :-( Ich habe mich heute morgen mal wieder dran gesetzt. Allein die Kompilierung der Beispieldatei aus dem Gerätetreiberbuch ließ ich nicht durchführen. Immer Fehlermeldugen. Habe es mit dem 2.4.25 2.4.26 und dem 2.6.6 ausprobiert. Die enstprechenden Sourcen natürlich angepaßt!

Jetzt auf einem zweiten Rechner mit 2.4.20 geht es plötzlich. Oh Mann....

Kann ich denn nicht evtl. auch schon den bestehenden /dev/parport benutzen?!?! request_irq etc. waren ja schon im Kernel vorhanden als Funktion...

Der Interrupt bringt mich nocht um :(

Oder ist es noch anders möglich Prozessorschonend den Parallelport abzufragen!?!?

Danke übrigens für deine Mühen f0rtex

Scholli

Scholli
06-08-2004, 09:44
JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!

Ich habe Feuer gemacht!!!!!!!!!!!!!!!!!!!!!!!!

Es klappt!!!! :-) Interrupt oleee!!!! :D