Većina od nas nikada ne daje puno misli na naše USB uređaje, samo ih priključite i zaboraviti o njima. Ali što ako ste znatiželjni tip koji želi znati više o tome kako funkcionira USB? Danas SuperUser Q & A post ima odgovore na znatiželjna pitanja čitatelja.
Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.
Fotografija ljubaznošću Evilelke Kowalski (Flickr).
SuperUser čitač smeeb želi znati postoji li doista aktualni USB komunikacijski protokol:
Prema Wikipediji, USB:
- Određuje kabele, konektore i komunikacijske protokole koji se koriste u autobusu za povezivanje, komunikaciju i napajanje između računala i elektroničkih uređaja.
Ali postoji li stvarna USB komunikacijski protokol? Moje razumijevanje je sljedeće:
- Spojite USB uređaj na računalo (na primjer, Ubuntu ili bilo koja vrsta Linuxa).
- Linux na neki način pronađe upravljački program za taj uređaj (bonus ako znate!) i učitava ga.
- Uređaj je sada povezan / Dev / theDevice.
- Aplikacije za korisničke prostore sada mogu čitati i pisati / Dev / theDevice i upravljački program upravlja ulazom i izlazom male razine na osnovni uređaj / hardver.
Koliko ja mogu reći, a USB komunikacijski protokol se ne pojavljuje nigdje u ovom protoku. Ako je moje razumijevanje ispravno, USB je samo kabelska i električna veza između računala i uređaja.
Jesam li ovdje u krivu? Da li USB zapravo provodi neku vrstu niske razine protokol koji naglašava protok iznad? Ako da, što je to i kako funkcionira na 30.000 stopa?
Postoji li stvarni USB komunikacijski protokol?
RedGrittyBrick i projectdp za SuperUser suradnike imaju odgovor za nas. Prvo, RedGrittyBrick:
Da (pogledajte USB protokole).
Kao što sam je razumio, USB spec. Definira složeni niz slojevitih protokola i profila uređaja.
Na primjer, USB uređaji mogu se prilagoditi predlošcima visoke razine kao što su masovna pohrana, tipkovnica, uređaj za ljudsko sučelje itd., A upravlja se genericnim upravljačkim programom uređaja. Neki USB uređaji mogu komunicirati na nižoj razini tako da podrška za USB na niskoj razini operacijskog sustava može prepoznati da su potrebni upravljački programi za višu razinu uređaja.
Slijedi odgovor projekta:
Pitanje
Postoji li USB komunikacijski protokol niske razine u akciji i što je to?
Odgovor
Da tamo je. USB specifikacija uključuje USB protokol koji definira način korištenja sabirnice na razini malo. To bi bio niskopropusni protokol koji je podložan protokolu viših razina (tj. Masovno pohranjivanje, HID, itd.).
Za pojedinosti o tome kako funkcionira USB protokol, ovaj OSDev wiki je koristan. Evo još jednog zanimljivog opisa pomoću dijagrami shema za opisivanje različitih transakcija podataka po USB protokolu.
Bonus pitanje
Kako Linux pronalazi i učitava upravljački program uređaja za taj uređaj?
Bonus odgovor
Na Linuxu kada koristite USB kernel, radni USB uređaj će se otkriti preko hardvera i kernela zbog USB specifikacije. Na strani hardvera detekcija obavlja USB kontroler računala. Zatim u kernelu upravljački program kontrolera glavnog računala preuzima i prevodi niske razine bitova na žicu na formatirane informacije o USB protokolu. Te informacije zatim dobivaju naseljen u usbcore upravljačkom programu u kernelu.
Parafrazirao sam od ovog izvrsnog članka o Opensourceforu, koji ima puno više detalja i jasnoće o vašem pitanju u kontekstu Linuxa.
Svakako provjerite ostatak živahne rasprave putem veze niti koja je podijeljena u nastavku!
Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.