Die einfachen Sachen sind erschöpft. Jetzt wird es kompliziert.
Etwas zu Linux dessen Gerätebehandlung vorweg.
Wenn ein Gerät von Linux gefunden wird, dann läuft eine Erkennung des Gerätes ab um den Passenden Treiber zu finden. Wurde ein passender Treiber identifiziert wird diesem der "Pfad" zum Gerät übergeben. Damit Initalisiert der Treiber das Gerät. Bis jetzt ist es vom "Userspace" aus nicht möglich auf das Gerät zuzugreifen. Dazu müssen "Devices" angelegt werden. Das geschieht meist durch ein Programm das im Hintergrund läuft. Ein Device wird einem Treiber über eine Major- und eine Minor-Nummer zugeordnet. Die Major-Nummer ist die Eindeutige Bezeichnung des Tribers im Kernel, die Minor-Nummer identifiziert das "Gerät" welches vom Treiber verwaltet wird. Ist das Device angelegt so kann ein normaler Nutzer darauf zugreifen.
Was eine Normale Datei von Devices unterscheidet sind die IO-Kommandos die man an sie senden kann. Auch kann man einen InterruptHandler für ein Device einbinden.
Es werden Zwei Device-Gruppen unterschieden Char-Devices und Block-Devices.
Char-Devies sind wie FiFo. Man kann hineinschreiben und daraus lesen, aber man kann darauf kein "seek" anwenden. Eine Serielle Schnittstelle ist ein Char-Device
Block-Devices verhalten sich wie normale Dateien. Eine Festplatte ist ein Block-Device.
Um zu sehen wo es bei dir hapert musst du schauen auf welcher Ebene der Hardwareerkennung es Probleme gibt.
Auch ich hatte mit Problemen mit USB zu kämpfen. Um etwas mehr Informationen zu bekommen hatte ich ein kleines Script geschrieben, das mir alle möglichen Informationen aus
/sys zu USB zusammen trägt.
Ich habe etwas gebraucht, bis ich es wieder gefunden habe. :-/
more (105.6kb)
Das ist ein Script welches fast alles zusammen trägt, was der Kernel über die USB-Geräte mitteilt.
Bedenke das ich das Script nur für meine persönliche Verwendung geschrieben habe. Es erklärt nichts und man manchen Stellen ist es nicht sehr ordentlich geschrieben. Ich hatte es damals in wenigen Stunden zusammen gestrickt. Also eine kleine Erklärung:
Die Ausgabe ist eine Baumstruktur. Alle an USB Angeschlossene Geräte werden in der Reihenfolge aufgeführt wie sie physikalisch aneinander hängen.
Die Ausgabe der Informationen über jedes Device ist wiederum als Baum dargestellt.
Ein USB-Device kann
Interfaces oder
Inputs haben
Jedes
Interface hat einen
Driver und eventuell
Inputs
Jeder
Driver hat ein
Modul
Ein
Input kann
Events haben.
Ein
Event repräsentiert ein Character Device.
(Block Devices werden etwas anders dargestellt und sind nicht aufgeführt, da ich es nicht brauchte)
Beispiel:
more (1.7kb)
Wenn du dich durch die Ausgabe arbeitest kannst du sehen, in wie weit das Gerät in Linux eingebunden ist, welcher Treiber verwendet wird und wo welche Devices angelegt werden. Möglicherweise hilft das herauszufinden wo es Probleme gibt.