Diplomarbeit. Fakultät Elektrotechnik und Informationstechnik. Studiumrichtung Nachrichtentechnik. Dmytro Farber



Ähnliche Dokumente
USB universeller serieller Bus

5. Digitale Schnittstellen und Vernetzung im Überblick

USB Stack - Design der Systemschnittstelle. Franz Hirschbeck AKBP II, WS 2003/04

Kurze Einführung zu USB

USB. Susanne Grein Hochschule RheinMain Fachseminar 2009

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

Stepperfocuser 2.0 mit Bootloader

Tutorial about how to use USBView.exe and Connection Optimization for VNWA.

EasyWk DAS Schwimmwettkampfprogramm

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Dokumentation IBIS Monitor

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch USB-Isolator

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1.

Lizenzen auschecken. Was ist zu tun?

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation.

METTLER TOLEDO USB-Option Installation der Treiber unter Windows XP

Netzwerk einrichten unter Windows

Installation eines BM-33k6/ISDN pro USB an einem Windows XP-Rechner

DOKUMENTATION VOGELZUCHT 2015 PLUS

ORGA 6000 in Terminalserver Umgebung

s.beat DAP-10X White Paper USB Stromversorgung am Apple Macintosh und deren Auswirkung

Pilot Drivers Package. Handbuch

Windows7 32/64bit Installationsanleitung der ROBO-PRO-Software

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Anleitung zur Nutzung des SharePort Utility

Nutzung von GiS BasePac 8 im Netzwerk

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

USB-Driver: Download-Link:

Für Windows 7 Stand:

Installationsanleitung. Hardlock Internal PCI Hardlock Server Internal PCI

Handbuch USB Treiber-Installation

tensiolink USB Konverter INFIELD 7

Lizenzierung von System Center 2012

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

USB. Autor Valentin Lätt Datum Thema USB Version V 1.0

Kostenstellen verwalten. Tipps & Tricks

Printserver und die Einrichtung von TCP/IP oder LPR Ports

EASYINSTALLER Ⅲ SuSE Linux Installation

PicKit 3. Programmierung mit dem USB-Programmer PICkit3 (Microchip) AB

Powermanager Server- Client- Installation

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Handbuch B4000+ Preset Manager

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Berührungslose Datenerfassung. easyident-usb Stickreader. Art. Nr. FS-0012

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Datensicherung. Beschreibung der Datensicherung

Anleitung zur Installation des Printservers

Übung - Konfigurieren einer Windows Vista-Firewall

Manchester Codierung sowie Differenzielle Manchester Codierung

Peripherie Komplexe serielle Schnittstellen

USB 2.0 Sharing Switch

Technische Alternative elektronische Steuerungsgerätegesellschaft mbh. A-3872 Amaliendorf, Langestr. 124 Tel +43 (0)

serielle Schnittstelle/USB-Schnittstelle für das Velbus-System

Anlegen eines DLRG Accounts

Switching. Übung 7 Spanning Tree. 7.1 Szenario

Artikel Schnittstelle über CSV

NanoDMX USB Interface

Schnittstellen des Computers

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Allgemeine Anleitung Treiber für CP2102

PowerWeiss Synchronisation

Fax einrichten auf Windows XP-PC

iphone-kontakte zu Exchange übertragen

Urlaubsregel in David

PROBLEME BEIM INSTALLIEREN REALTEK HD AUDIO TREIBER

Die Installation von D-Link WLAN Karten unter Windows Vista

Handbuch PCI Treiber-Installation

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, Spur Spur Spur Spur

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Allgemeine USB Kabel Installation und Troubleshooting

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Technical Note ewon über DSL & VPN mit einander verbinden

Enigmail Konfiguration

ICS-Addin. Benutzerhandbuch. Version: 1.0

FrontDoor/Monitor mehr sehen von FrontDoor

Windows 10 > Fragen über Fragen

Schritt 1: USB-auf-IDE/SATA-Adapter an die Festplatte anschließen. Einen der Kabelstränge des Netzadapters an die Festplatte anschließen.

Einrichten der Outlook-Synchronisation

Kommunikations-Management

USB 2.0 PCI-Karte mit NEC CHIPSATZ

MSI TECHNOLOGY. RaidXpert AMD. Anleitung zur Installation und Konfiguration MSI

Installation / Aktualisierung von Druckertreibern unter Windows 7

MO1 <logo otra empresa> MO1Sync Installationshandbuch MO1. MO1Sync Installationshandbuch -1-

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

USB in Embedded Systemen. Referat von Peter Voser Embedded Development GmbH

Zunächst empfehlen wir Ihnen die bestehenden Daten Ihres Gerätes auf USB oder im internen Speicher des Gerätes zu sichern.

Benutzung der LS-Miniscanner

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Drahtlosnetzwerke automatisch konfigurieren mit WCN (Windows Connect Now) unter Windows Vista

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Übung - Konfigurieren einer Windows-XP-Firewall

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Herzlich Willkommen bei der nfon GmbH

PRESENTEC C-TRACK FÜR BLACKBERRY 8800 & BLACKBERRY CURVE 8310 FUNKTIONSBESCHREIBUNG

Registrierung am Elterninformationssysytem: ClaXss Infoline

Transkript:

Fakultät Elektrotechnik und Informationstechnik Studiumrichtung Nachrichtentechnik Diplomarbeit Dmytro Farber Adapter für die Ankopplung einfacher Messgeräte an den Universal Serial Bus (USB) betreut von: Prof. Dr. E. Forgber Dr. Ing. R. Patzke 14 Februar 2006

