Начална » как да » Има ли действително USB комуникационен протокол?

    Има ли действително USB комуникационен протокол?

    Повечето от нас никога не мислят много за нашите USB устройства, просто ги включваме и забравяме за тях. Но какво, ако сте любопитен тип, който иска да знае повече за това как работи USB? Днешната публикация за въпроси и отговори SuperUser има отговори на любопитни въпроси на читателя.

    Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.

    Снимката е предоставена от Evilelka Kowalski (Flickr).

    Въпроса

    Изчислителят SuperUser smeeb иска да знае дали наистина има действителен USB комуникационен протокол:

    Според Уикипедия, USB:

    • Определя кабелите, съединителите и комуникационните протоколи, използвани в шината за връзка, комуникация и захранване между компютри и електронни устройства.

    Но има ли действително USB комуникационен протокол? Моето разбиране е, че:

    1. Свързвате USB устройство към машина (Ubuntu или всякакъв вид Linux например).
    2. Linux по някакъв начин открива драйвера на устройството за това устройство (бонус, ако знаете!) и я зарежда.
    3. Устройството вече е свързано с / Сътрудничество / за устройства.
    4. Приложенията за потребителско пространство вече могат да четат и да пишат / Сътрудничество / за устройства и водачът обработва входа и изхода за ниско ниво към съответното устройство / хардуер.

    Доколкото мога да разбера, a USB комуникационен протокол не се появява никъде в този поток. Ако разбирането ми е правилно, USB е само кабелна и електрическа връзка между компютъра и устройството.

    Греша ли тук? На практика ли USB използва някакъв протокол от ниско ниво, който подчертава по-горе? Ако е така, какво е това и как работи на 30 000 фута?

    Има ли действителен USB комуникационен протокол?

    Отговорът

    SuperUser сътрудници RedGrittyBrick и projectdp имат отговор за нас. Първо, RedGrittyBrick:

    Да (вижте USB протоколи).

    Както разбирам, USB спецификацията определя сложен набор от пластови протоколи и профили на устройствата.

    Например, USB устройствата могат да отговарят на шаблони от високо ниво като масово съхранение, клавиатура, човешко интерфейсно устройство и т.н. и да бъдат управлявани от общ драйвер на устройство. Някои USB устройства могат да комуникират на по-ниско ниво, така че поддръжката на USB на ниско ниво на операционната система може да разпознае, че са необходими специфични за устройството драйвери за по-високо ниво..

    Следван от отговора от projectdp:

    въпрос

    Има ли ниско ниво на USB комуникационен протокол в действие и какво е то?

    Отговор

    Да, има. USB спецификацията включва USB протокол, който определя начина, по който шината се използва на малко ниво. Това ще бъде протоколът от ниско ниво, който е в основата на протоколите от по-високо ниво (т.е. масово съхранение, HID и др.).

    За подробности за това как работи USB протокол, тази OSDev wiki е полезна. Ето още едно интересно описание, използващо диаграми на последователности за описание на различните транзакции на данни по USB протокола.

    Бонус Въпрос

    Как Linux открива и зарежда драйвера на устройството за това устройство?

    Бонус Отговор

    На Linux, когато се използва ядро ​​с активиран USB, ще се открие работещо USB устройство чрез хардуера и ядрото поради USB спецификацията. От страна на хардуера, откриването се извършва от USB Host Controller. След това в ядрото Host Controller Driver поема и превежда ниско ниво на бита по кабела към USB протокол, форматирана информация. Тази информация се попълва в usbcore драйвера в ядрото.

    Аз перифразирах от тази отлична статия Opensourceforu, която има много повече детайли и яснота относно вашия въпрос в контекста на Linux..

    Не забравяйте да проверите останалата част от оживената дискусия чрез линка, който се споделя по-долу!


    Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.