Connect with us

Wie man

Gibt es ein aktuelles USB-Kommunikationsprotokoll?

Gibt es ein aktuelles USB-Kommunikationsprotokoll?

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

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? Mein Verständnis ist das:

  1. Sie schließen ein USB-Gerät an einen Computer an (z. B. Ubuntu oder Linux).
  2. Linux findet den Gerätetreiber für dieses Gerät irgendwie () und lädt ihn.
  3. Das Gerät ist jetzt unter angeschlossen.
  4. User Space-Apps können jetzt lesen und schreiben, und der Treiber übernimmt die Eingabe und Ausgabe auf niedriger Ebene für das zugrunde liegende Gerät / die zugrunde liegende Hardware.

Soweit ich das beurteilen kann, erscheint a nirgendwo in diesem Fluss. Wenn ich das richtig verstehe, ist der USB nur das Kabel und die elektrische Verbindung zwischen dem PC und dem Gerät.

Liege ich hier falsch Implementiert USB tatsächlich ein Low-Level-Protokoll, das den obigen Ablauf unterstreicht? Wenn ja, was ist das und wie funktioniert es bei einer Sicht von 30.000 Fuß?

Gibt es ein aktuelles USB-Kommunikationsprotokoll?

Die Antwort

Die SuperUser-Mitwirkenden RedGrittyBrick und projectdp haben die Antwort für uns. Zuerst RedGrittyBrick:

Ja (Siehe USB-Protokolle).

Soweit ich weiß, definiert die USB-Spezifikation einen komplexen Satz geschichteter Protokolle und Geräteprofile.

Beispielsweise können USB-Geräte Vorlagen auf hoher Ebene wie Massenspeicher, Tastatur, Benutzeroberflächengerät usw. entsprechen und von einem generischen Gerätetreiber verwaltet werden. Einige USB-Geräte können auf einer niedrigeren Ebene kommunizieren, sodass die USB-Unterstützung des Betriebssystems auf niedriger Ebene erkennen kann, dass gerätespezifische Treiber auf höherer Ebene benötigt werden.

Gefolgt von der Antwort von projectdp:

Frage

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

Antworten

Ja da ist. Die USB-Spezifikation enthält das USB-Protokoll, das die Art und Weise definiert, wie der Bus auf Bitebene verwendet wird. Dies wäre das Protokoll auf niedriger Ebene, das den Protokollen auf höherer Ebene zugrunde liegt (dh Massenspeicher, HID usw.).

Einzelheiten zur Funktionsweise des USB-Protokolls finden Sie hier OSDev-Wiki ist hilfreich. Hier ist noch einer interessante Beschreibung Verwenden von 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?

Bonusantwort

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 Hardwareseite erfolgt die Erkennung durch den USB-Host-Controller. Im Kernel übernimmt dann der Host-Controller-Treiber und übersetzt die Low-Level-Bits auf dem Kabel in mit dem USB-Protokoll formatierte Informationen. Diese Informationen werden dann im usbcore-Treiber im Kernel ausgefüllt.

Ich habe dies ausgezeichnet umschrieben Opensourceforu Artikel, die viel detaillierter und klarer über Ihre Frage im Linux-Kontext ist.

Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie weitere Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Den vollständigen Diskussionsthread finden Sie hier.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia