Suurin osa meistä ei koskaan ajattele paljon USB-laitteistamme, vain liitämme ne ja unohdamme ne. Mutta entä jos olet utelias tyyppi, joka haluaa tietää enemmän USB: n toiminnasta? Tämän päivän SuperUser Q & A -viestissä on vastaukset utelias lukijan kysymyksiin.
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kuva: Evilelka Kowalski (Flickr) .
Kysymys
SuperUser-lukijan smeeb haluaa tietää, onko todellinen USB-yhteyskäytäntö todella olemassa:
Wikipedian mukaan USB :
- Määrittää väylässä käytettävät kaapelit, liittimet ja tiedonsiirtoprotokollat tietokoneiden ja elektronisten laitteiden väliseen liitäntään, tiedonsiirtoon ja virtalähteeseen.
Mutta onko olemassa todellista USB-yhteyskäytäntö ? Ymmärrän, että:
- Yhdistät USB-laitteen koneeseen (esimerkiksi Ubuntu tai mikä tahansa Linux).
- Linux löytää jotenkin laitteen laiteohjaimen ( bonus jos tiedät! ) ja lataa sen.
- Laite on nyt kytketty kohtaan / dev / theDevice .
- Käyttäjätilan sovellukset voivat nyt lukea ja kirjoittaa niihin / dev / theDevice ja ohjain käsittelee matalan tason syötteen ja lähdön taustalla olevaan laitteeseen / laitteistoon.
Sikäli kuin voin kertoa, a USB-yhteyskäytäntö ei näy missään tässä virtauksessa. Jos ymmärrykseni on oikea, USB on vain kaapeli ja sähköliitäntä tietokoneen ja laitteen välillä.
Olenko väärässä täällä? Toteuttaako USB todella jonkinlaisen matalan tason protokollan, joka korostaa yllä olevaa kulkua? Jos on, mikä se on ja miten se toimii 30000 jalanäkymässä?
Onko olemassa todellista USB-yhteyskäytäntöä?
Vastaus
SuperUser-avustajat RedGrittyBrick ja projectdp ovat meille vastaus. Ensin, RedGrittyBrick:
Joo ( katso USB-protokollat ).
Ymmärtääkseni USB-spesifikaatio määrittää monimutkaisen joukon kerrostettuja protokollia ja laiteprofiileja.
Esimerkiksi USB-laitteet voivat mukautua korkean tason malleihin, kuten massamuisti, näppäimistö, ihmisen käyttöliittymä jne., Ja niitä voi hallita yleinen laiteohjain. Jotkut USB-laitteet voivat kommunikoida alemmalla tasolla siten, että käyttöjärjestelmän matalan tason USB-tuki tunnistaa, että tarvitaan laitekohtaisia ylemmän tason ohjaimia.
Tämän jälkeen vastaus projektilta:
Kysymys
Onko toiminnassa matalan tason USB-yhteyskäytäntö ja mikä se on?
Vastaus
Kyllä on. USB-määrittely sisältää USB-protokollan, joka määrittelee tavan, jolla väylää käytetään bittitasolla. Tämä olisi matalan tason protokolla, joka on korkeamman tason protokollien (eli massamuistin, HID: n jne.) Taustalla.
Lisätietoja USB-protokollan toiminnasta on tässä OSDev-wiki on hyödyllinen. Tässä on toinen mielenkiintoinen kuvaus sekvenssikaavioiden avulla kuvaamaan erilaisia datatapahtumia USB-protokollan mukaan.
Bonuskysymys
Kuinka Linux löytää ja lataa laitteen laiteohjaimen?
Bonusvastaus
Linuxissa, kun käytetään USB-yhteensopivaa ydintä, toimiva USB-laite havaitaan laitteiston ja ytimen kautta USB-määrityksen vuoksi. Laitteiston puolella tunnistus tapahtuu USB-isäntäohjaimella. Sitten ytimessä isäntäohjaimen ohjain ottaa haltuunsa ja kääntää langan matalan tason bitit USB-protokollan muotoisiksi tiedoiksi. Nämä tiedot täyttyvät sitten ytimen usbcore-ohjaimessa.
Olen muotoillut tästä erinomaisesta Opensourceforu-artikkeli , jossa on paljon yksityiskohtaisempaa ja selkeämpää kysymystäsi Linux-kontekstissa.
Muista tarkistaa loput vilkkaasta keskustelusta alla jaetun linkkilinkin kautta!
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .