Există un protocol de comunicare USB actual?
Cei mai mulți dintre noi nu ne gândim prea mult la dispozitivele USB, le conectăm și le uităm. Dar dacă sunteți tipul curios care vrea să știe mai multe despre cum funcționează USB-ul? Postul de astăzi SuperUser Q & A are răspunsurile la întrebările curioase ale cititorului.
Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.
Fotografie prin amabilitatea lui Evilelka Kowalski (Flickr).
Intrebarea
Cititorul super-utilizator smeeb dorește să știe dacă există într-adevăr un protocol de comunicare USB actual:
Potrivit Wikipedia, USB:
- Definește cablurile, conectorii și protocoalele de comunicații utilizate într-o magistrală pentru conectare, comunicație și alimentare între calculatoare și dispozitive electronice.
Dar există o realitate Protocolul de comunicare USB? Înțelegerea mea este că:
- Conectați un dispozitiv USB la o mașină (de exemplu, Ubuntu sau orice alt tip de Linux).
- Linux găsește cumva driverul dispozitivului pentru acel dispozitiv (bonus dacă știți!) și îl încarcă.
- Aparatul este acum conectat sub / Dev / dispozitivului nu.
- Aplicațiile din spațiul de utilizator pot citi acum și pot scrie la / Dev / dispozitivului nu iar conducătorul auto gestionează intrarea și ieșirea la nivel inferior la dispozitivul / hardware-ul de bază.
În măsura în care pot spune, a Protocolul de comunicare USB nu apare nicăieri în acest flux. Dacă înțelegerea mea este corectă, USB-ul este doar conexiunea prin cablu și electric între PC și dispozitiv.
Am greșit aici? Dispune USB de fapt un tip 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ă un protocol real de comunicare USB?
Răspunsul
Utilizatorii SuperUser RedGrittyBrick și projectdp au răspunsul pentru noi. În primul rând, RedGrittyBrick:
Da (consultați protocoalele USB).
După cum am înțeles, spec. USB definește un set complex de protocoale stratificate și profiluri de dispozitive.
De exemplu, dispozitivele USB se pot conforma șabloanelor de nivel înalt, cum ar fi spațiul de stocare în masă, tastatura, dispozitivul de interfață umană etc. și pot fi gestionate de un driver generic de dispozitive. Unele dispozitive USB pot comunica la un nivel inferior, astfel încât suportul USB de nivel scăzut al sistemului de operare să poată recunoaște că sunt necesare drivere de nivel superior pentru anumite dispozitive.
Urmat de răspunsul de la projectdp:
Întrebare
Există un protocol de comunicare 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 busul 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ă stocarea în masă, HID etc.).
Pentru specificații despre funcționarea protocolului USB, acest wiki OSDev este de ajutor. Iată o altă descriere interesantă care utilizează diagrame de secvențe pentru a descrie diferitele tranzacții de date pe protocolul USB.
Bonus Întrebare
Cum detectează Linux și încarcă driverul de dispozitiv pentru acel dispozitiv?
Răspunsul bonusului
Pe Linux, când se utilizează un kernel compatibil USB, dispozitivul USB de lucru va fi detectat prin hardware și kernel datorită specificației USB. Pe partea hardware, detectarea se face de către controlerul gazdă USB. Apoi, în kernel, driver-ul de controler gazdă preia și traduce biți de nivel inferior de pe fir la informații formatate în protocol USB. Aceste informații sunt apoi populate în driverul usbcore din kernel.
Am parafrazat din acest articol excelent Opensourceforu, care are mult mai multe detalii și claritate cu privire la întrebarea dvs. în contextul Linux.
Asigurați-vă că ați verificat restul discuțiilor pline de viață prin intermediul legăturii de fișiere de mai jos!
Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.