Mailinglist Archive: opensuse-programming-de (158 mails)

< Previous Next >
Re: USB ansteuern!
  • From: Dirk Dörr <ml@xxxxxxxxxxxxx>
  • Date: Fri, 23 May 2003 17:04:17 +0200
  • Message-id: <1802781769.20030523170417@xxxxxxxxxxxxx>
Hallo!

Sorry für die Verwirrung!

Ich habe leider nie mit diesem Baustein gearbeitet. Daher kann ich nur
allgemein antworten.

Also jetzt etwas ausführlicher:

Generell kann man Linux Anwendungen in 2 Kategorien einteilen:

- Kernel-Programme

- User-Programme

Ein "Hallo Welt" wäre ein typisches User-Programm. Im Gegensatz dazu
gibt es die Kernel-Programme. Diese bilden das eigentliche
Linux-Betriebssystem.

User-Programme können normalerweise nicht direkt auf Hardware
zugreifen. Dies ist nämlich die Aufgabe der Treiber. Für jede Hardware
gibt es spezielle Programme (die Treiber), die mit höheren Rechten
laufen als die User-Programme. Um zum Beispiel auf die serielle
Schnittstelle zugreifen zu können greifst Du nicht direkt auf den
RS232 Baustein (bzw. auf die Adresse) zu sondern über "/dev/ttyS0"
(das Äquivalent zu COM1 unter Windows).

Um also auf USB-Hardware zugreifen zu können, müßtest Du eigentlich
einen Treiber schreiben. Dies ist allerdings alles andere als trivial,
da der kleinste Fehler leicht zum Absturz des ganzen Systems führen
kann. Aber für USB gibt es einen einheitlichen Treiber (libusb) der
den Zugriff abstrahiert und über eine API User-Programmen zur
Verfügung stellst.

USB ist außerdem etwas anderes als zum Beispiel die serielle
Schnittstelle. USB ist ein Bus-System. Das heißt mehrere Geräte hängen
praktisch an "einem Strang". Um ein Gerät in diesem Bus eindeutig
identifizieren zu können gibt es verschiedene Möglichkeiten:

- Identifikation über Produkt-ID und Vendor-ID. Hersteller von
USB-Hardware registrieren sich bei dem USB-Konsortium und erhalten
dafür eine Vendor-ID. Alle Geräte die von diesem Hersteller kommen
besitzen diese ID. Die Unterscheidung der Produkte erfolgt dann über
eine Product-ID, die der Hersteller selbst wählt.

- Geräteklassen wie zum Beispiel HID-Device. Dies sind Geräte wie
Mäuse, Joysticks und ähnliches. Damit nicht jeder Hersteller einer
Maus einen eigenen Treiber schreiben muß, schreibt er die Firmware
(also der Code der in der Maus auf einem µController ausgeführt wird)
so daß er auf Standard Anfragen reagiert.

Such einfach mal nach dem Programm usbview für Linux. Dann steckt das
Entwicklungskit des IO-Warrior's ein und schau Dir die Informationen
an die dieses Programm ausgibt. Dort solltest Du auch die Vendor und
Product-ID des IO-Warriors finden. Über diese kannst Du dann dein
Gerät mit usblib identifizieren. (Das Beispiel, das Du erhalten hast
arbeitet im Prinzip auch mit der usblib).

Auch kannst Du Dir mal die Kernel-Meldungen ansehen (z. b. mit dmesg)
wenn Du das USB Gerät einsteckst.

Du solltest Dir vielleicht einige gute Bücher über
Linux-Programmierung ansehen, bevor Du mit dem USB-Projekt
weitermachst.

Das O'Reilly Buch über Device Treiber programmierung ist ein guter
Anfang.

Ich persöhnlich finde auch

Linux Programmierung Neil Matthew, Richard Stones

MITP-Verlag 2000

ISBN 3-8266-0569-1

sehr gut.


Gruß

--

Dirk Dörr




< Previous Next >
Follow Ups