14Aug

Czy istnieje aktualny protokół komunikacji USB?

Większość z nas nigdy nie zastanawia się nad naszymi urządzeniami USB, po prostu je podłączamy i zapominamy o nich. Ale co, jeśli jesteś ciekawym typem, który chce wiedzieć więcej o tym, jak działa USB?Dzisiejszy post SuperUser Q & A ma odpowiedzi na ciekawe pytania czytelnika.

Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.

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

Pytanie Czytnik

SuperUser smeeb chce wiedzieć, czy rzeczywiście istnieje rzeczywisty protokół komunikacyjny USB:

Według Wikipedii, USB:

  • Definiuje kable, złącza i protokoły komunikacyjne używane w magistrali do połączenia, komunikacji i zasilania międzykomputery i urządzenia elektroniczne.

Ale czy istnieje USB Communication Protocol ?Rozumiem, że:

  1. Podłączasz urządzenie USB do komputera( na przykład Ubuntu lub Linux).
  2. Linux odnajduje sterownik urządzenia dla tego urządzenia( premia , jeśli wiesz! ) i ładuje je.
  3. Urządzenie jest teraz podłączone zgodnie z /dev/ theDevice .
  4. Aplikacje przestrzeni użytkownika mogą teraz odczytywać i zapisywać do /dev/ theDevice , a sterownik obsługuje wejścia i wyjścia niskiego poziomu do bazowego urządzenia / sprzętu.

O ile wiem, nie pojawia się w tym strumieniu. Jeśli moje zrozumienie jest prawidłowe, USB to tylko kabel i połączenie elektryczne między komputerem a urządzeniem.

Czy się tu mylę?Czy USB rzeczywiście implementuje jakiś protokół niskiego poziomu, który podkreśla powyższy przepływ? Jeśli tak, co to jest i jak działa w widoku 30 000 stóp?

Czy istnieje rzeczywisty protokół komunikacji USB?

Odpowiedź Odpowiedzi

SuperUser RedGrittyBrick i projectdp mają dla nas odpowiedź.Po pierwsze, RedGrittyBrick:

Tak( patrz protokoły USB).

Jak rozumiem, specyfikacja USB definiuje złożony zestaw warstwowych protokołów 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 w systemie operacyjnym może rozpoznać, że potrzebne są sterowniki specyficzne dla określonego urządzenia.

Po odpowiedzi z projektu dd:

Pytanie

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

Odpowiedź

Tak, jest. Specyfikacja USB zawiera protokół USB, który określa sposób korzystania z magistrali na poziomie bitowym. Byłby to protokół niskiego poziomu, który leży u podstaw protokołów wyższego poziomu( tj. Pamięci masowej, HID itp.).

Aby dowiedzieć się, jak działa protokół USB, ta wiki OSDev jest pomocna. Oto kolejny ciekawy opis wykorzystujący diagramy sekwencji do opisu różnych transakcji danych na podstawie protokołu USB.

Pytanie premiowe

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

Dodatkowa odpowiedź

W systemie Linux podczas korzystania z jądra obsługującego USB, działające urządzenie USB zostanie wykryte przez sprzęt i jądro ze względu na specyfikację USB.Po stronie sprzętowej wykrywanie odbywa się za pomocą kontrolera hosta USB.Następnie w kernelu sterownik kontrolera hosta przejmuje i tłumaczy bity niskiego poziomu na drucie na informacje w formacie USB.Ta informacja zostanie następnie zapełniona w sterowniku usbcore w jądrze.

Parafrazuję ten znakomity artykuł Opensourceforu, który ma znacznie więcej szczegółów i jasności dotyczących twojego pytania w kontekście Linuksa.

Pamiętaj, aby zapoznać się z resztą żywych dyskusji za pośrednictwem łącza wątku udostępnionego poniżej!

Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.