Existuje skutečný komunikační protokol USB?
Většina z nás nikdy nepomyslela na naše USB zařízení, prostě je připojujeme a zapomínáme na ně. Ale co když jste zvědavý typ, který chce vědět více o tom, jak funguje USB? Dnešní příspěvek SuperUser Q & A má odpovědi na zvědavé čtenářské otázky.
Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.
Foto s laskavým svolením Evilelky Kowalski (Flickr).
Otázka
Čtečka superuseru smeeb chce vědět, zda skutečně existuje skutečný komunikační protokol USB:
Podle Wikipedia, USB:
- Definuje kabely, konektory a komunikační protokoly používané v sběrnici pro připojení, komunikaci a napájení mezi počítači a elektronickými zařízeními.
Ale existuje skutečný USB komunikační protokol? Moje chápání je následující:
- Připojíte zařízení USB k počítači (například Ubuntu nebo jakýkoli jiný systém Linux).
- Linux najde nějaký ovladač zařízení pro toto zařízení (bonus, pokud víte!) a načte jej.
- Zařízení je nyní připojeno pod / dev / theDevice.
- Aplikace uživatelského prostoru mohou číst a zapisovat / dev / theDevice a ovladač zpracovává nízkoúrovňový vstup a výstup na podkladové zařízení / hardware.
Pokud můžu říct, a USB komunikační protokol se neobjevuje nikde v tomto toku. Pokud je moje pochopení správné, USB je pouze kabelové a elektrické spojení mezi počítačem a přístrojem.
Tady jsem špatně? Dokáže USB skutečně implementovat nějaký nízkoúrovňový protokol, který podtrhuje tok výše? Pokud ano, co to je a jak to funguje při pohledu na 30 000 stop?
Existuje skutečný komunikační protokol USB?
Odpověď
Přispěvatelé SuperUser RedGrittyBrick a projectdp mají pro nás odpověď. První, RedGrittyBrick:
Ano (viz USB protokoly).
Jak jsem to pochopil, specifikace USB definuje složitou sadu vrstvených protokolů a profilů zařízení.
Zařízení USB mohou například odpovídat šablonám na vysoké úrovni, jako je například hromadné ukládání dat, klávesnice, zařízení pro rozhraní člověka atd., A mohou být spravovány běžným ovladačem zařízení. Některá zařízení USB mohou komunikovat na nižší úrovni, takže podpora nízké úrovně USB operačního systému může rozpoznat, že jsou potřebné ovladače vyšší úrovně specifické pro zařízení.
Následuje odpověď od projektu:
Otázka
Existuje komunikační protokol nízké úrovně USB v akci a co je?
Odpovědět
Ano, tam je. Specifikace USB obsahuje protokol USB, který definuje způsob, jakým je sběrnice používána na úrovni bitů. Jednalo by se o nízkoúrovňový protokol, který je základem protokolů na vyšší úrovni (tj. Hromadné ukládání, HID atd.)..
Informace o tom, jak pracuje protokol USB, je užitečné pro tuto OSDev wiki. Zde je další zajímavý popis pomocí sekvenčních diagramů pro popis různých datových transakcí podle protokolu USB.
Bonusová otázka
Jak Linux najde a načte ovladač zařízení pro toto zařízení?
Bonusová odpověď
V systému Linux, pokud používáte jádro s podporou rozhraní USB, bude pracovní hardware USB detekováno prostřednictvím hardwaru a jádra díky specifikaci USB. Na straně hardwaru se detekce provádí pomocí rozhraní USB Host Controller. V jádře ovladač hostitelského řadiče převezme a překládá bitové kódy nízkoúrovňové úrovně na datovém toku protokolu USB. Tyto informace se pak naplní do ovladače usbcore v jádře.
Parafrázoval jsem z tohoto vynikajícího článku Opensourceforu, který má mnohem podrobnější a jasnější informace o vaší otázce v prostředí Linuxu.
Nezapomeňte zkontrolovat zbytek živé diskuse prostřednictvím odkazu podprocesu sdíleného níže!
Musíte něco přidat k vysvětlení? Vyjměte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.