Port Zugriff
-
Hi,
wie kann ich Zugriff auf die Ports bzw. Interrupts der seriellen Schnittstelle in einem eigenen Treiber bekommen?
Laut /proc/ioports gehören die zugehörigen Ports dem Treiber serial(auto). So viel ich weiß, muss ich die Ports ja erst für meinen Treiber registrieren, um darauf Zugriff zu bekommen, was aber wohl nicht gehen wird, solange diese einem anderen Treiber gehören.
Kann ich den zugehörigen Treiber irgendwie ausschalten, und durch ein von mir erstelltes Treiber-Modul ersetzen?Danke.
PS: Bin noch Anfänger bei Linux-Treibern
-
moin
selber hab ich nicht die beste Erfahrung mit Linux, kann dir aber vielleicht weiterhelfen.. Ich habe mich gerade mit der seriellen Schnittstelle beschäftigt und kenne nebenbei an sich reservierte Ports nur von Sockets.. Wenn die Schnittstelle jetzt möglicherweise reserviert ist sollte man den prozess herausfinden und diesen killen
ttystream::setSpeed( baud ); ttystream::setCharBits(8); ttystream::open( device ); // "/dev/ttysX" ttystream::operator<<("hallo Welt"); ttystream::put((int)0);
mfg
-
Danke, aber ich glaub du hast mich falsch verstanden.
Ich möchten einen eigenen Treiber schreiben, und damit Zugriff auf die IO-Ports (z.B 0x3f8) haben. Und diese sind AFAIK reserviert (d.h. der Zugriff ist für einen zweiten Treiber gesperrt), wenn diese Ports schon von einem Treiber verwendet werden.
-
Na dann wird dieser Treiber schon sein Sinn haben und wenn nicht sollte man ihn beim booten einfach nicht starten.. Wenn jetzt dein Problem ist den Prozess herauszufinden kill ein nach den anderen *g
mfg
-
Wie kann ich einen Treiber beim Booten nicht starten? Der Treiber ist nämlich nicht als Modul eingebunden, sondern fest in den Kernel gelinkt
-
da sollte sich mal ein anderer einschalten .. den Kernel kann man konfigurieren.. aber dafür sind mein Erfahrungen unter Linux zu wenig..
es gibt immer ein weg..
mfg
-
Mal prinzipiell ....
Greifst du ned etwas zu tief an, wenn Du direkt auf die Ports von der seriellen Schnittstelle willst ?
Nen eignen Treiber schreiben ? WIllst Du nen Besseren treiber fuer ne Schnittstellen-karte machen ? dann solltest den alten deaktivieren (Unterstuetzung fuer Serielle Schnittstellen, im kernel build config, und die unterstuetzung fuer den IO chip auf deinem Board, meist nen 16550 ), deinen neuen Treiber einbinden .... und die Sourcen an das Linux-Kernel-Team schickenWillst du was ganz spezielles machen, mit der Schnittstelle, wieso willst dann auf Interruptebene runter ? Normal solltest den Standard Treiber fuer die Schnittstellen nutzen. Nicht umsonst kapselt Linux den zugriff auf die Schnittstellen ...
Ciao
-
Original erstellt von <hardcoreProgramierer>:
da sollte sich mal ein anderer einschalten .. den Kernel kann man konfigurieren.. aber dafür sind mein Erfahrungen unter Linux zu wenig..cd /usr/src/linux && make xconfig
-
Ich will einen kleinen Beispieltreiber schreiben, der auf keinen Fall besser wird als der Originaltreiber;);
Aber mittlerweile denke ich, dass der Parallelport für mein Vorhaben besser geeignet ist, da ich da wahrscheinlich direkt von außen Interrupts auslösen kann, um dann mit meinem eigenen Treiber darauf zu reagieren.
-
Ahh, ok ... wenns denn nen Treiber sein muss
Dann musst den alten Treiber rauswerfen, und der ist halt meist direkt im kernel "verbaut", also treiber entfernen und neukompilieren, gilt genau so fuer den parralell-port ...
Ciao ....
-
Mir ist schon klar, dass das auch ohne eigenen Treiber geht, allerdings muss ich mich damit beschäftigen, und will halt mal ein Beispiel probieren.
Aber trotzdem danke.
-
versuchs mal mit "man ioperm"
damit bekommst du zugriff auf die ports
-
ioperm kenn ich schon, das nützt aber wahrscheinlich auch nix, wenn ich einen Treiber schreibe.
Naja, werd ich wohl um einen neu kompilierten Kernel nicht herumkommen