Gibt es ein aktuelles USB-Kommunikationsprotokoll?
Die meisten von uns haben nie viel über unsere USB-Geräte nachgedacht, wir schließen sie einfach an und vergessen sie. Aber was ist, wenn Sie der neugierige Typ sind, der mehr über USB wissen möchte? Der heutige Q & A-Beitrag von SuperUser enthält Antworten auf die Fragen eines neugierigen Lesers.
Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.
Foto mit freundlicher Genehmigung von Evilelka Kowalski (Flickr).
Die Frage
SuperUser Reader smeeb möchte wissen, ob es tatsächlich ein USB-Kommunikationsprotokoll gibt:
Laut Wikipedia, USB:
- Definiert die Kabel, Anschlüsse und Kommunikationsprotokolle, die in einem Bus für die Verbindung, Kommunikation und Stromversorgung zwischen Computern und elektronischen Geräten verwendet werden.
Aber gibt es eine tatsächliche? USB-Kommunikationsprotokoll? Ich verstehe das so:
- Sie verbinden ein USB-Gerät mit einer Maschine (z. B. Ubuntu oder Linux).
- Linux findet den Gerätetreiber für dieses Gerät irgendwie (Bonus, wenn Sie wissen!) und lädt es.
- Das Gerät ist jetzt unter verbunden / dev / theDevice.
- Benutzerraum-Apps können jetzt lesen und schreiben / dev / theDevice Der Treiber übernimmt die Eingabe und Ausgabe auf niedriger Ebene an das zugrunde liegende Gerät / die zugrunde liegende Hardware.
Soweit ich das beurteilen kann, a USB-Kommunikationsprotokoll erscheint nirgendwo in diesem Fluss. Wenn ich das richtig verstanden habe, ist USB nur die Kabel- und elektrische Verbindung zwischen dem PC und dem Gerät.
Irre ich mich hier Implementiert USB tatsächlich eine Art Low-Level-Protokoll, das den Fluss oben unterstreicht? Wenn ja, was ist das und wie funktioniert es bei 30.000 Fuß Sicht?
Gibt es ein aktuelles USB-Kommunikationsprotokoll??
Die Antwort
Die SuperUser-Mitwirkenden RedGrittyBrick und projectdp haben die Antwort für uns. Als Erstes RedGrittyBrick:
Ja (siehe USB-Protokolle).
Soweit ich es verstehe, definiert die USB-Spezifikation einen komplexen Satz geschichteter Protokolle und Geräteprofile.
Zum Beispiel können USB-Geräte hochrangigen Vorlagen wie Massenspeicher, Tastatur, Benutzerschnittstellengerät usw. entsprechen und von einem generischen Gerätetreiber verwaltet werden. Einige USB-Geräte können auf einer niedrigeren Ebene kommunizieren, so dass die USB-Unterstützung des Betriebssystems für niedrige Versionen erkennen kann, dass gerätespezifische Treiber für höhere Ebenen erforderlich sind.
Gefolgt von der Antwort von projectdp:
Frage
Gibt es ein Low-Level-USB-Kommunikationsprotokoll und was ist es??
Antworten
Ja da ist. Die USB-Spezifikation beinhaltet das USB-Protokoll, das die Verwendung des Busses auf Bitebene definiert. Dies wäre das Protokoll auf niedriger Ebene, das den Protokollen auf höherer Ebene (d. H. Massenspeicher, HID usw.) zugrunde liegt..
Dieses OSDev-Wiki ist hilfreich, wenn Sie wissen möchten, wie das USB-Protokoll funktioniert. Hier ist eine weitere interessante Beschreibung mit Sequenzdiagrammen zur Beschreibung der verschiedenen Datentransaktionen gemäß dem USB-Protokoll.
Bonus-Frage
Wie findet und lädt Linux den Gerätetreiber für dieses Gerät??
Bonus-Antwort
Unter Linux wird bei Verwendung eines USB-aktivierten Kernels ein funktionierendes USB-Gerät aufgrund der USB-Spezifikation über Hardware und Kernel erkannt. Hardwareseitig erfolgt die Erkennung durch den USB Host Controller. Im Kernel übernimmt dann der Host Controller Driver und konvertiert die Low-Level-Bits des Kabels in USB-Protokoll-formatierte Informationen. Diese Informationen werden dann im Kernel mit dem Usbcore-Treiber gefüllt.
Ich habe diesen hervorragenden Opensourceforu-Artikel umschrieben, der viel detaillierter und klarer über Ihre Frage im Linux-Kontext ist.
Überprüfen Sie den Rest der lebhaften Diskussion über den unten angegebenen Thread-Link!
Haben Sie der Erklärung etwas hinzuzufügen? Sound off in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.