Skip to content

Czy istnieje rzeczywisty protokół komunikacyjny USB?

25 de lipiec de 2021
is there an actual usb communication protocol 00

Większość z nas nigdy nie zastanawia się nad urządzeniami USB, po prostu je podłączamy i zapominamy o nich. Ale co, jeśli jesteś ciekawskim typem, który chce wiedzieć więcej o działaniu USB? Dzisiejszy post z pytaniami i odpowiedziami dla SuperUser zawiera odpowiedzi na pytania ciekawskich czytelników.

Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser — pododdziału Stack Exchange, społecznościowej grupy witryn internetowych z pytaniami i odpowiedziami.

Zdjęcie dzięki uprzejmości Evilelka Kowalski (Flickr).

Pytanie

Czytnik SuperUser smeeb chce wiedzieć, czy naprawdę istnieje rzeczywisty protokół komunikacyjny USB:

Według Wikipedii USB:

  • Definiuje kable, złącza i protokoły komunikacyjne używane w magistrali do połączeń, komunikacji i zasilania między komputerami i urządzeniami elektronicznymi.

Ale czy istnieje rzeczywisty? Protokół komunikacyjny USB? Rozumiem, że:

  1. Podłączasz urządzenie USB do komputera (na przykład Ubuntu lub dowolny rodzaj Linuksa).
  2. Linux w jakiś sposób znajduje sterownik dla tego urządzenia (bonus, jeśli wiesz!) i ładuje go.
  3. Urządzenie jest teraz podłączone pod /dev/urządzenie.
  4. Aplikacje w przestrzeni użytkownika mogą teraz czytać i pisać do /dev/urządzenie a sterownik obsługuje wejścia i wyjścia niskiego poziomu do bazowego urządzenia/sprzętu.

O ile wiem, a Protokół komunikacyjny USB nie pojawia się nigdzie w tym przepływie. Jeśli dobrze rozumiem, USB to tylko kabel i połączenie elektryczne między komputerem a urządzeniem.

Czy się mylę tutaj? Czy USB faktycznie implementuje jakiś protokół niskopoziomowy, który podkreśla powyższy przepływ? Jeśli tak, to co to jest i jak działa przy widoku 30 000 stóp?

Czy istnieje rzeczywisty protokół komunikacyjny USB?

Odpowiedź

Współtwórcy SuperUser RedGrittyBrick i projectdp mają dla nas odpowiedź. Po pierwsze, RedGrittyBrick:

TAk (zobacz protokoły USB).

Jak rozumiem, specyfikacja USB definiuje złożony zestaw protokołów warstwowych i profili urządzeń.

Na przykład urządzenia USB mogą być zgodne z szablonami wysokiego poziomu, takimi jak pamięć masowa, klawiatura, urządzenie interfejsu użytkownika itp. i mogą być zarządzane przez ogólny sterownik urządzenia. Niektóre urządzenia USB mogą komunikować się na niższym poziomie, tak że obsługa USB niskiego poziomu systemu operacyjnego może rozpoznać, że potrzebne są sterowniki wyższego poziomu specyficzne dla danego urządzenia.

Następnie odpowiedź od projectdp:

Pytanie

Czy istnieje protokół komunikacyjny USB niskiego poziomu i co to jest?

Odpowiadać

Tak jest. Specyfikacja USB obejmuje protokół USB, który określa sposób wykorzystania magistrali na poziomie bitowym. Byłby to protokół niskiego poziomu, który stanowi podstawę protokołów wyższego poziomu (tj. pamięci masowej, HID itp.).

Aby uzyskać szczegółowe informacje na temat działania protokołu USB, to wiki OSDev jest pomocny. Oto kolejny ciekawy opis wykorzystanie diagramów sekwencji do opisania różnych transakcji danych w protokole USB.

Pytanie bonusowe

Jak Linux znajduje i ładuje sterownik urządzenia dla tego urządzenia?

Odpowiedź bonusowa

W systemie Linux podczas korzystania z jądra z obsługą USB działające urządzenie USB zostanie wykryte przez sprzęt i jądro zgodnie ze specyfikacją USB. Po stronie sprzętu wykrywanie odbywa się przez kontroler hosta USB. Następnie w jądrze sterownik kontrolera hosta przejmuje i tłumaczy bity niskiego poziomu w przewodzie na informacje sformatowane w protokole USB. Informacje te są następnie umieszczane w sterowniku usbcore w jądrze.

Parafrazowałem z tego znakomitego Artykuł na temat Opensourceforu, który zawiera znacznie więcej szczegółów i jasności pytania w kontekście Linuksa.


Koniecznie sprawdź resztę ożywionej dyskusji za pośrednictwem linku do wątku udostępnionego poniżej!

Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych doświadczonych technologicznie użytkowników Stack Exchange? Sprawdź pełny wątek dyskusji tutaj.

Czy ten post był pomocny?