A legtöbben soha nem gondolkodnak sokat az USB-eszközeinken, csak csatlakoztatjuk őket, és megfeledkezünk róla. De mi van akkor, ha Ön kíváncsi típus, aki többet szeretne tudni az USB működéséről? A mai SuperUser Q & A bejegyzés megválaszolja az olvasó kíváncsi kérdéseit.
A mai Kérdések és válaszok ülés a SuperUser jóvoltából érkezik hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségvezérelt csoportosulása.
Fotó jóvoltából Evilelka Kowalski (Flickr) .
A kérdés
A SuperUser olvasó smeeb tudni akarja, hogy valóban létezik-e tényleges USB kommunikációs protokoll:
A Wikipédia szerint USB :
- Meghatározza a buszon használt kábeleket, csatlakozókat és kommunikációs protokollokat a számítógépek és az elektronikus eszközök közötti kapcsolathoz, kommunikációhoz és áramellátáshoz.
De van-e tényleges USB kommunikációs protokoll ? Megértésem szerint:
- Csatlakoztat egy USB-eszközt egy géphez (például Ubuntu vagy bármilyen Linux).
- A Linux valahogy megtalálja az eszköz illesztőprogramját ( bónusz, ha tudod! ) és betölti.
- A készülék mostantól csatlakozik / dev / theDevice .
- A felhasználói téralkalmazások mostantól tudnak írni és olvasni / dev / theDevice és az illesztőprogram kezeli az alatta lévő eszköz / hardver alacsony szintű be- és kimenetét.
Amennyire meg tudom mondani, a USB kommunikációs protokoll nem jelenik meg sehol ebben az áramlásban. Ha megértésem helyes, az USB csak a kábel és az elektromos csatlakozás a számítógép és az eszköz között.
Tévedek itt? Az USB valóban megvalósít valamilyen alacsony szintű protokollt, amely aláhúzza a fenti folyamatot? Ha igen, mi ez, és hogyan működik 30 000 méteres nézetnél?
Van tényleges USB kommunikációs protokoll?
A válasz
A SuperUser közreműködői, a RedGrittyBrick és a projectdp válaszolnak ránk. Először RedGrittyBrick:
Igen ( lásd az USB protokollokat ).
Ahogy megértem, az USB specifikáció egy összetett réteges protokollt és eszközprofilt határoz meg.
Például az USB-eszközök képesek megfelelni olyan magas szintű sablonoknak, mint a tömeges tárolás, a billentyűzet, az emberi kezelőfelület eszköze stb., És egy általános eszközillesztő képes kezelni őket. Egyes USB-eszközök alacsonyabb szinten kommunikálhatnak, így az operációs rendszer alacsony szintű USB-támogatása felismerheti, hogy eszközspecifikus magasabb szintű illesztőprogramokra van szükség.
Ezt követi a projectdp válasza:
Kérdés
Alacsony szintű USB kommunikációs protokoll működik, és mi ez?
Válasz
Igen van. Az USB specifikáció tartalmazza az USB protokollt, amely meghatározza a busz bit szintű használatának módját. Ez lenne az alacsony szintű protokoll, amely a magasabb szintű protokollok alapját képezi (azaz tömegtár, HID stb.).
Az USB protokoll működésével kapcsolatos részletekért lásd ezt OSDev wiki hasznos. Itt van egy másik érdekes leírás sorrenddiagramok segítségével írja le a különféle adattranzakciókat az USB protokollonként.
Bónusz kérdés
Hogyan találja meg és tölti be a Linux az eszköz illesztőprogramját?
Bónusz válasz
Linux alatt, amikor USB-képes kernelt használ, az USB specifikáció miatt működő USB-eszközt észlel a hardver és a kernel. A hardver oldalon az észlelést az USB Host Controller végzi. Ezután a kernelben a Host Controller Driver átveszi és lefordítja a vezeték alacsony szintű bitjeit USB protokoll formátumú információkká. Ezután az információ feltöltődik a kernel usbcore illesztőprogramjában.
Átfogalmaztam ebből a kiválóból Opensourceforu cikk , amely sokkal részletesebb és világosabb kérdéseket tartalmaz a kérdésével kapcsolatban a Linux összefüggésében.
Ne felejtsd el megnézni az élénk beszélgetés többi részét az alább megosztott szál linken keresztül!
Van valami hozzáfűzhető a magyarázathoz? Hang a kommentekben. Szeretne további válaszokat olvasni más, hozzáértő Stack Exchange-felhasználóktól? Nézze meg a teljes vitafonalat itt .