Домашняя » как » Есть ли действительный протокол связи USB?

    Есть ли действительный протокол связи USB?

    Большинство из нас никогда не задумывается о наших USB-устройствах, мы просто подключаем их и забываем о них. Но что, если вы любопытный тип, который хочет узнать больше о том, как работает USB? Сегодняшний пост SuperUser Q & A содержит ответы на вопросы любопытных читателей..

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

    Фото предоставлено Evilelka Kowalski (Flickr).

    Вопрос

    Считыватель SuperUser Smeeb хочет знать, действительно ли существует настоящий протокол связи USB:

    Согласно Википедии, USB:

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

    Но есть ли актуальная Протокол связи USB? Мое понимание таково:

    1. Вы подключаете устройство USB к машине (например, Ubuntu или любой другой тип Linux).
    2. Linux как-то находит драйвер устройства для этого устройства (бонус, если вы знаете!) и загружает его.
    3. Теперь устройство подключено под / DEV / theDevice.
    4. Приложения пользовательского пространства теперь могут читать и писать в / DEV / theDevice и драйвер обрабатывает низкоуровневый ввод и вывод на базовое устройство / аппаратное обеспечение.

    Насколько я могу сказать, Протокол связи USB не появляется нигде в этом потоке. Если я правильно понимаю, USB это просто кабель и электрическое соединение между ПК и устройством.

    Я здесь не прав? USB действительно реализует какой-то протокол низкого уровня, который подчеркивает поток выше? Если так, что это и как это работает на 30 000 футов зрения?

    Есть ли настоящий протокол связи USB??

    Ответ

    Участники SuperUser RedGrittyBrick и projectdp ответят за нас. Прежде всего, RedGrittyBrick:

    Да (см. Протоколы USB).

    Насколько я понимаю, спецификация USB определяет сложный набор многоуровневых протоколов и профилей устройств..

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

    Далее следует ответ из проекта ddp:

    Вопрос

    Есть ли низкоуровневый протокол связи USB в действии и что это??

    Ответ

    Да, есть. Спецификация USB включает протокол USB, который определяет способ использования шины на битовом уровне. Это будет протокол низкого уровня, который лежит в основе протоколов более высокого уровня (т. Е. Запоминающее устройство, HID и т. Д.).

    Для подробностей о том, как работает протокол USB, полезна эта вики OSDev. Вот еще одно интересное описание с использованием диаграмм последовательности для описания различных транзакций данных по протоколу USB.

    Бонусный вопрос

    Как Linux находит и загружает драйвер устройства для этого устройства?

    Бонусный ответ

    В Linux при использовании ядра с поддержкой USB работающее устройство USB будет определяться через оборудование и ядро ​​в соответствии со спецификацией USB. С аппаратной стороны обнаружение выполняется хост-контроллером USB. Затем в ядре драйвер хост-контроллера вступает во владение и преобразует низкоуровневые биты на проводе в форматированную информацию протокола USB. Эта информация затем заполняется в драйвере usbcore в ядре.

    Я перефразировал эту прекрасную статью об Opensourceforu, в которой есть гораздо больше деталей и ясности по вашему вопросу в контексте Linux.

    Обязательно ознакомьтесь с остальной частью оживленной дискуссии через ссылку на ветку ниже!


    Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.