1.1 Allgemeine Problemschilderung Danksagung An dieser Stelle bedanke ich mich bei allen, die mich bei der Erstellung dieser Arbeit und während meines Studiums unterstützt haben. Mein besonderer Dank gilt den Mitarbeitern der Firma MFP für das sehr gute Arbeitsklima und die Unterstützung, meinem Bruder, der mir während dieser Arbeit viele wertvolle Hinweise gab. Weiterhin möchte ich mich bei meinen Eltern für die moralische Unterstützung und bei meiner Frau für die Geduld und das Verständnis während meines Studiums bedanken. Ich bedanke mich besonders auch bei meinen Betreuer Dr.-Ing. Robert Patzke und Prof. Dr. Ernst Forgber bedanken, ohne sie wäre dieses Projekt nicht verwirklicht worden. 2

1.1 Allgemeine Problemschilderung 1 Einführung 1.1 Allgemeine Problemschilderung Die Firma MFP GmbH arbeitet in Bereichen der Messtechnik und der Automation. Die in der Firma entwickelte Messgeräte benötigen häufig zur Kommunikation mit dem Rechner eine PCI- ISA- oder COM Schnittstelle. Diese Kommunikationsanschlusse beschränken die Anwendbarkeit die Messgeräten, da im keinem portablem (Laptop) Rechner man die PCI-, ISA Schnittstele findet. Sogar RS232 ist heutzutage eine Seltenheit beim Laptop. So kam die Idee die Messdaten über USB (Universal Serial Bus) Schnittstelle zu übertragen. Die USB Schnittstelle ist hervorragend für diese Zwecke geeignet. Die ist an jedem Rechner vorhanden, ist leicht zu bedienen, erlaubt Anschlusse von bis zu 127 Geräten und benötigt keine zusätzliche Spannungsversorgung. Für die neue Installation oder bei der Ersetzung ist nicht nötig einen PC-Spezialist zu holen, den Rechner muss dafür nicht aus einander gebaut werden, was die Installation kostengünstig und Nerven sparend macht. 1.2 Aufgabenstellung Die Entwicklung eines Systems (Geräteadapter) für die Datenübertragung zwischen dem PC und einem beliebigen Gerät über USB Schnittstelle. Dabei handelt es sich um die folgenden Aufgaben - Information über USB Technologie zusammenlegen - Hardwareentwicklung (USB Geräteadapter) - Firmwareentwicklung für den USB - Gerätadapter - Der Treiber für die Anbindung des USB Geräteadapters an PC - Die Anwendersoftware für Bedienung des Geräteadapters für Microsoft Windows Betriebssystem. Der Leser soll durch die bereitgestellte Information - eine Einblick in der USB Architektur zu gewinnen - die Kenntnisse über Windows Driver Model zu sammeln - die Diplomarbeit als die Grundlagen für eigene Entwicklungen nutzen können. 3

1.3 Zusammenfassung und Ausblick 1.3 Zusammenfassung und Ausblick Im Rahmen dieser Arbeit wurde ein USB-Geräteadapter entwickelt, der die Möglichkeit bietet, Messgeräte über den USB-Bus an den PC zu koppeln. Zum Umfang gehört: Information über USB Technologie Prototyp Board (Schaltplan, Layout, Zusammenbau) Firmware Assemblercode für den USB - Adapter Software Treiber für die Ankopplung des USB-Adapters an PC für Microsoft Windows Betriebsystem 1.4 Aufbau der Diplomarbeit Diese Arbeit gliedert sich in drei Teile auf: Grundlagen, Entwicklung und Anhang. Der erste Teil enthält Grundlagen zur USB-Architektur und vermittelt eine kurze Einführung in die Treiberentwicklung unter Windows. Wegen des großen Umfangs konnte nur auf die für diese Arbeit relevanten Details eingegangen werden. Einen vertieften Einblick liefern die im Literaturverzeichnis aufgelisteten Quellen. Der zweite Teil beinhaltet Teile der Projektentwicklung, angefangen von der Analyse und den Anforderungen (Entwurf und Architektur) bis zur Implementierung. Kenntnisse der Programmiersprachen Assembler und C sowie der Grundlagen zum Windows Betriebssystem werden für das Verständnis dieser Arbeit vorausgesetzt. 4

