Inhaltsverzeichnis : Seite :
1. Einleitung 3
2. Einführung in den USB 4
2.1. Grundlegendes über den USB 4
2.2. Die Datenübertragung 4
2.2.1. Transferarten 5
2.2.2. BUS Topologie 5
2.2.3. Kommunikationsmodell und Endpoints 6
2.2.4. Enumeration/Renumeration 7
3. Verschiedene USB-Host-Controller 7
3.1. Gegenüberstellung unterschiedlicher Controller 7
3.2. Der AN2131 8
3.3. Ein einfaches Programmbeispiel 10
4. Ein EZUSB-Interface mit EEPROM 11
4.1. Grundlegendes 11
4.2. Aufbau und Funktion 11
4.2.1. Die Ports 12
4.2.2. Das EEPROM 12
5. Die EZ-USB Programmierung 12
5.1. Programmiertools und Vorgehensweise 12
5.2. Eine Abfrage des IO-Ports in C 13
5.3. Setzen des IO-Ports C 14
5.4. Beispiel eines Datentransfers vom AN2131 zum Windows-PC 15
5.5. Aufspielen eigener Firmware auf den AN2131 mit einer C Funktion 16
5.5.1. Beschreibung und Vorteile
6. USB - Treiberprogrammierung 17
6.1. Grundlegendes 17
6.2. Die Vendor ID 17
6.3. Das Driver - Development - Kit 17
6.4. Die Treiberdateien INF und SYS 18
6.5. Treiber generieren 19
6.6. eventuell auftretende Probleme 20
7. EZUSB Programmierung in JAVA 21
Grundlegende Probleme mit dem USB in Java 21
7.1.
Die Wrapper Klassen 21
7.2.
Eine DLL für Java Anwendungen 22
7.3.
Ein Programmbeispiel
7.4. 24
8. Literaturverzeichnis 25
9. Bildnachweis 25
- 2 -
1. Einleitung
Bei dem Einsatz von Computer-Peripherie aller Art für den PC ist der “universal serial bus” (USB) als Schnittstelle längst nicht mehr wegzudenken.
Er erleichtert dem Anwender die Installation neuer Geräte wie z.B. Scanner, Videokameras, Druckern … und ist gegenüber den bisher bekannten seriellen Bus-Systemen ein Kandidat mit einer sehr hohen Datenübertragungsgeschwindigkeit. All diese Neuerungen haben aber auch eine Schattenseite. Sehr einfache Interfaces und Anschlussmöglichkeiten von kleinen Geräten sind nicht mehr möglich. Eine Verbindung mit einem USB Gerät herzustellen ist komplex und kann nur mit Hilfe von speziellen Interfacebausteinen und speziellen Treibern bewältigt werden.
Daher möchte ich in dieser Arbeit eine Interfaceplatine vorstellen, mit deren Hilfe es möglich ist, eine einfache Kommunikation mit dem PC über USB herzustellen, um z.B. Messwerte zu übertragen. Ein Schwerpunkt meiner Arbeit ist die Abänderung eines Treibers für eigene USB Geräte, die Ansteuerung unter Windows mit C++ sowie ein Softwareinterface auf Basis der DLL Technologie, um einen Zugriff mit JAVA-Programmen auf den USB zu ermöglichen.
- 3 -
2. Einführung in den USB
2.1. Grundlegendes über den USB
Der USB (Universal Serial Bus) ist ein serieller Bus.
Daten werden wie bei der RS232 Schnittstelle nacheinander übertragen.
Im Unterschied zum USB kann die serielle Schnittstelle nur 1 Gerät verwalten. Der USB verwaltet bis zu 127 Geräte. Jedes angeschlossene Gerät hat eine Adresse und kann dadurch gezielt angesprochen werden.
Der USB ist mit dem Begriff „Plug and Play“ eng in einen Kontext zu bringen. Geräte können während der Laufzeit des Computers angeschlossen oder entfernt werden. Das entsprechende Betriebssystem erkennt das jeweilige Gerät an seiner vom Hersteller vergebenen Vendor / Geräte ID und lädt automatisch den entsprechenden Treiber oder führt ggf. eine Treiberinstallation durch (s. Kap. 6.2).
2.2. Die Datenübertragung
Alle Aktvitäten gehen bei der Datenübertragung vom PC aus. Daten werden in kurzen Paketen (8 bis 256 Byte) versendet und empfangen.
Der gesamte Datenverkehr hat einen Rahmen von einer Millisekunde. Innerhalb eines Rahmens ist es möglich, nacheinander mehrere Geräte zu verarbeiten. Dabei können Lowspeed- und Fullspeed-Pakete zusammen vorkommen. Werden mehrere Geräte angesprochen, sorgt ein Hub für die entsprechende Weiterleitung der Daten. Er verhindert auch, dass Fullspeed-Signale an Lowspeed-Geräte weitergeleitet werden.
Abb.1 USB-Datenpakete
Die Datenrate einer Low-Speed-Verbindung liegt bei 1,5Mb/s, die eines High-Speed Signals bei 12Mb/s. Diese Geschwindigkeiten werden vom Master vorgegeben. Die jeweiligen Geräte empfangen durch Synchronisation den für sie bestimmten Datenstrom. Es gibt Verfahren, die verhindern, dass die Synchronisierung verloren geht.
All diese Vorgänge werden allein von der jeweiligen Hardware des USB-Chips übernommen.
- 4 -
Abb.2 Datentransfer
2.2.1. Tranferarten
USB-Geräte können auf vier unterschiedliche Arten mit dem PC Daten austauschen (vgl.[2] ).
1. Control-Transfer: Zur Steuerung der Hardware werden Control-Requests verwendet. Sie arbeiten mit hoher Priorität und mit automatischer Fehlerüberwachung. Die Übertragungsrate ist hoch, da bis zu 64 Bytes in einem Request übertragen werden können. 2. Interrupt-Transfer: Von Geräten verwendet, die periodisch kleine Mengen an Daten liefern, wie z.B. Mäuse und Tastaturen. Dies geschieht dadurch, dass das Gerät periodisch, etwa alle 10 ms, nach neuen Daten fragt. Im Allgemeinen werden bis zu 8 Bytes übertragen. 3. Bulk-Transfer: Für größere Datenmengen, die eine Fehlerüberwachung benötigen, die aber nicht zeitkritisch sind. Beispiele sind Drucker und Scanner.
4. Isochronous-Transfer: Große Datenmengen mit einer definierten Datenrate, wie z.B. für Soundkarten. Es wird eine bestimmte Datenrate garantiert. Fehlerkorrektur findet nicht statt, da einzelne Übertragungsfehler weniger schlimm sind als Lücken in der Übertragung.
Für Anwendungen im Bereich Steuerungs- und Regelungstechnik bietet sich besonders der Control-Transfer an, bei dem hohe Datensicherheit mit hoher Übertragungsgeschwindigkeit gekoppelt werden.
2.2.2. BUS Topologie
Der USB Bus hat die als “Sternverteilung” bekannte Topologie. Den Sternpunkt bildet der USB-Root-Controller. Er ist meistens auf dem Mainboard angebracht. Eine der vielen Anschlussmöglichkeiten, vom Root-Controller ausgehend, zeigt folgende Grafik :
2.2.3. Kommunikationsmodell und Endpoints
Den Kern des Kommunikationsmodells bildet der USB Host (z.B. der Root-Controller im PC), der als Master arbeitet. Er verwaltet alle Aktivitäten auf den Datenleitungen, die an dem Port angeschlossen sind. Man nennt diese Form der Kommunikation “Host-Based-Comunication”.
Ablauf der Kommunikation:
- Der Host initialisiert alle 1ms ein SOF (start of a frame). Mit dieser Information werden Datenpakete von bis zu 255Bytes versendet. Das gesendete Frame enthält auch Daten über:
Wenn ein USB Gerät einen Transfer initialisiert, fragt es bei der USB-Systemsoftware auf dem Host (PC) an. Der Host akzeptiert die Übertragung oder lehnt sie ab. Wird der Transfer angenommen (ACK), wird eine Routine mit Handshaking und Startparametern abgearbeitet. Bei einer Ablehnung durch den Host (NAK) wird dies dem USB-Gerät gemeldet, und das Gerät wiederholt seine Anfrage, bis der Host die Daten annimmt und ein ACK zurücksendet.
Endpoints :
Ein zentraler Punkt im USB Kommunikationsmodell ist die Datenübertragung mit Pipes zwischen Host und Peripherie. Diese Pipes können weiter heruntergebrochen werden auf die sog. „small Pipes“. Jede „small Pipe“ benötigt für jeden Datentyp eine noch „kleinere“ „Tiny Pipe“. Jede „Tiny Pipe“, genannt Endpoint, trägt einen einmaligen Datentyp, der für die Kommunikation zwischen dem USB-Gerät und dem Host erforderlich ist.
Ein Multimedia-USB-Device z.B. hat mehrere parallele Endpoints für:
- Sprache (isochronus Transfer)
- Daten (Bulk Transfer)
- Setup Informationen (Control Transfer).
Der AN2131 Chip hat insgesamt 31 Endpoints zur Verfügung. Siehe [4]
2.2.4. Enumeration / Renumeration
Der Prozess des Anmeldens eines USB Gerätes nennt man Enumeration. [7]
Enumeration ist ein Feature der EZ-USB Familie. Der Begriff ist von der Firma Cypress geprägt und versteht das erneute Konfigurieren eines USB-Gerätes während der Laufzeit incl. des Hochladens neuer Firmware auf den Chip.
Abb.5 Enumeration /
Renumeration
3. Verschiedene USB -Controller
3.1. Gegenüberstellung unterschiedlicher Controller
Es steht eine große Anzahl an USB Bausteinen zur Verfügung. Für jede spezifische Anwendung kann der richtige Baustein hinsichtlich der folgenden generellen Anforderungen ausgewählt werden:
- Kosten
- Komplexität der an den Chip gestellten Aufgaben
- Endpreis des Gerätes
- Anforderungen an den Chip
- 7 -
Arbeit zitieren:
Niko Cyris, 2004, USB Programmierung in Java und C++ mit dem EZ USB AN2131 Baustein und Treiberprogrammierung, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Strategische Netzwerke als interorganisatorische Kooperationsform - Da...
BWL - Personal und Organisation
Seminararbeit, 34 Seiten
Auswirkungen von Wissensmanagement auf die Geschäftsprozesse eines Unt...
Informatik - Wirtschaftsinformatik
Diplomarbeit, 85 Seiten
Auswirkungen des mittleren und höheren Managements auf das Krankenhaus...
Ausgewählte Aspekte und entspr...
Studienarbeit, 26 Seiten
Prozessmanagement - Inhalte und Stellenwert für die Unternehmensgestal...
BWL - Unternehmensführung, Management, Organisation
Seminararbeit, 17 Seiten
Möglichkeiten und Grenzen des Einsatzes von Wissensmanagementsystemen ...
Soziologie - Arbeit, Beruf, Ausbildung, Organisation
Diplomarbeit, 128 Seiten
Bildungsmanagement: Qualifikationsprofil für Bildungsmanager
Pädagogik - Erwachsenenbildung
Hausarbeit (Hauptseminar), 26 Seiten
Alternative Formen der Unternehmenskooperation: industrielle Anbieterk...
BWL - Unternehmensführung, Management, Organisation
Hausarbeit (Hauptseminar), 22 Seiten
Was ist Wissenschaft und Erkenntnistheorie
Philosophie - Theoretische (Erkenntnis, Wissenschaft, Logik, Sprache)
Referat (Ausarbeitung), 10 Seiten
Was ist Wissenschaft? – Was ist Pflegewissenschaft?
Referat (Ausarbeitung), 17 Seiten
Zu den Begriffen 'Bildung und Qualifikation'
Pädagogik - Allgemeine Didaktik, Erziehungsziele, Methoden
Hausarbeit, 11 Seiten
Soziologie - Arbeit, Beruf, Ausbildung, Organisation
Referat (Ausarbeitung), 28 Seiten
Wissensnutzung zur Optimierung von Geschäftsprozessen in Unternehmunge...
BWL - Unternehmensführung, Management, Organisation
Seminararbeit, 29 Seiten
Niko Cyris's Text USB Programmierung in Java und C++ mit dem EZ USB AN2131 Baustein und Treiberprogrammierung ist nun auf dem Buchmarkt erhältlich
Niko Cyris hat den Text USB Programmierung in Java und C++ mit dem EZ USB AN2131 Baustein und Treiberprogrammierung veröffentlicht
Niko Cyris hat einen neuen Text hochgeladen
Parallele Programmierung spielend gelernt mit dem Java-Hamster-Modell
Programmierung mit Java-Thread...
Dietrich Boles
Scientific Engineering of Distributed Java Applications.
Third International Workshop, ...
Egidio Astesiano, Gianna Reggio, Nicoals Guelfi
Scientific Engineering for Distributed Java Applications
International Workshop, FIDJI ...
Nicolas Guelfi, Egidio Astesiano, Gianna Reggio
Professional BlazeDS: Creating Rich Internet Applications with Flex an...
Creating Rich Internet Applica...
Shashank Tiwari
Niko Cyris
Mehr Informationen zum Inhalt.
Hallo alle zusammen !
in der Beschreibung des Verlages kommt vielleicht der Inhalt meiner Arbeit "nicht so ganz ans Tageslicht".
Die Arbeit umfasst vollständig, wie ein USB Bus Modul aufgebaut wird. Auch Schaltpläne und Layouts zum Ätzten von Platinen sind dabei.
Die Arbeit beschreibt außerdem, wie in C++ ein Treiber geschrieben werden kann und wie eine einfache Protabfrage am USB Baustein realisiert wird. (Inkl. DLL Programmierung)
Die Einbindung in JAVA als Wrapper Klasse wird auch erklärt.
Einige Grundlagen zum USB wurden auch erläutert.
Bei Fragen zu meiner Arbeit können Sie mir gerne eine E-Mail schreiben: Niko1979@GMX.DE
am Friday, February 11, 2005-