Startseite » wie man » Gibt es ein aktuelles USB-Kommunikationsprotokoll?

    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:

    1. Sie verbinden ein USB-Gerät mit einer Maschine (z. B. Ubuntu oder Linux).
    2. Linux findet den Gerätetreiber für dieses Gerät irgendwie (Bonus, wenn Sie wissen!) und lädt es.
    3. Das Gerät ist jetzt unter verbunden / dev / theDevice.
    4. 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.