Er det en faktisk USB kommunikasjonsprotokoll?
De fleste av oss gir aldri mye tanke til våre USB-enheter, vi kobler dem bare inn og glemmer dem. Men hva om du er den nysgjerrige typen som vil vite mer om hvordan USB fungerer? Dagens SuperUser Q & A innlegg har svar på en nysgjerrig leser spørsmål.
Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.
Foto courtesy of Evilelka Kowalski (Flickr).
Spørsmålet
SuperUser leser smeeb vil vite om det virkelig er en faktisk USB kommunikasjonsprotokoll:
Ifølge Wikipedia, USB:
- Definerer kabler, kontakter og kommunikasjonsprotokoller som brukes i en buss for tilkobling, kommunikasjon og strømforsyning mellom datamaskiner og elektroniske enheter.
Men er det en faktisk USB kommunikasjonsprotokoll? Min forståelse er at:
- Du kobler en USB-enhet til en maskin (f.eks. Ubuntu eller noen form for Linux).
- Linux finner enhetsdriveren for den enheten på en eller annen måte (bonus hvis du vet det!) og laster den.
- Enheten er nå koblet til under / Dev / theDevice.
- Brukerplass apps kan nå lese og skrive til / Dev / theDevice og føreren håndterer inngang og utgang på lavt nivå til underliggende enhet / maskinvare.
Så vidt jeg kan fortelle, a USB kommunikasjonsprotokoll vises ikke hvor som helst i denne strømmen. Hvis min forståelse er riktig, er USB bare kabelen og elektrisk tilkobling mellom PCen og enheten.
Har jeg feil her? Utfører USB faktisk noen form for lavnivå protokoll som understreker strømmen ovenfor? Hvis ja, hva er det, og hvordan fungerer det med en 30.000 fotvisning?
Er det en faktisk USB kommunikasjonsprotokoll?
Svaret
SuperUser bidragsytere RedGrittyBrick og projectdp har svaret for oss. Først opp, RedGrittyBrick:
Ja (se USB-protokoller).
Som jeg forstår, definerer USB-spesifikasjonen et komplekst sett med lagrede protokoller og enhetsprofiler.
USB-enheter kan for eksempel tilpasse seg maler på høyt nivå, som masselagring, tastatur, menneskelig grensesnittsenhet osv., Og administreres av en generisk enhetsdriver. Noen USB-enheter kan kommunisere på et lavere nivå slik at operativsystemets USB-støtte på lavt nivå kan gjenkjenne at det er behov for enhetsspesifikke høyere nivådrivere.
Etterfulgt av svaret fra prosjektdp:
Spørsmål
Er det et lavnivå USB-kommunikasjonsprotokoll i handling, og hva er det?
Svar
Ja det er. USB-spesifikasjonen inkluderer USB-protokollen som definerer måten bussen brukes på et lite nivå. Dette ville være protokollen på lavnivå som ligger til grunn for de høyere nivåprotokollene (dvs. masselagring, HID, etc.).
For detaljer om hvordan USB-protokollen fungerer, er denne OSDev wiki nyttig. Her er en annen interessant beskrivelse ved hjelp av sekvensdiagrammer for å beskrive de ulike datatransaksjonene per USB-protokollen.
Bonus spørsmål
Hvordan finner Linux og laster inn enhetsdriveren for den enheten?
Bonus Svar
På Linux når du bruker en USB-aktivert kjernen, oppdages en fungerende USB-enhet via maskinvaren og kjernen på grunn av USB-spesifikasjonen. På maskinvaresiden utføres deteksjonen av USB-vertskontrolleren. Så i kjernen tar vertscontrollerdriveren over og oversetter lavnivåbitene på ledningen til USB-protokollformatert informasjon. Denne informasjonen blir deretter befolket i usbcore-driveren i kjernen.
Jeg parafrasert fra denne gode Opensourceforu-artikkelen, som har mye mer detaljert og klarhet om spørsmålet ditt i Linux-sammenheng.
Pass på å sjekke ut resten av den livlige diskusjonen via tråden som er delt nedenfor!
Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.