next up previous contents
Nächste Seite: Die OpenGL-Implementation Aufwärts: report Vorherige Seite: Laserscanner   Inhalt

Universal Serial Bus

1994 hat eine Allianz von vier Unternehmen (Compaq, Intel, Microsoft und NEC) damit begonnen, den Universal Serial Bus (USB) zu designen. Dem Bus-Design lagen folgende Intentionen zugrunde:

Im Januar 1996 wurde die erste Spezifikation (1.0) bekanntgegeben. In den heutigen Rechnern finden man die im September 1998 eingeführte Version 1.1. Momentan wird an an der nächsten Generation einer Spezifikation gearbeitet. Es sind allerdings noch keine USB 2.0 Geräte verfügbar.

Abbildung B.1: USB Topologie
\begin{figure}
\begin{center}
\setlength {\unitlength}{0.00087489in}\begingroup\...
...efault}{\updefault}Virtual Root Hub}}}}}
\end{picture}}
\end{center}\end{figure}

Der Universal Serial Bus ist strikt hirachisch, die gesamte Kontrolle geht von einem Host aus. Dies bedeutet, daß jegliche Kommunikation von dem Host gestartet werden muß und daß Geräte keine direkte Verbindung zu anderen angeschlossenen Geräten aufbauen können. In der vorliegenden Version erlaubt USB den gleichzeitigen Anschluß von 127 Geräten. Die maximale Bandbreite ist auf 12Mbit pro Sekunde beschränkt. Geräte, die geringe Bandbreite benötigen, wie Mäuse, Tastaturen, Joysticks, etc. kommunizieren mit einer Rate von 1.5MBit/s und nutzen die Fähigkeiten des Busses kaum. Geräte mit hoher Bandbreite wie beispielsweise Audio- und Video-Geräte nutzen etwas 90% des Busses, womit man auf eine tatsächliche Datenrate von 10MBit/s (incl. Protokoll-Overhead) kommt. Desweiteren kann der USB mit bis zu 500mA als Stromquelle den angeschlossenen Geräten zur Verfügung stellen.

Die heutigen Computer weisen an der Rückseite 2 (oder 4) USB Ports auf. An diese Ports können normale Geräte oder Hubs angeschlossen werden. Hubs sind USB-Geräte, die die Anzahl der Ports vergrößern. Die Anzahl der anschließbaren Geräte verringert sich um die Anzahl der angeschlossenen Hubs.

Normalerweise wird der physische Port der Host Controllers (Universal Host Controller (UCHI) von Intel oder Open Host Controller Interface (OHCI) von Compaq) als ein virtueller Root Hub behandelt, um die Bus Topologie zu vereinfachen. Daher kann jeder Port von dem Linux USB System in gleicher Weise behandelt werden.

Abbildung B.2: USB Descriptor
\begin{figure}
\begin{center}
\setlength {\unitlength}{0.0009in}\begingroup\make...
...fault}{\updefault}weitere Endpunkte}}}}}
\end{picture}}
\end{center}\end{figure}

Abbildung B.3: Topologie der MDC800
\scalebox {1}{\includegraphics{usb_mustek}}

Die Kommunikation auf dem Bus geschieht in 2 Richtungen auf vier verschiedene Arten:

Control Transfers
werden benutzt, um kleine Datenpackete zu senden oder anzufordern. Dies geschieht, um das Gerät zu konfigurieren. Jedes Gerät muß ein minimale Menge an Kommandos anbieten:

SET_ADDRESS, GET_STATUS, GET_INTERFACE, SET_INTERFACE, GET_DESCRIPTOR, SET_DESCRIPTOR, SYNC_FRAME, SET_FEATURE, GET_CONFIGURATION, SET_CONFIGURATION, CLEAR_FEATURE.

Bulk Transfers
werden benutzt, um Datenpackete mit einer hohen Bandbreite zu senden oder anzufordern. Geräte wie Digitalkameras, Scanner, SCSI Adapter benutzen diesen Transfermodus.
Interrupt Transfer
sind ähnlich wie Bulk Transfers, die periodisch gepolled werden. Wenn ein Interrupt Transfer angefordert wird, wiederholt der Host Controller diesen automatisch in einem spezifizierten Intervall (1ms - 255ms).
Isochronous Transfer
werden benutzt, um Datenströme mit einer garantieren Bandbreite in Echtzeit zu übertragen. Audio- und Video-Geräte benutzen diesen Transfertyp.

USB verwendet sogenannte Descriptoren, um auf unterschiedlichen Ebenen das Gerät, die Konfiguration, das Interface und die Endpunkte zu beschreiben. Die Descriptoren können abgerufen, und bei den Konfigurationen, Interfaces und Endpunkten können Einstellungen vorgenommen werden (vgl. B.2).


next up previous contents
Nächste Seite: Die OpenGL-Implementation Aufwärts: report Vorherige Seite: Laserscanner   Inhalt