Koduleht » kuidas » Kas on olemas tegelik USB-kommunikatsiooniprotokoll?

    Kas on olemas tegelik USB-kommunikatsiooniprotokoll?

    Enamik meist ei mõtle kunagi meie USB-seadmetele, vaid ühendame need ja unustame neid. Aga mis siis, kui olete uudishimulik tüüp, kes soovib rohkem teada, kuidas USB töötab? Tänase SuperUser Q&A postitusel on vastused uudishimulikule lugeja küsimustele.

    Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.

    Foto viisakalt Evilelka Kowalski (Flickr).

    Küsimus

    SuperUser-lugeja smeeb tahab teada, kas tegelikult on olemas USB-protokoll:

    Vastavalt Wikipedia, USB:

    • Määrab bussis kasutatavad kaablid, ühendused ja sideprotokollid arvutite ja elektrooniliste seadmete vahelise ühenduse, side ja toiteallika jaoks.

    Aga kas on olemas tegelik USB-sideprotokoll? Minu arusaam on, et:

    1. Ühendate USB-seadme seadmega (näiteks Ubuntu või mõni muu Linux).
    2. Linux leiab selle seadme draiveri kuidagi (boonus, kui tead!) ja laadib selle.
    3. Seade on nüüd ühendatud / dev / theDevice.
    4. Kasutajaruumi rakendused saavad nüüd lugeda ja kirjutada / dev / theDevice ja juht juhib madala taseme sisendit ja väljundit selle aluseks olevale seadmele / riistvarale.

    Niipalju kui suudan öelda, a USB-sideprotokoll ei kuvata selles voos kusagil. Kui minu arusaam on õige, on USB ainult arvuti ja seadme vaheline kaabel ja elektriühendus.

    Kas ma eksin siin? Kas USB tegelikult rakendab mingit madalatasemelist protokolli, mis rõhutab ülaltoodud voolu? Kui jah, siis mis see on ja kuidas see toimib 30 000 jala vaates?

    Kas on olemas tegelik USB-sideprotokoll?

    Vastus

    SuperUser'i toetajad RedGrittyBrick ja projectdp on meile vastuseks. Esimene üles, RedGrittyBrick:

    Jah (vt USB-protokolle).

    Nagu ma aru saan, määratleb USB-spetsifikatsioon keerukate kihtprotokollide ja seadmeprofiilide komplekti.

    Näiteks võivad USB-seadmed vastata kõrgetasemelistele mallidele nagu massmälu, klaviatuur, inimliidese seade jne ning neid saab hallata üldise seadme draiveriga. Mõned USB-seadmed saavad suhelda madalamal tasemel, nii et operatsioonisüsteemi madal USB-tugi suudab tuvastada, et on vaja seadmepõhiseid kõrgema taseme draivereid.

    Järgneb projektidp vastus:

    Küsimus

    Kas on olemas madala tasemega USB-kommunikatsiooniprotokoll ja mis see on?

    Vastus

    Jah seal on. USB-spetsifikatsioon sisaldab USB-protokolli, mis määrab, kuidas bussi kasutatakse bititasandil. See oleks madalataseme protokoll, mis on kõrgema taseme protokollide aluseks (st massmälu, HID jne)..

    USB-protokolli toimimise täpsustamiseks on see OSDev-wiki kasulik. Siin on veel üks huvitav kirjeldus, kasutades järjestuste diagramme, et kirjeldada erinevaid USB-protokolli andmetehinguid.

    Boonuse küsimus

    Kuidas Linux otsib ja laadib selle seadme seadme draiverit?

    Boonuse vastus

    Linuxis USB-toega kerneli kasutamisel tuvastatakse USB-spetsifikatsiooni tõttu töökindel USB-seade riistvara ja kerneli kaudu. Riistvara poolel teeb tuvastamise USB Host Controller. Siis võtab kernelis vastuvõtja kontrolleri draiver üle ja tõlgib traadi madala taseme bitid USB-protokolli vormindatud informatsiooniks. Seejärel saab see teave kerneli usbcore draiverisse.

    Parafraseerisin selle suurepärase Opensourceforu artikli, millel on Linuxi kontekstis teie küsimusest palju üksikasjalikum ja selgem.

    Kontrollige kindlasti ülejäänud elavat arutelu allpool jagatud lõime lingi kaudu!


    Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.