У меня возникла необходимость разобраться с USB и, к своему удивлению, я обнаружил, что материалов по USB на русском языке не так уж много. Решил обобщить свой опыт изучения USB и передать всем желающим с ним познакомиться.
Публикация адресована начинающим разработчикам, тем, кто не знаком с USB, но хотел бы узнать больше. Статья носит учебный характер, и не является исчерпывающим справочным пособием. Для более простого вхождения в тему примеры основаны на стандарте USB 1.1. Если не сказано отдельно, то подразумевается режим FS (Full speed). В статье нет широко освещенных в других источниках сведений об общей топологии USB, о кабелях, хабах и разъемах. Здесь больше информации о том, что нужно знать разработчику устройств с микроконтроллерами о протоколе USB для своих разработок. Для устройств USB подключаемых к PC, таких, как мышь, клавиатура, микроконтроллер с поддержкой шины USB, использую термин USB-устройство. Персональный компьютер, к которому подключается USB-устройство, называю хостом. Доступное изложение теории, будет сопровождаться примерами программ на языке С для микроконтроллера AT90USB162 из популярной линейки megaAVR фирмы Atmel. В качестве источника справочной информации по USB рекомендую книгу Гук М. Ю. «Шины PCI, USB и FireWire. Энциклопедия», издательство «Питер».
Программное обеспечение хоста делится на два отдельных типа: программное обеспечение инициализации канала связи и программное обеспечение поддержки рабочего режима обмена данными. Программное обеспечение инициализации начинает работать при подключении к хосту нового USB-устройства. Происходит обмен служебной информацией между хостом и USB-устройством. В результате обменов служебной информацией, хост определяет: тип устройства, его требования к энергопотреблению, возможность поддержки «спящего режима», тип драйверов для правильной работы USB-устройства, и, даже, возможна ли загрузка необходимых прикладных программ для работы с USB-устройством. Это новые веяния в духе спецификации PNP (plug and play). Устройства могут подключаться и отключаться в горячем режиме. При подключении и отключении происходит автоматическое переконфигурирование программного обеспечения хоста. Процесс настройки хоста на обмен данными, напоминает процесс раскрутки. Первоначально обмениваются простейшими сигналами по шине, затем процесс усложняется и, наконец, выход на рабочий режим.
Программное обеспечение рабочего режима поддерживает обмен данными, когда хост соответственно сконфигурирован, и USB-устройство вышло на рабочий режим обмена. В спецификации USB этот начальный процесс называется энумерацией.
В последнее время имеется тенденция к унификации не только протоколов обмена, но и устройств, взаимодействующих с персональным компьютером. Точнее, унификация требований к каналу связи. Идея такая. Придумывается универсальная шина для всего, что только можно подключить. Конечно, эта шина устроена сложно, она многоуровневая, гибкая и адаптируемая для разных конфигураций устройств. Унифицируются и драйверы операционной системы персонального компьютера, который взаимодействует с подключаемым устройством. Преимущество – отпадает необходимость в написании драйвера для ОС разработчиками USB-устройства. Это должно повышать надежность ОС, так как созданием драйверов могут заняться разработчики ОС, а не разработчики устройств. В общем, все плюсы унификации и стандартизации. Но есть и минусы. Очевидная сложность и связанная с ней избыточность, громоздкость технических решений. Тот же подход, что и в протоколах коммуникаций на большие расстояния. Академический стек протоколов OSI и знаменитый TCP/IP.
В связи с вышесказанным, в спецификации USB вводится понятие класса устройств. Все электронные устройства, подключаемые к персональному компьютеру, по своим функциональным качествам очень схожи. Например, звуковые платы предоставляют сервис приблизительно одного уровня. Поэтому устройства стали делить на унифицированные классы. Класс – это группа устройств, объединенных общими характеристиками и способных управляться общим для них программным драйвером операционной системы. Отдельное устройство может объединять функциональность сразу нескольких устройств, принадлежащих к разным классам. Если функциональность вашего устройства подходит к некоторому классу, и оно поддерживает спецификацию USB для устройств класса, то не нужно писать драйвер для ОС. Вероятнее всего, драйвер уже имеется в ОС. Функциональность устройства, подпадающего под определенный класс, может быть расширена разработчиком устройства добавлением отдельных команд. Точнее говоря, в стандарте USB предусмотрена возможность некоторого расширения функциональности. В стандарте предусмотрено множество возможностей, которые разработчик устройства может использовать для своих целей, добавляя к базовой функциональности функциональность расширенную. В спецификации USB есть две большие области, это собственно USB базового уровня и протоколы устройств классов. Протоколы устройств классов – это некоторая надстройка над протоколами нижнего уровня. Логично сначала разобраться с базовыми принципами, а уж потом со всем остальным.
Читайте также: Шины зимние мишлен липучка 16 радиус
Виртуальные каналы и конечные точки
Все примеры в статье даются в среде операционной системы Linux. По моему субъективному мнению, для новичка разобраться в реализации USB для Windows труднее, чем для Linux. Приходится много перерабатывать информации, специфичной для Windows, и ни как не относящейся к стандарту USB. В Linux к пониманию существа дела можно добраться более коротким путем. Разобравшись с Linux, можно легко перейти и к Windows.
В режиме передачи данных, когда процесс конфигурирования (энумерации) уже закончился, между USB-устройством и хостом должны быть налажены мосты. Это некий набор виртуальных каналов, по которым идет обмен данными и служебной информацией. Англоязычный термин pipe – труба. Каналы разделяют единственную среду передачи, а потому они являются мультиплексированными и, соответственно, виртуальными. Можно провести аналогию с локальной сетью. Шина Ethernet одна, но соединений TCP может быть несколько. Но в TCP/IP соединения TCP могут возникать и завершаться много раз в процессе работы. В USB типы каналов и их количество фиксируются на стадии процесса энумерации.
В стандарте определяются четыре типа каналов: управляющие, по прерыванию, массивов данных и изохронные. Только управляющий канал является двунаправленным, остальные каналы могут быть только однонаправленными. Для двустороннего обмена требуется организация хотя бы трех каналов. Обязательный управляющий канал и по одному для каждого направления. В USB принято, что канал называется каналом ввода, если данные передаются в хост, и канал вывода, если из хоста. Применяя специальные приемы, можно использовать канал управления для передачи небольших объемов данных. Но это нестандартное использование канала, и применяется редко. Напоминаем, что все информационные обмены на шине, для всех видов каналов происходят под управлением хоста. Первым делом хост посылает запрос, а затем USB-устройство отвечает.
Управляющий канал используется для передачи команд протокола USB; передача данных с использованием канала управления не является стандартным использованием канала. Хотя можно приспособить канал управления для передачи данных прикладной программы. В каждом USB-устройстве должен быть хотя бы один управляющий канал.
Канал передачи по прерыванию используется для небольших объемов данных, но с гарантированными задержками. Хост опрашивает USB-устройство на предмет готовности порции данных, и если USB-устройство готово для обмена, то обмен происходит. Время реакции USB-устройства задается при конфигурировании и лежит в диапазоне от 1 до 255 мс. Так что, это не связано напрямую с прерываниями в общепринятом понимании. Один канал по прерыванию типа ввода, используется мышью USB (Рисунок 1). По каналу передаются клики и координаты указателя. В моей клавиатуре USB используются два канала по прерыванию и один канал управления.
Изохронные каналы – применяются для передачи потока данных, например аудио и видео. Характерной особенностью является отсутствие повторной передачи данных в случае ошибок. Поврежденные пакеты просто отбрасываются без запроса повторной передачи. Такая политика позволяет воспроизводить поток данных в реальном времени без временных задержек. С периодом в 1 миллисекунду хост запрашивает данные, и буфер USB-устройства передается на хост. В веб-камерах используются изохронные каналы.
Канал передачи массивов данных используется в типах устройств, не требующих временной привязки при передаче данных и оперативной реакции на внешние события. Принципиальное отличие от двух предыдущих типов каналов заключается в том, что временной интервал, по истечении которого данные будут доставлены, не гарантирован. В изохронном канале хост опрашивает устройство с периодичностью 1 мс. В канале передачи по прерыванию хост может опрашивать USB-устройство с периодом от 1 до 255 миллисекунд. В канале передачи массивов хост начинает запрашивать данные для приема в свободное от всех остальных передач время. В случае искажения данных при передаче происходит повторная передача искаженных данных. В моей флэшке используются два канала передачи массивов данных: один на передачу и один на прием, не считая канала управления.
Читайте также: 65535 внутренняя шина для high definition audio драйвер xp
У USB-устройства приемником и передатчиком данных служит буфер, который называется конечной точкой. Тип конечной точки определяет тип канала, который связывает ее с хостом. Например, контроллер USB микроконтроллера AT90USB162 фирмы Atmel имеет в общей сложности 4 конечных точки, не считая конечной точки управления (из 4 возможных буферов обмена). Программа микроконтроллера должна, соответственно, сконфигурировать необходимое количество конечных точек для своих нужд. Все конечные точки контроллера USB перенумерованы. Нулевая конечная точка всегда используется для нужд канала управления и не может быть переконфигурирована для других целей. Если не создается драйвер ОС, то на стороне хоста расположение буфера знать необязательно, так как взаимодействие программы на стороне хоста с USB-устройством происходит через системные вызовы операционной системы и скрыто от пользовательской программы.
Хабы, адреса, хост контроллеры
Кратко опишем аппаратуру хоста. На стороне хоста обязательно должен присутствовать хотя бы один контроллер хоста и связанный с этим контроллером корневой хаб. В современных PC имеется несколько контроллеров хоста и, соответственно, несколько корневых хабов. Основателем каждой шины USB является корневой хаб, поэтому, если на PC несколько корневых хабов, то и несколько шин. В Linux имеющиеся шины USB можно посмотреть с помощью команды lsusb. Ниже приведен дамп вывода на моем компьютере:
В колонке слева перенумерованы имеющиеся в компьютере шины USB, а, значит, и контроллеры хабов и корневые хабы. Каждое USB-устройство на шине имеет уникальный адрес в диапазоне от 1 до 127. Нулевой адрес выполняет служебные функции, и не может быть назначен USB-устройству постоянно. Адреса распределяются по USB-устройствам хостом в процессе энумерации и сохраняются на все время работы устройства на шине. Из работы программы lsusb видно, что мышь USB подключена к шине 03, и на этой шине ей назначен адрес 02. Устройство хранения данных подключено к шине 01 с адресом 03. Можно поиграть, поменять последовательность включения и посмотреть, как это отразится на выводе lsusb. В следующей колонке указан идентификационный код устройства ID. Этот код состоит из 2 частей: идентификатора изготовителя (vendor ID) и идентификатора изделия (product ID). Они представляют собой два уникальных числа, используемых для идентификации конкретного устройства. Операционная система по этим кодам может определять, какой драйвер требуется загрузить для работы. Значение кода изготовителя назначается форумом разработчиков USB по заказу фирмы. Код устройства устанавливает сам производитель. Программист микроконтроллеров может задать эти числа произвольно. Другое дело, что такие устройства, поступившие в широкую продажу, могут вызвать возражения фирмы собственника кода. Кроме этих чисел, для идентификации можно использовать номер версии устройства (ID Device).
- Универсальная последовательная шина (USB)
- Функции USB в Windows 10
- сценарии USB для устройств Windows 10
- Рекомендации по использованию USB для Windows 10
- Минимальные требования к оборудованию для USB
- Windows Спецификации программы обеспечения совместимости оборудования для USB
- Поддерживаемые рекомендации для USB от Windows 8.1
- Оборудование
- 🎦 Видео
Видео:Как работает USB? Просто, доступно, с примерами.Скачать
Универсальная последовательная шина (USB)
В этом документе приводятся рекомендации по проектированию и разработке компонентов USB. Цель этого документа — позволить партнерам экосистемы создавать устройства с оптимизированными возможностями USB.
Видео:03. Основы устройства компьютера. Память и шина. [Универсальный программист]Скачать
Функции USB в Windows 10
Контроллеры двух ролей, которые могут функционировать как USB-узел или USB-устройство. Например, Телефон может подключаться к ПК как USB-устройству, или же он может подключаться к другим периферийным устройствам USB как к USB-узлу.
USB типа C, перевернутый, обратимый USB-разъем приблизительно того же размера, что и соединитель USB Micro-B. Кроме того, тип USB-C обеспечивает поддержку следующих функций:
- USB 3,1 Gen 2 (10 ГБ/с)
- Доставка питания, позволяющая устройствам и системам предоставлять и использовать до 20V, 5A.
- Альтернативные режимы, позволяющие использовать соединитель USB Type-C, не поддерживающий протоколы USB, такие как Дисплайпорт, молнией или МХЛ.
- Сообщение об ошибке объявления
Читайте также: Сколько давление в шинах поло седан
USB 2,0, 3,0 и теперь USB 3,1, позволяя изготовителям оборудования легко выбирать из множества контроллеров и периферийных устройств.
универсальные драйверы можно создавать для периферийных устройств USB, которые работают на всех Windows 10 устройствах, от интернета вещей (IOT) до серверов.
Партнерам рекомендуется протестировать эти функции с помощью комплекта «оборудование для лабораторий » и посетить блог группы USB Core для получения обновленных сведений о функциях и тестах хлк, включая следующие записи, связанные с Windows 10:
сценарии USB для устройств Windows 10
Windows 10 позволяет поставщикам оборудования внедрять и создавать отличные системы с двумя ролями и типами USB-C. ниже показаны несколько примеров сценариев, включенных функциями USB в Windows 10.
Замена частных соединителей стыковки стандартным разъемом типа USB-C
Ускоренная оплата по типу USB-C текущая и/или доставка питания
Разрешить внешним периферийным устройствам USB выплату за систему
Вывод видео/аудио по типу USB-C с использованием альтернативных режимов
Подключение периферийные устройства USB для Windows мобильных устройств
Написание универсальных приложений, которые могут взаимодействовать с настраиваемыми периферийными устройствами USB
рис. 1. пример использования новых сценариев USB для системы Windows 10 Desktop
рис. 2. пример использования новых сценариев USB для устройства Windows 10 Mobile
Видео:Лекция 310. Шина USB - функциональная схемаСкачать
Рекомендации по использованию USB для Windows 10
- Как правило, USB должен «просто работать» с минимальным вмешательством пользователя.
- Предполагается, что оборудование или встроенное по предоставило первоначальные политики, появившиеся с двойной ролью, поставкой питания и функциями альтернативного режима.
- Windows выполнит корректировки политики, чтобы улучшить взаимодействие с пользователем и помочь пользователю устранить неполадки в случае сбоя.
- Партнеры должны убедиться в том, что их USB-оборудование (например, системы, концентраторы, кабели или аксессуары) может взаимодействовать с другим USB-оборудованием, идущим или уже на рынке. Мы рекомендуем участие в событиях взаимодействия и соответствия требованиям USB-IF.
- Мы рекомендуем поддерживать альтернативный режим Дисплайпорт для вывода видео и аудио через USB Type-C.
- Для систем с несколькими портами USB, которые имеют различные возможности USB, рекомендуется сделать так, чтобы они были понятны для клиентов, у которых есть какие-либо возможности. Например, значок, напечатйся рядом с USB-портом, можно использовать для отображения того, что порт поддерживает альтернативные режимы и приставку питания.
- Партнеры должны следовать последней спецификации ACPI, чтобы правильно описать их USB-порты, такие как методы _UPC и _PLD.
Видео:лекция 313. Формирование пакетов на шине USBСкачать
Минимальные требования к оборудованию для USB
USB является необязательным для всех устройств и компьютеров, на которых выполняется Windows 10. Windows 10 поддерживает следующие USB-контроллеры:
полный набор требований к оборудованию для Windows 10 см. в разделе минимальные требования к оборудованию.
Видео:❓ Неизвестное устройство в Windows. Как решить проблему?Скачать
Windows Спецификации программы обеспечения совместимости оборудования для USB
программа Windows совместимости оборудования использует тесты в комплекте Windows Hardware Lab Kit (хлк), который можно использовать для диагностики проблем на ранних этапах процесса разработки, обеспечения совместимости драйверов с Windows и, при необходимости, сертификации устройств или систем. тесты в хлк могут проверить работу двух ролей и режима функционирования в любом выпуске Windows 10.
требования к программе System. основы. системусб. системекспосесусбпорт Windows совместимости оборудования перечислены в списке типов контроллеров USB, которые рекомендуются, поддерживаются или не поддерживаются.
Видео:Код 28 — для устройства не установлены драйверы в Windows 10 и Windows 7 (решение)Скачать
Поддерживаемые рекомендации для USB от Windows 8.1
эти рекомендации Windows 8.1 поддерживаются для Windows 10.
Оборудование
Для повышения эффективности питания и повышения производительности рекомендуется, чтобы USB-контроллеры USB 3,0 совместимы с контроллером XHCI, интегрированным в SoC или набор микросхем. Операционная система поддерживает стандартные контроллеры EHCI и XHCI 1,0, включая регистры отладки. Если контроллер узла не полностью совместим с опубликованными стандартными спецификациями, то отклонения должны быть документированы, а поддержка контроллера узла определяется отдельно для каждого случая. Кроме того, для контроллеров узла XHCI важна возможность отладки.
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
- Правообладателям
- Политика конфиденциальности
🎦 Видео
Не работают USB порты - 3 способа Решения! Windows 7/8/10/11Скачать
Другие устройства в диспетчере устройств как убрать Windows 11.Неизвестное устройство.PCI-контроллерСкачать
лекция 314. Транзакции на шине USBСкачать
Лекция19 USBСкачать
Для устройства не установлены драйверы КОД 28Скачать
Лекция 311. Шина USB - кодирование сигналовСкачать
Передача данных - шина SPIСкачать
MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
лекция 403 CAN шина- введениеСкачать
лекция 315. Состояния устройства при подключении к USBСкачать
шина USBСкачать
Контроллер универсальной последовательной шины USBСкачать
[База Знаний] В чем разница между USB 2.0 и USB 3.0Скачать
Интерфейс USB. Виртуальный COM порт и схемотехника.Скачать