2.1 USB im Überblick 2 Grundlagen 2.1 USB im Überblick Universal Serial Bus, kurz USB, ist ein Standard, der zum Anschluss von Geräten an den PC konzeptiert wurde. Er sollte die Nachfolge für eine ganze Reihe von PC- Schnittstellen antreten und diese vereinheitlichen. Deshalb war die USB- Spezifikation nicht nur auf Tastatur und Maus begrenzt, sondern schloss auch andere Peripheriegeräte wie Drucker und Scanner mit ein. Die Datenkommunikation erfolgt seriell über eine differentielle Datenleitung. Entsprechende Kabel sind handlicher und preiswerter als bei parallelen Schnittstellen, und mit den heute zur Verfügung stehenden Technologien sind auch seriell sehr hohe Datenrate mit relativ geringem Aufwand zu erreichen. Die Bus-Spezifikation sieht einen zentralen Hostcontroller vor, der die Koordination der angeschlossenen Geräte übernimmt. Daran können bis zu 127 verschiedene Geräte angeschlossen werden. An einen USB-Port kann immer nur ein einzelnes USB-Gerät angeschlossen werden. Wenn an einen Host mehrere Geräte angeschlossen werden sollen, muss ein Verteiler (Hub) für die Kopplung dieser Geräte sorgen. Durch den Einsatz von mehreren Hubs entstehen Baumstrukturen, die alle im Hostcontroller enden. Mit USB-Schnittstelle ausgestattete Geräte können im laufenden Betrieb miteinander verbunden werden (Hot-Plugging), das Protokoll des USB sieht eine automatische Erkennung von angeschlossenen Geräten und deren Eigenschaften vor. 2.1.1 Geschichte des USB-Buses Die Begründer des USB-Busses waren im wesentlichen die Grossunternehmen Compaq, Intel, Microsoft und NEC. Die erste öffentlich erhältliche Version der USB-Spezifikation trug die Nummer 0.7 und wurde am 11. November 1994 veröffentlicht. Im Januar 1996 veröffentlichte Intel die Spezifikation USB 1.0. Der Standard USB 1.0 sah eine Bitrate von maximal 12 MBit/s (1,5 MByte/s) vor. Ende 1998 folgte die überarbeitete Spezifikation USB 1.1, die in erster Linie Fehler und Unklarheiten in der 1.0 Spezifikation behob und den Interrupt Out Transfer hinzufügte. Die Geschwindigkeit blieb jedoch gleich. 5

2.2 USB aus der Sicht der PC-Nutzer Im Jahr 2000 folgte die Spezifikation für USB 2.0, die vor allem die Datenrate auf bis zu 480 MBit/s (60 MByte/s) erweiterte und so den sinnvollen Anschluss von Festplatten oder Videogeräten ermöglichte. 2.2 USB aus der Sicht der PC-Nutzer Für den Endanwender bittet USB-Schnittstele deutliche Vorteile gegenüber den herkömmlichen Anschlusstechniken: leichte Anwendbarkeit, zuverlässige Datenübertragung, Flexibilität, geringere Kosten. Vorteile + Bis jetzt hat jedes Peripheriegerät, wie Modem, Maus, Tastatur, Drucker, Scanner etc. einen speziellen Anschluss mit passendem Kabel, eine Vielfalt von Anschlussmöglichkeiten ist die Folge. Bei USB ist die Art der Anschlüsse auf wenige Varianten beschränkt und so ausgeführt, dass keine Gefahr besteht, Stecker zu verwechseln und USB-Geräte falsch zu verkabeln. + USB unterstützt ein Hot-Plug-and-Play, die im laufenden Betrieb angeschlossene USB-Geräte werden erkannt und die zugehörigen Treiber automatisch installiert. Ebenso kann man die USB-Geräte im laufenden Betrieb abschalten. Die entsprechenden Gerätetreiber werden von Betriebsystem automatisch entfernt. + Bei der Installation von USB-Geräten braucht der Anwender keine Konfiguration/Parametrierung (z.b. IRQ und Portadressen) vorzunehmen. + Im Vergleich zu PCI, ISA oder AGP erlaubt der USB-BUS größere Entfernungen zwischen PC-Anschluss und Gerät. + USB unterstützt die Versorgung der angeschlossenen Geräte. Auf dem USB- Anschluss steht eine Spannung von 5 Volt mit maximal 500 ma Laststrom zur Verfügung. Das genügt, Geräte mit geringem Energieverbrauch zu betreiben (PC-Mäuse, Tastaturen, Scanner, etc.). Geräte mit höherem Energiebedarf, zum Beispiel Drucker, brauchen natürlich eine eigene Versorgung. 6

2.2 USB aus der Sicht der PC-Nutzer + Die USB-Schnittstelle bedingt, nicht zuletzt dank der über die PCs garantierten großen Verbreitung, nur niedrige Kosten. + Die USB-Schnittstelle enthält auch Festlegungen zur Energieeinsparung. Die Geräte unterstützen einen entsprechenden Stand-By-Modus. Nachteile - Bei der USB Entwicklung wurde davon ausgegangen, dass die Peripheriegeräte direkt am PC stehen. Ein USB-Kabel laut USB 2.0 Spezifikation darf maximal fünf Meter lang sein. Im Vergleich dazu erlauben RS-232- oder Ethernet-Schnittstellen deutlich größere Kabellängen. - Wenn ein USB-Gerät nicht wie erwartet arbeitet, ist es relativ schwierig, die Ursache des Problems festzustellen. Sie kann sowohl bei der Software, dem PC, dem Treiber, als auch bei dem Peripheriegerät selber bzw. seiner Firmware liegen. 7

