Crash Kurs

 

USB steht für Universal Serial Bus, ein serielles Bussystem mit dem unterschiedliche Geräte mit einem Computer kommunizieren können. Des weiteren bietet USB die Möglichkeit des „Hot-Plugging“ also das anschließen eines Gerätes im laufenden Betrieb.

 

Zur Übertragung werden 4 Leitungen benötigt (bis USB2.0/HS). Masse, +5V, D+ und D-. Die Daten werden über +D und D- symmetrisch übertragen, was den Vorteil hat, das Störungen im Signalweg (Z.B. das Kabel) leichter eliminiert werden können. Aber es kann immer nur in einer Richtung übertragen werden, also senden oder empfangen. Anders als bei RS232, wo auch zwei Leitungen für die Übertragung zur Verfügung stehen. Hier werden aber die Signale asymmetrisch übertragen und senden sowie empfangen gleichzeitig ist möglich. Dieser Zusammenhang ist wichtig um zu verstehen, wie USB funktioniert.

Wenn nur eine Leitung für das Senden und Empfangen von Daten zur Verfügung steht, muss es einen Chef gegeben, der bestimmt wann, und wer in welche Richtung am Zuge ist. So ist es auch bei USB. Der Chef ist der HOST, meist der Computer (PC) alle DEVICE (Maus, Tastatur, Memorystick usw.) hören auf den HOST. Die Datenrichtung IN (empfangen), OUT (senden) sind immer aus Sicht des HOSTES. Will der HOST Daten an ein DEVICE versenden, schickt er ein OUT- Request, und zum empfangen ein IN. Request. Das erklärt auch, warum von einem DEVICE nichts empfangen werden kann, wenn kein Read (IN- Request) aufgerufen wird.

Wird ein DEVICE an einem HOST angeschlossen, so weist der HOST dem DEVICE eine eindeutige Adresse zwischen 1 – 127 zu. Somit können 127 Geräte an einem HOST angeschlossen werden. Anschließend liest der HOST die Device- und Konfiguration- Deskriptoren aus, um festzustellen um was für ein Gerät es sich handelt und gegebenfalls geeignete Treiber zu laden. Diesen Vorgang nennt man ENUMERATION. Das DEVICE bestimmt mit seinen Deskriptoren dabei immer, in welcher Art und Form die Daten übertragen werden (Datenmenge, Interrupt-, Bulk- , Isochroner Transfer).

alt

Der Datenaustausch findet über so genannte ENDPOINTS (Endpunkte) statt. Es können über mehrere Endpunkte Daten unabhängig übertragen werden. Die Endpunkte sind durchnummeriert. Der Endpunkt 0 ist reserviert für den CONTROL-TRANSFER.

Bei der Übertagung von Daten kann es unterschiedliche Beweggründe geben. Der erste möchte eine große Menge von Daten übertragen, der nächste die Daten in einem definierten Zeitfenster übertragen. Wieder ein anderer möchte eine garantierte Bandbreite für seine Übertagung haben. Um diesen Anliegen gerecht zu werden, gibt es bei USB die TRANSFERS.

Control-Transfer ist eine besondere Art des Datentransfers. Über ihn werden unter anderem die Deskriptoren übertragen. Der Control- Transfer benutzt immer Endpunkt 0 und überträgt die Daten sowohl für OUT als auch für IN.

Interrupt-Transfer wird verwendet für kleinere Datenmengen. Im Interrupt- Transfer kann festgelegt werden, in welchen Zeitabständen der HOST die DEVICE nach Daten fragt (IN) bzw. Daten zum DEVICE schickt(OUT). Diese Art des Transfers wird hauptsächlich von HID (Human Interface Device) verwendet, zum Beispiel Mäuse, Joysticks und Tastaturen.
Der Begriff Interrupt ist etwas irritierend, da er mit den Interrupts von der RS232, empfange und sende Daten, nichts gemeinsam hat.

Bulk- Transfer wird für große nicht zeitkritische Datentransfers verwendet. Diese Transfers werden ausgeführt wenn keine Interrupt- oder Isochroner Transfers mehr anstehen.

Isochroner Transfer wird eingesetzt wenn eine garantierte Bandbreite gefordert wird. Kann die geforderte Bandbreite von HOST nicht bereitgestellt werden, wird der Verbindungsaufbau abgewiesen. Bei dieser Übertragung findet keine Fehlerkorrektur statt (fire and forget). Dieser Transfer wird häufig für Video- oder Audio Streaming verwendet.

Kommen wir nun zu den Deskriptoren. Sie werden über den CONTROL-TRANSFER ausgetauscht.
Alles beginnt mit dem

Device Deskriptor. Er liefert Informationen über den Hersteller, das Produkt, und wenn möglich über die Geräteklasse (Memorystick, Maus, Tastatur usw.) sowie über die Anzahl der Konfigurationen. Desweiteren beschreibt er die maximale Paketgröße für den Control- Transfer.

Konfigurations Deskriptor informiert unter anderem über die Anzahl der Interfaces und über die Stromaufnahme am USB- Bus. Es kann mehrere Konfigurations Deskriptoren geben, von denen nur einer aktiv sein kann. Der erste Deskriptor bekommt die 1 bei „bConfigurationValue“ usw.

Interface Deskriptor enthält die Anzahl der Endpunkte, Angaben über die Interface Klassen und Sub- Klassen (Memorystick, Maus, Tastatur usw.). Eine Konfiguration kann mehrere Interface haben. Das erste Interface bekommt die 0 bei „bInterfaceNumber“ das zweite die 1 usw. Die Funktion der Interface verdeutlicht folgendes Beispiel. Angenommen wir haben ein Multifunktionsgerät, Drucker, Scanner und Fax. Jetzt ist es dank der Interface möglich, für jedes Gerät ein Interface mit seinen Endpunkten zu definieren. Das hat den Vorteil, das es möglich ist, für jedes Gerät die Übertragungsart unabhängig von einander festzulegen. Zum Beispiel den Drucker im Bulk Transfer, den Scanner im Isochron und das Fax (weil es keine hohe Datenrate hat), im Interrupt Transfer.

Endpunkt Deskriptor liefert die Nummer (Adresse) und Richtung (IN/OUT) des Endpunktes. Die Art des Transfers (Interrupt, Bulk, Isochron) und maximale Größe des Datenpaketes. Endpunkt 0 ist reserviert für den Control Transfer.

alt