Majoritatea dintre noi nu ne gândim niciodată la dispozitivele noastre USB, ci doar le conectăm și uităm de ele. Dar dacă ești tipul curios care dorește să afle mai multe despre cum funcționează USB? Postarea de astăzi a SuperUser Q&A are răspunsurile la întrebările unui cititor curios.
Sesiunea de Întrebări și Răspunsuri de astăzi ne vine prin amabilitatea SuperUser - o subdiviziune a Stack Exchange, un grup de site-uri web de întrebări și răspunsuri bazat pe comunitate.
Fotografie oferită de Evilelka Kowalski (Flickr) .
Intrebarea
Cititorul SuperUser smeeb vrea să știe dacă există într-adevăr un protocol de comunicare USB real:
Potrivit Wikipedia, USB :
- Definește cablurile, conectorii și protocoalele de comunicații utilizate într-o magistrală pentru conexiune, comunicații și alimentare cu energie între computere și dispozitive electronice.
Dar există o realitate Protocol de comunicare USB ? Înțelegerea mea este că:
- Conectați un dispozitiv USB la o mașină (Ubuntu sau orice fel de Linux, de exemplu).
- Linux găsește cumva driverul de dispozitiv pentru acel dispozitiv ( bonus dacă știi! ) și îl încarcă.
- Dispozitivul este acum conectat sub / dev / theDevice .
- Aplicațiile de spațiu utilizator pot acum să citească și să scrie în / dev / theDevice iar driverul gestionează intrarea și ieșirea de nivel scăzut către dispozitivul / hardware-ul de bază.
Din câte îmi dau seama, a Protocol de comunicare USB nu apare nicăieri în acest flux. Dacă înțelegerea mea este corectă, USB-ul este doar cablul și conexiunea electrică dintre computer și dispozitiv.
Mă înșel aici? USB implementează de fapt un fel de protocol de nivel scăzut care subliniază fluxul de mai sus? Dacă da, ce este și cum funcționează la o vedere de 30.000 de picioare?
Există vreun protocol de comunicație USB?
Răspunsul
Contribuitorii SuperUser RedGrittyBrick și projectdp au răspunsul pentru noi. În primul rând, RedGrittyBrick:
Da ( vezi protocoalele USB ).
După cum am înțeles, specificația USB definește un set complex de protocoale stratificate și profiluri de dispozitiv.
De exemplu, dispozitivele USB se pot conforma șabloanelor de nivel înalt, cum ar fi stocarea în masă, tastatura, dispozitivul de interfață umană etc. și pot fi gestionate de un driver de dispozitiv generic. Unele dispozitive USB pot comunica la un nivel inferior, astfel încât suportul USB de nivel scăzut al sistemului de operare să recunoască necesitatea driverelor de nivel superior specifice dispozitivului.
Urmat de răspunsul de la projectdp:
Întrebare
Există un protocol de comunicație USB de nivel scăzut în acțiune și ce este?
Răspuns
Da este. Specificația USB include protocolul USB care definește modul în care autobuzul este utilizat la un nivel de biți. Acesta ar fi protocolul de nivel scăzut care stă la baza protocoalelor de nivel superior (adică stocare în masă, HID etc.).
Pentru detalii despre modul în care funcționează protocolul USB, acesta OSDev wiki este de ajutor. Iată alta descriere interesantă folosind diagrame de secvență pentru a descrie diferitele tranzacții de date pe protocolul USB.
Întrebare bonus
Cum găsește Linux și încarcă driverul de dispozitiv pentru acel dispozitiv?
Răspuns bonus
Pe Linux, când se utilizează un kernel USB, un dispozitiv USB funcțional va fi detectat prin hardware și kernel datorită specificațiilor USB. Pe partea hardware, detectarea se face de către controlerul de gazdă USB. Apoi, în nucleu, driverul controlerului gazdă preia și traduce biții de nivel scăzut de pe fir în informații formatate de protocol USB. Aceste informații sunt apoi populate în driverul usbcore din kernel.
Am parafrazat din acest excelent Articolul Opensourceforu , care are mult mai multe detalii și claritate despre întrebarea dvs. în contextul Linux.
Asigurați-vă că verificați restul discuției pline de viață prin intermediul legăturii de subiect distribuite mai jos!
Aveți ceva de adăugat la explicație? Sună în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori ai Stack Exchange? Consultați aici firul complet de discuție .