Forum: Mikrocontroller und Digitale Elektronik USB.org Dokumente


von Jens (Gast)


Lesenswert?

Auf USB.org sind verschiedene Dokumente erhältlich. Beinhaltet die "USB 
3.2 Specification" auch die "USB 2.0 Specification". Die 2.0 ist 
immerhin von 2000.

Daher frage ich mich, welche ich zum einlesen verwenden soll?

von Dr. Sommer (Gast)


Lesenswert?

Sofern du nicht explizit USB 3.0 brauchst, lies die USB 2.0 
Spezifikation. Die ist immer noch gültig, und die meisten 
USB-Peripherien in Mikrocontrollern unterstützten USB 2.0.

von W.S. (Gast)


Lesenswert?

Jens schrieb:
> Daher frage ich mich, welche ich zum einlesen verwenden soll?

Sammle, was du kriegen kannst. Es gibt da nicht nur ein paper, sondern 
einen ganzen Sack davon - und jedes baut im Grunde auf einem anderen 
auf. Aber normalerweise wollen die für's Papier richtig Geld haben.

W.S.

von Bernd K. (prof7bit)


Lesenswert?

Und besorg Dir außerdem das Buch "USB Complete"

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Und meinen supertollen Artikel USB-Tutorial mit STM32.

von Arno (Gast)


Lesenswert?

...und wenn du etwas lesen willst, wo du noch eine Chance hast, es 
nachzuvollziehen, dann fang mit USB1.1 an. Ja, das ist uralt. Aber um 
die Grundlagen nachzuvollziehen, reicht es - und du hast viel, viel, 
viel weniger textuelle kreuz-und-quer-Verweise im Dokument (nach dem 
Motto "this behaviour depends on the status of ABC and DEF, oft ohne 
Links)

Zumindest war das 2002 so, als ich mal damit gearbeitet habe...

MfG, Arno

von W.S. (Gast)


Lesenswert?

Niklas G. schrieb:
> Und meinen supertollen Artikel

Ähemm..

"Anwendungen können anhand VID/PID direkt das korrekte Gerät finden, es 
muss nicht wie bei der seriellen Schnittstelle der richtige Port 
ausgewählt werden"

Das ist eine kühne Behauptung, die ich so nicht bestätigen kann. Bei 
USB-Geräten, die ein VCP darstellen, hat man in der Regel keine andere 
Chance, als der Reihe nach alle Ports von COM1..COMxyz durchzutesten, ob 
dieser Stream sich öffnen läßt oder nicht. Und wenn er sich öffnen läßt, 
dann ist noch immer nicht gesagt, daß es das richtige Gerät ist.

Also schreib mal, wie man es macht, daß man den richtigen COM-Port aus 
vorgegebener vid&pid  herausfindet.

W.S.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

W.S. schrieb:
> Das ist eine kühne Behauptung, die ich so nicht bestätigen kann. Bei
> USB-Geräten, die ein VCP darstellen, hat man in der Regel keine andere
> Chance, als der Reihe nach alle Ports von COM1..COMxyz durchzutesten, ob
> dieser Stream sich öffnen läßt oder nicht.

Ganz genau. Wenn man daher eben keinen VCP implementiert sondern ein 
"normales" USB-Gerät, auf welches man per Kernel-Treiber, libusb 
und/oder WinUSB zugreift, kann man darüber via VID&PID das Gerät finden. 
Ein Beispiel:

https://github.com/Erlkoenig90/usbclient/blob/master/src/main.cc#L101

Wenn man einen VCP implementiert, hat man aus Anwendungssicht einen 
Serial-Port mit genau den beschriebenen Nachteilen des Serial-Ports. Mit 
"Vorteile USB" ist natürlich nicht gemeint, dass man wieder auf Serial 
umadapterisiert (VCP)! Ein VCP vereint gewissermaßen die Nachteile von 
USB und Serial-Port, diesen Fall sollte man also nicht als Grundlage für 
die Suche nach USB-Vorteilen nehmen.

von Bernd K. (prof7bit)


Lesenswert?

W.S. schrieb:
> Also schreib mal, wie man es macht, daß man den richtigen COM-Port aus
> vorgegebener vid&pid  herausfindet.

Ich würd versuchen die Liste aller angeschlossenen USB-Geräte 
durchzugehen und schauen ob das gesuchte Gerät 
(VID/PID/Seriennummer/Geräteklasse) dabei ist und auf welchen COM-Port 
das gerade gemappt ist. Oder vielleicht kann man auch alle COM-Ports 
durchgehen und schauen welches Gerät das ist. Geht mit Sicherheit 
irgendwie.

von Christian R. (supachris)


Lesenswert?

W.S. schrieb:
> Das ist eine kühne Behauptung, die ich so nicht bestätigen kann. Bei
> USB-Geräten, die ein VCP darstellen, hat man in der Regel keine andere
> Chance, als der Reihe nach alle Ports von COM1..COMxyz durchzutesten, ob
> dieser Stream sich öffnen läßt oder nicht. Und wenn er sich öffnen läßt,
> dann ist noch immer nicht gesagt, daß es das richtige Gerät ist.

Richtig, das ist übler Hack, der leider immer noch von vielen als 
"Lösung" angesehen wird.
Gerade bei USB-Serialports geht das auch sauber umzusetzen.

W.S. schrieb:
> Also schreib mal, wie man es macht, daß man den richtigen COM-Port aus
> vorgegebener vid&pid  herausfindet.

VID/PID allein reicht nicht, dafür hat man bei der USB-Org ja 
glücklicherweise vorgesorgt, und die Seriennummer in den Standard 
geschrieben. Wenn der Hersteller bzw. der Implementierer die 
eineindeutig programmiert hat, lässt sich jedes Gerät zuordnen. Dann 
muss man "nur" noch in der Registry schauen, welches USB Gerät momentan 
am Rechner steckt und an einer anderen Stelle schauen, welche 
VID/PID/SerialNumber Kombi da drauf gemapt ist. Und das geht dann ganz 
ohne wildes Öffnen oder gar schon irgendwas auf ein unbekanntes Gerät 
schreiben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.