2.3 Technische Eigenschaften des USB 2.3 Technische Eigenschaften des USB Einheitliche Steckverbindung. Bild 1: USB-Stecker Typen (http://www.tecchannel.de/hardware/575/index.html) Bis zu 127 Geräte an einem USB-Host über Hubs anschließbar. Hub-Verschachtelungstiefe auf 5 beschränkt wegen Laufzeiteinflüssen. Maximale Kabellänge ist 5 m, maximale Entfernung eines Endgerätes vom Root- Hub beträgt 30m (5 Hubs in Serie geschaltet). Drei Geschwindigkeitsklasse Low-Speed: 1,5MBit/s (USB 1.x und USB 2.0) Full-Speed: 12MBit/s (USB 1.1 und USB 2.0) Hi Speed: 480MBit/s (USB 2.0) Vier verschiedene Transferarten Control Transfers werden von allen USB Geräten unterstützt. Sie dienen dazu, kurze Datenpakete sicher zu transferieren. Der Zweck von Control Transfers ist das Konfigurieren von Geräten auf dem Bus. Bulk Transfers werden benutzt um größere, nicht zeitkritische Daten zuverlässig zu transferieren. Interrupt Transfers dienen dazu, kurze Datenpakte in periodischen Abständen über den Bus zu transferieren, das gewünschte Intervall kann dabei in 1ms Schritten von 1ms bis 256ms variiert werden. 8

2.3 Technische Eigenschaften des USB Isochronous Transfers werden für Endlos-Datenströme von Realtime- Anwendungen verwendet (vor allem Audio- und Video-Applikationen.) Diese Transferart garantiert eine gewisse Busbandbreite. Es besteht jedoch keine Garantie für die korrekte Übertragung der Daten. Fehlerbehandlung CRC-Fehler (Cyclic Redundancy Check siehe Abschnitt 2.8.1 CRC) PID-Fehler (Paketidentifikationsfeld siehe Abschnitt 2.8.2 PID) Bit-Stuff-Fehler (siehe Abschnitt 2.8.3 Bit-Stuff-Fehler) Hot-Pug-and-Play. Direkte Geräteverbindung (Punkt-zu-Punkt) möglich über USB On-the-go. Stromversorgung über das Buskabel (5V, 500mA) 2.4 Begriffsbestimmungen: 2.4.1 HOST USB ist eine hierarchische Implementation eines Bussystems. Der Host ist in der Regel im PCI-Chipsatz des PCs eingebaut und enthält ein integriertes Root-HUB mit einem oder mehreren Ports. Der Host enthält Empfangs- und Sendepuffer. Er ist nicht nur die Wurzel des physikalischen Baums der angeschlossenen Geräte, sondern auch der Master des Bussystems. Er benutzt ein Master/Slave-Protokoll, um mit den angeschlossenen Geräten zu kommunizieren. D.h., jede Art des Datentransfers auf dem Bus wird von ihm initiiert. Damit ist eine aktuelle Liste der angeschlossenen Geräte und ihrer Eigenschaften im Host erforderlich. Der Host nimmt folgende Aufgaben wahr: Erkennung von Geräten Verwaltung des Datenflusses Fehlerprüfung Stromversorgung Datentransfer mit den Endgeräten 9

2.3 Technische Eigenschaften des USB Beim Datentransfer sendet der Host grundsätzlich die Daten an alle angeschlossenen Geräte (Bus-Struktur), aber es reagiert nur das Endgerät, das im gesendeten Paket seine eigene Adresse erkennt. Die Antworten der adressierten Geräte werden aufgrund der Hub-Struktur nur vom Host empfangen. 2.4.2 Die USB-On-the-Go-Spezifikation Über die USB-On-the-Go-Funktion können zwei Endgeräte ihre Daten direkt miteinander austauschen. Normalerweise können USB - Endgeräte nur als Slaves von einem Host angesprochen werden. Mit USB-On-The-Go kann zum Beispiel eine Digitalkamera Daten ohne zwischengeschalteten Computer an einen Drucker schicken. Allerdings werden die Host-Fähigkeiten der On-the-Go-Geräte im Punktzu-Punkt-Betrieb nur auf das notwendigste beschränkt. Dadurch kann nicht jedes USB-Gerät mit jedem beliebigen kommunizieren. Bild 2: Die Beispiele für den Einsatz von USB On-The-Go 2.4.3 HUB Der HUB ist ein Verteiler, der den Anschluss von mehreren Geräten ermöglicht. Er besitzt in Richtung zum Host eine Upstream-Leitung und zu den Endgerten mehre Downstream-Leitungen. Hier können auch weitere Hubs angeschlossen sein. Der Hub verteilt die vom Host gesendeten Daten an alle Downstream-Leitungen. In entgegengesetzter Richtung werden die Daten vom Endgerät direkt über Upstream- Leitung zum Host geschickt. Der Hub erzeugt auch die Interrupt-IN-Signale, die den Host über neu angeschlossene oder entfernte Geräte informieren. Auch entkoppelt der HUB Full-Speed und Low-Speed Übertragungen. Ein 2.0 HUB unterstützt auch High-Speed Kommunikation, und im Gegensatz zu 1.x HUBs wandelt er bei Bedarf Daten in Full- oder Low-Speed um. 10

2.3 Technische Eigenschaften des USB 2.4.4 Funktion Der Begriff Funktion wird bei USB für unterschiedliche Ausprägungen von Endgeräten verwendet. Diverse Funktionen sind mit ihren Eigenschaften vordefiniert (USB-Maus, USB-Webcam, etc.). 2.4.5 Endpunkte USB-Geräte verfügen über eine Anzahl von durchnummerierten Endpunkten, gewissermaßen Unteradressen der Geräteadresse. Die Endpunkte sind in den Geräten hardwareseitig vorhanden und werden von der sog. SIE (Serial Interface Engine) des USB bedient. Zu jedem Endpunkt führen zwei virtuelle logische Kanäle, so genannte Pipes, je eine in IN und OUT Richtung. Physikalisch gesehen, ist ein Endpunkt ein Puffer (FIFO) mit einer festgelegten Tiefe, der entweder senden oder empfangen kann. Über solche Endpunkte können voneinander unabhängige Datenströme laufen. Geräte mit mehreren getrennten Funktionen (z.b. Webcams, die getrennt Video und Audio übertragen) haben mehrere Endpunkte. Die Übertragungen von und zu den Endpunkten erfolgen meist unidirektional, für bidirektionale Übertragungen ist deshalb ein IN- und ein OUT-Endpunkt erforderlich (IN und OUT beziehen sich jeweils auf die Sicht des Hostcontrollers). Eine Ausnahme davon ist Endpunkt 0. In jedem USB-Gerät muss ein Endpunkt mit der Nummer 0 vorhanden sein, über den die Erkennung und Konfiguration des Gerätes läuft. Darüber hinaus kann er auch noch weitere Funktionen übernehmen. Endpunkt 0 verwendet immer den Control Transfer Modus. Ein USB-Gerät kann maximal 31 Endpunkte haben: den Control Endpunkt (der eigentlich zwei Endpunkte zusammenfasst) und je 15 In- und 15 Out-Endpunkte. Low-Speed-Geräte sind auf Endpunkt 0 plus maximal zwei weitere Endpunkte im Interrupt Transfer Modus mit maximal 8 Bytes pro Transfer beschränkt. 11

2.5 USB-Architektur 2.4.6 Pipe USB-Pipe ist eine logische Verknüpfung zwischen dem Host und einem Geräteendpunkt. Jedes USB-Gerät kann mehrere Endpunkte und damit mehrere Pipes unterstützen. 2.5 USB-Architektur 2.5.1 Zum Begriff des Busses Bei einem Bussystem hängen alle Geräte an einer Leitung. Am Anfang und Ende dieser Leitung befinden sich Abschlusswiderstände. Dazwischen sind die Geräte angeschlossen. Jedes Gerät kann, wenn es das Übertragungsprotokoll ermöglicht, mit jedem anderen Gerät Daten austauschen. Dafür enthält ein Datenpaket dann den Namen des Gerätes, von dem es kommt und den Gerätnamen, an den es gelangen soll. Bei Master-Slave-Bussen werden Daten in der Regel nur zwischen dem Master und den Slaves ausgetauscht. Ein direkter Datenverkehr zwischen den Slaves wird entweder vom Master organisiert oder über diesen vermittelt (Querverkehr). Bei USB handelt es sich, aus Sicht der Datenübertragung, um einen sternförmigen Aufbau mit mehreren Zwischenebenen. Funktion 1 Header Set Funktion 2 Modem Funktion 3 Maus Funktion 4 WebCam HOST Funktion 8 MP3 Funktion 7 Photo Funktion 5 Printer Funktion 6 Scaner Bild 3: Logische Topologie 12

2.5 USB-Architektur Jedes Gerät ist über eine eigene Leitung mit dem Host direkt oder mit einem dazwischen geschalteten Hub verbunden. Ein Hub arbeitet wie ein Sammelpunkt. Er nimmt Daten von den Geräten entgegen und liefert sie an den PC oder an den nächst höherem Hub. Umgekehrt nimmt ein Hub Daten vom Computer entgegen und leitet sie an Geräten oder den nächst tieferen Hub weiter. Zwischen dem Computer und einem Gerät lassen sich bis zu fünf Hubs einbauen. Sie bilden so genannte Ebenen. HOST Hub Funktion 1 Header Set Funktion 2 Modem Funktion 3 Maus Hub Funktion 4 WebCam Funktion 5 Printer Funktion 6 Scaner Funktion 7 Photo Funktion 8 MP3 Bild 4: Physikalische Beispieltopologie In jeder Ebene darf das USB-Kabel maximal 5 Meter lang sein. Insgesamt kann also ein Gerät 30 Meter vom Computer entfernt stehen. Die USB-Geräte können nicht miteinander kommunizieren. Die Kontrolle über die Daten hat der Host allein. Er bildet den so genannten Root- Hub. Das bedeutet, der Host fragt regelmäßig bei den Geräten nach, ob sie Daten für ihn haben (Polling) und holt diese ab. Die Geräte selbst dürfen unaufgefordert nicht senden. 13

2.5 USB-Architektur Host Root-Hub Funktion 0 HUB 1 Funktion 1 Funktion 2 HUB 2 Funktion 3 Funktion 4 Funktion 5 HUB 3 Funktion 6 HUB 4 Funktion 7 Funktion8 Funktion 9 HUB 5 HUB 6 Funktion10 Funktion11 Funktion12 Funktion13 Funktion14 Funktion15 Funktion16 Funktion17 Funktion18 Bild 5: USB-Topologie Die Pyramide in Bild 5 stellt die physischen Verbindungen über diverse Hubs dar. Für die Programmierung spielt diese Struktur allerdings keine Rolle, da weder USB- Gerätetreiber noch USB-Endgerät die Anwensenheit von Hubs nicht erkennen. Hubs verwalten die vom Host oder von den Endgeräten abgesendeten Pakete selbständig. 14

2.6 Elektrisches Interface 2.6 Elektrisches Interface 2.6.1 USB-Kabel Ein USB-Kabel besteht aus vier elektrischen Leitungen: Funktion Pin-Nummer Farbe der Adern Vcc 1 Rot D- 2 Weiß D+ 3 Grün GND 4 Schwarz Tabelle 1: Die Steckerbelegung und die Adernfarben Bei USB-Kabeln werden zwei Arten unterschieden. Für ausschließlich Low-Speed Übertragung kann ein vieradriges, nicht abgeschirmtes Kabel mit unverdrillten Datenleitungen verwendet werden. Bei den Full- und High-Speed-Kabeln sind Datenleitungen D+ und D- miteinander verdrillt und zusätzlich abgeschirmt. Das ganze Kabel ist noch einmal mit einer äußeren Abschirmung umgeben. Innere Abschirmung Äussere Abschirmung Kabelummantelung D+ Anschluss D- Anschluss Bild 6: Aufbau des Full/High- und des Low- Speed Kabels 15

2.6 Elektrisches Interface 2.6.2 USB-Stecker Die Stecker eines USB-Kabels sind verpolungs- und vertauschungssicher gestaltet. Für den USB sind drei verschiedene Stecker definiert: in Richtung des Hostcontrollers (Upstream) werden Flachstecker (Typ A) verwendet. Zum angeschlossenen Gerät hin (Downstream) werden die Kabel entweder fix montiert oder über quadratische Stecker (Typ B) angeschlossen. Für Geräte mit geringerem Platzangebot (z.b. digitale Kameras) existieren auch kompaktere Steckervarianten, die Mini-USB-Stecker. Bild 7: USB Stecker A und B Bild 8: USB Stecker Mini-USB 16

2.6 Elektrisches Interface 2.6.3 Elektrisches Interface Alle USB-Geräte besitzen elektrisches Interface, das sich in 3 Komponenten einteilen lässt [H. J. Kelm (Hrsg.); USB Universal Serial Bus; Franzis Verlag]: Defferential Reciever RX Data D + D TX Data SE0 OE Signal Ended Receiver 15kΩ 15kΩ Bild 9: Elektrisches Interface eines Downstream Port - Differentieller Empfänger - Differentieller Treiber - Single-Ended Empfänger Die differentiell empfangenen Daten werden im differentiellen Empfänger wieder in massebezogene Logikpegel umgewandelt. Der Empfänger muss eine Empfindlichkeit von 200mV aufweisen, wenn sich beide Datenleitungen in einem Spannungsbereich zwischen 0,8.. 2,5V befinden. Neben dem differentiellen Empfänger befindet sich an jeder Leitung jeweils ein Single-Ended-Receiver zur Detektion nichtdifferentieller Zustände auf den Datenleitungen ( D + ) und ( ) D (z.b. Connect- und Disconnect ). 17

2.6 Elektrisches Interface D + 15kΩ 3,3V Defferential Reciever RX Data D TX Data SE0 OE Signal Ended Receiver Bild 10: Elektrisches Interface eines Upstream Ports Um die Datenleitungen zu treiben, werden analoge Treiberstufen verwendet. Nur damit können die unterschiedlichen Slave-Rates für Full- und Low- Speed verwickelt werden. Neben dem Symmetrisieren der übertragenen Daten, muss auch die Möglichkeit bestehen, eine SE0 (Signal-Ended-Zero)-Zustand zu treiben (mit anderen Wörtern beide Leitungen in Low zustand setzen). 27Ω D + /Output - Enable TX - Data 27Ω D Bild 11: Differentieller Treiber Die Treiber werden meist im CMOS-Technologie gefertigt. Die Anpassung an die erforderliche Ausgangsimpedanz zwischen 28 und 44 Ω wird mit Widerständen (22.. 27 Ω) in den Datenleitungen vorgenommen. 18

2.6 Elektrisches Interface 2.6.4 Die Erkennung eines USB-Gerätes Die Erkennung bei dem Abziehen bzw. Anstecken eines USB-Gerätes wird elektrisch realisiert. Gleichzeitig wird auch erkannt, welche Geschwindigkeit das angeschlossene Gerät unterstützt. Die Erkennung wird erreicht in dem man beide Datenleitungen ( D + ) und ( ) D an den Downstream-Ports des Root-Hubs über 15kΩ Widerstände mit der Erde verbindet. Jedes USB-Peripheriegerät besitzt einen Widerstand von 1.5kΩ, der eine der beiden Signalleitungen mit 3.3V verbindet. Je nach dem welche Signalleitung an dem Peripheriegerät hochgezogen wird, wird festgestellt ob das angeschlossene Gerät nur Low-Speed oder Full-Speed unterstützt. Hochgezogene ( D + ) Leitung sagt dem Root-Hub eindeutig, dass das Full-Speed Gerät angeschlossen wurde. Und bei den Geräten, die nur Low Speed unterstützen, wird entsprechend ( D ) Leitung hochgezogen. 3,3V USB Transeceiver 1,5kΩ D + D + D D USB Transeceiver 1,5kΩ 1,5kΩ Root Hub Full Speed Funktion Bild 12: Erkennung eines USB Full-Speed-Gerätes 3,3V USB Transeceiver 1,5kΩ D + D + D D USB Transeceiver 1,5kΩ 1,5kΩ Root Hub Low Speed Funktion Bild 13: Erkennung eines USB Low-Speed-Gerätes 19

2.6 Elektrisches Interface 2.6.5 Die elektrische Buszustände Für die Steuerung des Datenflusses benutzt USB differenzielle Ausgangstreiber. Die logische Werte eines übertragenes Bits bestimmen sich aus der Differenz der beiden Datenleitungen ( D + ) und ( D ). Die Low-Pegel wird mit 0V..0.3V und der High-Pegel 2.8V.. 3.3V durch die Spezifikation festgelegt. Die differenzielle Eins ist als ( D ) ( D ) > 200mV + und( D + ) > 2. 8V definiert. Die differenzielle Null ist als( D ) ( D + ) > 200mV ( D ) > 2. 8V definiert. Also, mit anderen Wörtern, eine differenzielle Eins liegt vor, wenn ( D + ) Ausgangsleitung logisch hoch und ( D ) Ausgangsleitung logisch niedrig ist. Eine differenzielle Null liegt vor wenn, ( D + ) logisch niedrig und ( D ) logisch hoch ist. Die differenzielle Einsen und Nullen werden in den übertragenen Daten nicht direkt in Einsen und Nullen umgewandelt, sondern beschreiben die Veränderungen in logischen Zuständen. Außer differentialen Datenübertragung unterstürzt USB auch die lineare Übertragung. Dadurch erreicht man mehrere Zustände an der Leitung. Das Bus-Interface unterstürzt folgende Zustände: Zustand-J und Zustand-K (Zustand von dem übertragenden Bits) Busstatus Datenstatus, Low-Speed Datenstatus, Full-Speed Differenzial 0 J K Differenzial 1 K J Zustand-Idle (Schlafmodus) Datenstatus, Low-Speed Datenstatus, Full-Speed D- positiver D+ Positiver So erkennt USB-Host ob Low- oder Full-Speed Gerät angeschlossen ist. 20

2.7 USB- Datentransfer 2.7 USB- Datentransfer 2.7.1 Datencodierung Das Kodierungsverfahren NRZI (Non-Return-to-Zero-Inverted) ermöglicht einerseits die Synchronisation zwischen Quelle und Senke ohne dass die getrennte Taktsignale oder Start- und Stop Bits mit jedem Byte gesendet werden müssen, andererseits wird eine höhere Datensicherheit erreicht. Bit - Stuffer NRZI Encoder Differentieller Treiber Bit - Destuffer NRZI Decoder Differentieller Empfänger Bild 14: Datenfluss der Low-Level-Datencodierung Die USB-Spezifikation definiert die logische Null als Spannungswechsel und die Spannung bei der logischer Eins bleibt unverändert. Bild 15 zeigt den schematischen Spannungsverlauf. Es ist zu erkennen dass jede logische Null zu einer Zustandsänderung führt, wobei jede logische Eins keine Änderung der Spannung verursacht. Zu sendende Daten 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 + 0 _ IDLE 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 Füllbit Nach 6 aufeinander folgenden logischen Einsen wird eine Null als Füllbit eingefügt. Bild 15: NRZI-Kodierung des serialisierten Datenstroms 21

2.7 USB- Datentransfer 2.7.2 Datenverwaltung auf dem Bus In Grunde genommen besteht eine Verbindung zwischen Host und sämtlichen USB - Endgeräten nur aus D + und D Leitungen. Diese Leitungen bilden einen einzigen Übertragungspfad, den alle Geräte gemeinsam nutzen müssen. Der Host verwaltet den Verkehr, in dem er die verfügbare Zeit in Blocke, so genannte Frames gliedert. Der Host stellt jedem eingeschlossenem Gerät, der momentan die Daten sendet oder empfängt, ein Teil der einzelnen Frames zur Verfügung (Bild 16). Die Länge des Frames ist bei Low- und Full-Speed-Daten eine Millisekundelang. Für High-Speed-Daten werden einzelne Frames zusätzlich auf 8 Mikroframes unterteilt. START OF FRAME Device 1, Endpunkt 1 Device 3, Endpunkt 14 Device 7, Endpunkt 3 Device 7, Endpunkt 2 Device 4, Endpunkt 5 Device 1, Endpunkt 1 START OF FRAME Device 5, Endpunkt 5 Device 7, Endpunkt 2 Device 7, Endpunkt 3 UNUSED START OF FRAME Device 1, Endpunkt 2 Device 3, Endpunkt 15 Device 7, Endpunkt 2 Device 3, Endpunkt 5 UNUSED 1 Millisekunde Frame 1 Millisekunde Frame 1 Millisekunde Frame Bild 16: Datenverwaltung auf dem Bus Da alle Endgeräte einen gemeinsamen Datenpfad nutzen, muss jede Transaktion eine Quelle- oder Zieladresse enthalten. Jeder Endpunkt im USB-Gerät bekommt von Host eine eindeutige Adresse. Die Adresse des Endgerätes ist 7 Bit Lang (max. 127) und zusätzlich noch die Endpunktnummer 4 Bit lang (max. 31). Aus der obengenannten Adresse- und Endpunktnummer entsteht die Gerätnummer. Die Richtung des Datentransfers wird immer aus der Sicht des Hosts bestimmt. Endpunkte in Geräten, die Daten vom Host empfangen können, sind Out-Endpunkte. Wenn die Daten in Upstream-Richtung von einem Gerät zum Host übertragen werden, spricht man dann von einer In-Transaktion. Zusammengefasst: Jeder Transfer besteht aus Transaktionen. Jede Transaktion besteht aus Paketen. Jedes Paket beinhaltet Information. 22

2.7 USB- Datentransfer 2.7.3 Paketarten Eine USB-Transaktion besteht aus einem Token-Paket, Datenpaket und optionalen Handshake-Paket, das immer innerhalb eines Frames/Microframes und ohne Unterbrechung stattfindet. S O F t 1-1ms Transaktion Token Daten Frame N-1 Transaktion Token Daten ACK t 1 S O F Transaktion Frame N Token Daten ACK Bild 17: Aufbau des USB Frames S O F t 1 +1ms Ein Start-of-Frame-Tocken SOF wird vom Host im Full-Speed-Modus jede Millisekunde gesendet. Das SOF dient der Erkennung der Frames von allen angeschlossenen USB-Geräten. Ein EOP wird zusätzlich an Low-Speedgeräten über Downstream-Ports gesendet. EOP Signal verhindert Kollision, die zwischen Low- und Full-Speed Geräten entstehen kann. Das USB-Protokoll unterstützt zwei Paketarten. Eines übermittelt Kontroll- und Steuerungsinformationen, das andere übermittelt die Daten. Beide sind gleich aufgebaut. 2.7.4 Data-Pakets Data-Pakete sind Pakete mit Nutzdaten. Dabei wird zwischen Data0 und Data1 unterschieden. Falls gesendete Daten größer als Paketgröße sind, dann werden die Daten auf mehrere Pakete zerteilt. Wehrend Übertragung werden die abwechselnd Data0 und Data1 gesendet. So eine Verteilung ist notwenig für weitere Fehlerbehandlung. Data-Packet beginnt mit einem SYNC-Feld, gefolgt von dem PID Feld. Danach kommen die Nutzdaten die je nach FIFO-Größe und die Übertragungsart bis zu 1204 Byte lang sein können. SYNC Das Bit-Stuffing allein reicht nicht aus für die Synchronisierung des Empfängertakts. Für eine dauerhafte Taktgenauigkeit während der Übertragung wird jedem Paket ein so genanntes Synchronisationsfeld vorangestellt. Dieser Zustandwechsel findet vor jedem Paket statt. Es werden pro Paket 8 Bit vorangestellt. Somit werden lange 23

2.7 USB- Datentransfer Pakete effektiver als kürzere. Ein solches Feld vor einem ganzen Paket zu stellen ist außerdem effizienter als vor jedem Byte ein Startbit zu setzen. Nach den 8 Bits langem Synchronisationsfeld ist der Empfänger in der Lage, alle folgenden Bits des Pakets auszuwerten. PID Das Paketidentifikationsfeld (abgekürzt PID) besteht aus 8 Bit. Die ersten 4 Bits von 0 bis 3 kennzeichnen den Pakettyp, und die restlichen 4 Bits dienen für die Fehlerkorrektur. Es gibt 16 definierte PID-Sodes für Tocken-, Data-, Handschake-Pakete. Handschake-Pakets Handschake-Pakete sind für die Feststellung erfolgreicher oder fehlerhafter Ahnname von Daten ausgedacht. Solche Pakete bestehen aus SYNC-Feld, PID-Feld und schließlich EOP. EOP (End-of-Paket) ASK (Bestätigung) Beim fehlerfreien Datenübertragung von Host oder Gerätseite zurückgegeben. NAK (Negative Bestätigung) Das Endgerät sendet NAK an den Host wenn er die von dem Host angeforderten Daten nicht zur Verfügung hat, oder wenn er die von ihm gesendeten Daten nicht empfangen kann. NAK wird für die Verwaltung des Datenflusses verwendet. So wird dem Host mitgeteilt, dass das Endgerät nur vorübergehend unfähig ist, die Daten vom Host zu empfangen oder selber zu senden, und wird das entstehende Problem selbst ohne Hosteinmischung lösen. Ein NAK kann nie von dem Host ausgelöst werden. STALL Der zurück vom Endgerät gesendete STALL sagt dem Host, dass die Funktion entweder die Daten nicht empfangen oder senden kann, und das entstandene Problem ohne Host nicht lösbar ist. Host darf auf keinen Fall ein STALL zurückweisen. 24

2.7 USB- Datentransfer 2.7.5 Transfertypen Um viele Arten von Peripheriegeräten mit unterschiedlichen Anforderungen zu unterstützen, sind in USB-Konzept vier Transferarten vorgesehen. Jeder von vier Arten entspricht unterschiedlichen Ansprüchen, wobei ein Peripheriegerät jeweils die Transferarten unterstützen kann, die für ausgedachte Einsatzzwecke erforderlich sind. Transfertypen: Control Interrupt Bulk Isochron Der Control-Transfer dient der Konfiguration und Kontrolle eines Gerätes. Dabei erfolgt die Kommunikation über Endpoint0 (EP0). Das Endpoint muss mindestens 8 Byte Tiefe haben. Er kann auch für die anwenderspezifischen Aufgaben verwendet werden. Für deren Übertragung werden bis zu 10% der Bandbreite garantiert, damit der USB-Bus auch bei voller Auslastung durch die anderen Transferarten noch kontrolliert werden kann. Control-Transfer muss von allen USB-Geräten unterstützt werden. Der Interrupt-Transfer wird typischerweise für die Geräte bestimmt, die periodisch die Aufmerksamkeit des Hosts benötigen. Für deren Übertragung werden bis zu 90% der Bandbreite garantiert. Die klassischen Beispiele für den Interrupt-Transfer sind Maus, Tastatur. Interrupt-Transfer hören sich zunächst so an, als ob hier ein Gerät eigenständig den Host über ein Ereignis informieren würde. Dies ist aber nicht der Fall. Es handelt sich lediglich über ein Pollingverfahren. Der Polling wird immer nur von Host gesteuert. Der Zeittakt in 1ms Schritten wählbar (1ms, 2ms.. 128ms). Ein Interrupt-Transfer garantiert das Nichtüberschreiten der Zeitdauer zwischen den Transaktionsversuchen. Es gibt also keine garantierte Datenrate, sondern eine garantierte Maximalzeit zwischen den Transaktionen. Vor dem Konfigurieren eines Pipes für den Interrupt-Transfer vergleicht der Host die angeforderte Puffergröße, um zu ermitteln, ob die notwendige Bandbreite zur 25