14Aug

Gibt es ein aktuelles USB-Kommunikationsprotokoll?

click fraud protection

Die meisten von uns denken nie an unsere USB-Geräte, wir schließen sie einfach an und vergessen sie. Aber was ist, wenn Sie der neugierige Typ sind, der mehr darüber wissen möchte, wie USB funktioniert? Der heutige SuperUser Q & A Beitrag hat die Antworten auf die Fragen eines neugierigen Lesers.

Die heutige Frage &Die Antwortsitzung kommt dank SuperUser, einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites, zu uns.

Foto mit freundlicher Genehmigung von Evilelka Kowalski( Flickr).

Die Frage

SuperUser-Leser 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 Verbindung, Kommunikation und Stromversorgung zwischen verwendet werdenComputer und elektronische Geräte.

Aber gibt es ein aktuelles USB-Kommunikationsprotokoll ?Mein Verständnis ist, dass:

  1. Sie verbinden ein USB-Gerät mit einer Maschine( Ubuntu oder jede Art von Linux zum Beispiel).
  2. instagram viewer
  3. Linux findet den Gerätetreiber für dieses Gerät irgendwie( Bonus, wenn Sie wissen! ) und lädt es.
  4. Das Gerät ist jetzt unter /dev/ mit dem Gerät verbunden.
  5. Benutzerbereichs-Apps können nun das /dev/ lesen und in den schreiben, und der Treiber verarbeitet die Low-Level-Eingabe und -Ausgabe für das zugrunde liegende Gerät / die Hardware.

Soweit ich das beurteilen kann, erscheint ein USB-Kommunikationsprotokoll nirgendwo in diesem Ablauf. Wenn mein Verständnis stimmt, ist der USB nur die Kabel- und elektrische Verbindung zwischen dem PC und dem Gerät.

Bin ich hier falsch? Implementiert USB tatsächlich eine Art Low-Level-Protokoll, das den obigen Fluss unterstreicht? Wenn ja, was ist das und wie funktioniert es bei einer 30.000-Fuß-Ansicht?

Gibt es ein aktuelles USB-Kommunikationsprotokoll?

Die Antwort

SuperUser RedGrittyBrick und projectdp haben die Antwort für uns. Zuerst, RedGrittyBrick:

Ja( siehe USB-Protokolle).

Wie ich es verstehe, definiert die USB-Spezifikation einen komplexen Satz von geschichteten Protokollen und Geräteprofilen.

Zum Beispiel können USB-Geräte High-Level-Vorlagen wie Massenspeicher, Tastatur, Human Interface Device usw. entsprechen und von einem generischen Gerätetreiber verwaltet werden. Einige USB-Geräte können auf einer niedrigeren Ebene kommunizieren, so dass die Low-Level-USB-Unterstützung des Betriebssystems erkennen kann, dass gerätespezifische höhere Treiber benötigt werden.

Gefolgt von der Antwort von projectdp:

Frage

Gibt es ein Low-Level-USB-Kommunikationsprotokoll in Aktion und was ist es?

Antwort

Ja, da ist. Die USB-Spezifikation enthält das USB-Protokoll, das die Art definiert, wie der Bus auf einer Bit-Ebene verwendet wird. Dies wäre das Low-Level-Protokoll, das den Protokollen höherer Ebene( d. H. Massenspeicher, HID usw.) zugrunde liegt.

Für Details zur Funktionsweise des USB-Protokolls ist dieses OSDev-Wiki hilfreich. Hier ist eine weitere interessante Beschreibung, die Sequenzdiagramme verwendet, um die verschiedenen Datentransaktionen für das USB-Protokoll zu beschreiben.

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-fähigen Kernels aufgrund der USB-Spezifikation ein funktionierendes USB-Gerät über die Hardware und den Kernel erkannt. Auf der Hardware-Seite erfolgt die Erkennung durch den USB-Host-Controller. Dann übernimmt der Host-Controller-Treiber im Kernel und übersetzt die Low-Level-Bits auf dem Draht zu USB-Protokoll-formatierten Informationen. Diese Information wird dann im usbcore-Treiber im Kernel eingetragen.

Ich paraphrasierte von diesem ausgezeichneten Opensourceforu-Artikel, der im Linux-Kontext viel mehr Details und Klarheit über Ihre Frage bietet.

Überprüfe den Rest der lebhaften Diskussion über den Thread-Link unten!

Haben Sie etwas zur Erklärung hinzuzufügen? Ton in den Kommentaren ab. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange Benutzern lesen? Sehen Sie sich den vollständigen Diskussionsfaden hier an.