Ali obstaja dejanski komunikacijski protokol USB?
Večina od nas nikoli ne misli veliko na naše USB naprave, mi samo jih priključite in pozabite na njih. Kaj pa, če ste radovedni tip, ki želi izvedeti več o tem, kako deluje USB? Današnja objava za vprašanja in odgovore SuperUser ima odgovore na vprašanja radovednega bralca.
Današnja seja vprašanj in odgovorov prihaja z namenom SuperUser-a, ki je del skupine Stack Exchange, ki temelji na skupnostih spletnih mest za vprašanja in odgovore.
Fotografija z dovoljenjem Evilelke Kowalski (Flickr).
Vprašanje
Bralnik SuperUser smeeb želi vedeti, ali resnično obstaja USB komunikacijski protokol:
V skladu s Wikipedijo, USB:
- Določa kable, priključke in komunikacijske protokole, ki se uporabljajo v vodilu za povezavo, komunikacijo in napajanje med računalniki in elektronskimi napravami.
Toda ali obstaja resnična Komunikacijski protokol USB? Moje razumevanje je, da:
- Napravo USB povežete s strojem (npr. Ubuntu ali katerikoli Linux).
- Linux nekako najde gonilnik naprave za to napravo (bonus, če veste!) in jo naloži.
- Naprava je zdaj povezana v / dev / theDevice.
- Aplikacije za uporabniški prostor lahko zdaj berejo in pišejo / dev / theDevice in gonilnik upravlja z nizko stopnjo vhoda in izhoda v osnovno napravo / strojno opremo.
Kolikor vem, a Komunikacijski protokol USB ni nikjer v tem toku. Če je moje razumevanje pravilno, USB je samo kabel in električna povezava med računalnikom in napravo.
Sem narobe tukaj? Ali USB dejansko izvaja nekakšen protokol nizke ravni, ki poudarja tok zgoraj? Če je odgovor pritrdilen, kaj je to in kako deluje pri 30.000 metrih?
Ali obstaja dejanski komunikacijski protokol USB?
Odgovor
SuperUser prispevki RedGrittyBrick in projectdp imajo odgovor za nas. Prvič, RedGrittyBrick:
Da (glejte protokole USB).
Kot sem razumel, specifikacija USB opredeljuje kompleksen niz slojevitih protokolov in profilov naprav.
Naprave USB lahko na primer ustrezajo predlogam na visoki ravni, kot so masovni pomnilnik, tipkovnica, človeški vmesnik itd. In jih upravlja generični gonilnik naprave. Nekatere naprave USB lahko komunicirajo na nižji ravni, tako da podpora nizke ravni USB operacijskega sistema lahko prepozna, da so potrebni gonilniki za višjo raven, ki so značilni za napravo..
Sledi odgovor iz projectdp:
Vprašanje
Ali obstaja akcijski komunikacijski protokol nizke ravni USB in kaj je to?
Odgovor
Da, obstaja. Specifikacija USB vključuje protokol USB, ki določa način uporabe vodila na nivoju bitov. To bi bil protokol nizke ravni, ki je podlaga za protokole višje ravni (tj. Množično shranjevanje, HID itd.).
Za podrobnosti o delovanju protokola USB je ta OSDev wiki koristen. Tu je še en zanimiv opis, ki uporablja diagrame zaporedja za opis različnih podatkovnih transakcij po protokolu USB.
Vprašanje za bonus
Kako Linux najde in naloži gonilnik naprave za to napravo?
Bonus Answer
Na Linuxu, ko uporabljate jedro, ki podpira USB, bo delovna naprava USB zaznana prek strojne opreme in jedra zaradi specifikacije USB. Na strani strojne opreme zaznavo izvede gostiteljski krmilnik USB. Nato v jedru prevzame gonilnik gostiteljskega krmilnika in prevede nizke nivoje bitov na žici v formatirane podatke protokola USB. Te informacije se nato zapolnijo v gonilniku usbcore v jedru.
Parafraziral sem iz tega odličnega članka Opensourceforu, ki ima veliko več podrobnosti in jasnosti glede vašega vprašanja v kontekstu Linuxa.
Preverite preostalo živahno razpravo preko spodnje povezave, ki si jo delite!
Imate kaj dodati pojasnilu? Zvok v komentarjih. Želite prebrati več odgovorov drugih uporabnikov tehnologije Stack Exchange? Oglejte si celotno nit razprave tukaj.