что такое ведущее устройство usb

краткая шпаргалка по USB

Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

что такое ведущее устройство usb. . что такое ведущее устройство usb фото. что такое ведущее устройство usb-. картинка что такое ведущее устройство usb. картинка . Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Сначала все просто:

Пакет всегда начинается с SYN (10000000).

Примерная последовательность пакетов.

что такое ведущее устройство usb. . что такое ведущее устройство usb фото. что такое ведущее устройство usb-. картинка что такое ведущее устройство usb. картинка . Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Как происходит дальше работа на примере обычной клавиатуры

Хост долбит периодически PID IN по адресу устройства плюс Endpoint устройства (у нас EndP 0x01), который отвечает за прием данных от клавиатуры (IN для хоста).

что такое ведущее устройство usb. . что такое ведущее устройство usb фото. что такое ведущее устройство usb-. картинка что такое ведущее устройство usb. картинка . Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Если никакая клавиша не нажата ведомый обязан ответить и отвечает NAK. Такие пакеты хост передает примерно 1 раз в 10ms и устройство если не нажата клавиша передает NAK.

А вот когда на клавиатуре нажимается какая-нибудь клавиша, ведомый ответит сначала DATA0 пакетом и следом пакет ACK.

что такое ведущее устройство usb. . что такое ведущее устройство usb фото. что такое ведущее устройство usb-. картинка что такое ведущее устройство usb. картинка . Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Количество передаваемых байт в DATA0 зависит от типа клавиатуры, то есть каждый решает сколько использовать байт для передачи скан кода нажатой клавиши. Клавиатура сообщает по стандартному протоколу через EP0 о своих настройках.

Видно как хост тупо чередует EP0 и EP2.

Если не возникает какого-то прерывания у девайса

Тут надо в регистры лезть и отсрочки уже не будет. Какие мысли возникают в первую очередь. Прерывания маскируются вроде (надо проверить).

что такое ведущее устройство usb. . что такое ведущее устройство usb фото. что такое ведущее устройство usb-. картинка что такое ведущее устройство usb. картинка . Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

В процессе сверки регистров мы находим отличия в OTG_FS_GLOBAL, исправляем, заодно изучаем назначение регистров и в какой-то момент даже ловим __HAL_PCD_IS_INVALID_INTERRUPT (на картинке выше видно). Ура хоть что-то.

Момент истины

Где эта таблица, где ее адреса.

#define USB_OTG_FS_PERIPH_BASE 0x50000000U [stm32f205xx.h]
.
#define USB_OTG_FS ((USB_OTG_GlobalTypeDef *) USB_OTG_FS_PERIPH_BASE) [stm32f205xx.h]
.

Опять момент истины

Скан коды USB HID клавиатур это не ASCII коды и не не коды PS/2 клавы.

Источник

Русские Блоги

USB2.0 обзор и основа протокола

что такое ведущее устройство usb. 490c2f5ea1555c10cb129f42b8931fe0. что такое ведущее устройство usb фото. что такое ведущее устройство usb-490c2f5ea1555c10cb129f42b8931fe0. картинка что такое ведущее устройство usb. картинка 490c2f5ea1555c10cb129f42b8931fe0. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Интерфейс шины USB

1 стандарт USB интерфейса

Стандартный разъем USB имеет тип A, тип B и тип Mini B, каждый тип разделен на вилку и розетку.

USB использует режим дифференциальной передачи, две линии передачи данных D + и D-.

Для режима полной скорости есть несколько важных сигналов:

что такое ведущее устройство usb. c7527a7c02a379a65125a7eaf4fdd11e. что такое ведущее устройство usb фото. что такое ведущее устройство usb-c7527a7c02a379a65125a7eaf4fdd11e. картинка что такое ведущее устройство usb. картинка c7527a7c02a379a65125a7eaf4fdd11e. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

что такое ведущее устройство usb. 12fdbc4f161bcad26644d99ae9664886. что такое ведущее устройство usb фото. что такое ведущее устройство usb-12fdbc4f161bcad26644d99ae9664886. картинка что такое ведущее устройство usb. картинка 12fdbc4f161bcad26644d99ae9664886. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

3 USB кодирование и декодирование данных и вставка битов

USB использует NRZI (кодирование без возврата к нулю) для кодирования передаваемого пакета данных. который:
Входные данные 0, закодированные как «инверсия уровня», входные данные 1, закодированные как «уровень без изменений»

что такое ведущее устройство usb. 800c47f996e0df02da93904aa9193316. что такое ведущее устройство usb фото. что такое ведущее устройство usb-800c47f996e0df02da93904aa9193316. картинка что такое ведущее устройство usb. картинка 800c47f996e0df02da93904aa9193316. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Битовая вставка должна гарантировать, что в переданной последовательности данных достаточно изменений уровня. Введите данные при заполнении объектов, то есть сначала заполните, а затем закодируйте. Для каждых 6 последовательных «1» в потоке данных, один «0» должен быть вставлен.
Приемник декодирует поток кода NRZI, затем распознает биты вставки и отбрасывает их.

что такое ведущее устройство usb. 8b4e180d8bada5bb46e358e72f7fe27e. что такое ведущее устройство usb фото. что такое ведущее устройство usb-8b4e180d8bada5bb46e358e72f7fe27e. картинка что такое ведущее устройство usb. картинка 8b4e180d8bada5bb46e358e72f7fe27e. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

4 Топология USB

что такое ведущее устройство usb. 7a10f532278132022f2a6f70d3708f2f. что такое ведущее устройство usb фото. что такое ведущее устройство usb-7a10f532278132022f2a6f70d3708f2f. картинка что такое ведущее устройство usb. картинка 7a10f532278132022f2a6f70d3708f2f. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

что такое ведущее устройство usb. 9b205996d81ada6a5e12ee5fe3511686. что такое ведущее устройство usb фото. что такое ведущее устройство usb-9b205996d81ada6a5e12ee5fe3511686. картинка что такое ведущее устройство usb. картинка 9b205996d81ada6a5e12ee5fe3511686. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

5 USB логических компонентов

что такое ведущее устройство usb. 4cb43b07577dde412fa1b01e115b6732. что такое ведущее устройство usb фото. что такое ведущее устройство usb-4cb43b07577dde412fa1b01e115b6732. картинка что такое ведущее устройство usb. картинка 4cb43b07577dde412fa1b01e115b6732. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Ⅱ USB-устройство

1 режим питания устройства USB

Существует два способа питания для USB-устройств:
1) Автономное оборудование: оборудование получает рабочее напряжение от внешнего источника питания.
2) Оборудование с питанием от шины: оборудование получает очки от VBUS (5v)

Для устройств с питанием от шины различают маломощные и мощные USB-устройства.
Для устройств с низким энергопотреблением максимальная потребляемая мощность не превышает 100 мА.
Для устройств большой мощности максимальное потребление энергии при перечислении не превышает 100 мА, а потребление энергии не превышает 500 мА после того, как перечисление завершает настройку.

Оборудование находится в счетном проекте, черезДескриптор конфигурацииСообщить хосту о режиме питания и потребляемой мощности.

2 механизм обнаружения вставки USB-устройства

что такое ведущее устройство usb. 6de442d48ed97cc69ccc28b7b8f2cffc. что такое ведущее устройство usb фото. что такое ведущее устройство usb-6de442d48ed97cc69ccc28b7b8f2cffc. картинка что такое ведущее устройство usb. картинка 6de442d48ed97cc69ccc28b7b8f2cffc. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

3 Состояние устройства USB

Устройство USB имеет шесть состояний: подключение, питание, инициализация, распределение адресов, конфигурация и приостановка. Схема перехода состояний следующая.

что такое ведущее устройство usb. 7748b84b166e4c32545ca98b761463cf. что такое ведущее устройство usb фото. что такое ведущее устройство usb-7748b84b166e4c32545ca98b761463cf. картинка что такое ведущее устройство usb. картинка 7748b84b166e4c32545ca98b761463cf. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

4 Процесс перечисления USB-устройств

В соответствии со статусом устройства USB, хост будет выполнять следующие действия на устройстве USB:

что такое ведущее устройство usb. 3bc4e0f060549fcf228b961a7d9a248b. что такое ведущее устройство usb фото. что такое ведущее устройство usb-3bc4e0f060549fcf228b961a7d9a248b. картинка что такое ведущее устройство usb. картинка 3bc4e0f060549fcf228b961a7d9a248b. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

В процессе перечисления используется передача управления.

Device:12 01 0100. Device Descriptor
Ведущий: Сколько у вас функций?
Device:09 02 09. Configuration Descriptor
Host: Сколько интерфейсов имеет каждая функция?
Device:09 04 00. Interface Descriptor
Host: Какие конечные точки используются для каждого интерфейса?
Device:06 05 82. Endpoint Descriptor
Ведущий: Хорошо, я знаю, кто вы, давайте начнем передачу оборудования!
Device:OK,Read Go!

5 USB дескриптор

Существует 11 типов дескрипторов USB:

что такое ведущее устройство usb. 7977ba3e85406911a833984f17f5d910. что такое ведущее устройство usb фото. что такое ведущее устройство usb-7977ba3e85406911a833984f17f5d910. картинка что такое ведущее устройство usb. картинка 7977ba3e85406911a833984f17f5d910. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Первый байт каждого дескриптора описывает количество байтов, содержащихся в дескрипторе, а второй раздел описывает тип описания.

Источник

Все особенности интерфейса USB – подключение без путаницы

что такое ведущее устройство usb. 05143994. что такое ведущее устройство usb фото. что такое ведущее устройство usb-05143994. картинка что такое ведущее устройство usb. картинка 05143994. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Сегодня практически ни одно устройство не может обойтись без USB. Порты этого стандарта присутствуют не только на компьютерах, но и на мультимедийном оборудовании, аудиовизуальном оборудовании и даже бытовой технике. Они используются для быстрой передачи данных из внешней памяти, а также для питания и зарядки.

Универсальная последовательная шина

USB (Universal Serial Bus) в настоящее время, пожалуй, самый популярный способ подключения компьютерного оборудования.

Интерфейс разработан для стандартизации взаимодействия периферийных устройств с компьютером. Все предположения были реализованы, и USB успешно заменил традиционные последовательные и параллельные порты, разъёмы PS/2 (здесь вы также можете использовать адаптер USB-PS/2) или даже более старый DIN.

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

что такое ведущее устройство usb. 2013.12.05 10h53m37s. что такое ведущее устройство usb фото. что такое ведущее устройство usb-2013.12.05 10h53m37s. картинка что такое ведущее устройство usb. картинка 2013.12.05 10h53m37s. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Однако, не объединяйте стандарт с используемыми разъёмами. Форма штекера не указывает на USB. Это две совершенно разные проблемы. Разъемы менялись независимо.

Развитие USB

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

Работа над новым интерфейсом началась в начале 90-х годов, когда инженер Intel Аджай Бхатт решил, что использование компьютерной периферии должно быть намного проще. Ему удалось убедить работодателя, коллег и другие компании принять его точку зрения, а через несколько лет определить параметры и возможности стандарта и представить первые устройства.

Во время своей работы у него была одна мысль: «Вы берете устройство, подключаете его к компьютеру, и оно работает». Помимо Intel, в разработке стандарта также участвовали такие компании, как Compaq, DEC, IBM, Microsoft, NEC и Nortel.

Начало эры USB

Cтандарт USB был определен в конце 1995 года, и с 1996 года стали появляться компьютеры с новыми портами. Microsoft добавила поддержку USB в Windows 95 OSR2.1, но система требовала специального обновления. Первый большой показ рабочих устройств состоялся на выставке Comdex в Лас-Вегасе в 1998 году.

Apple не участвовала в работе над стандартом, но именно эта компания впервые представила компьютер, оснащенный только USB-портами в том же году. Всё стало быстро меняться, когда появилась Windows 98. Рынок был «наводнен» различными устройствами нового стандарта.

Интерфейс USB предлагал возможность самоконфигурации, это означало, что пользователю не нужно корректировать настройки, такие как прерывания или адреса памяти (до эры USB это было проклятием пользователей).

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

Преимущество USB

Дополнительным преимуществом USB является возможность подключения нескольких внешних устройств к одному разъему. Один контроллер USB может обрабатывать 127 подключений. Чтобы сделать возможным подключение такого количества кабелей вообще, используются специальные концентраторы со многими выходами. Концентраторы могут быть каскадированы до пяти уровней. Концентратор может быть частью компьютера, отдельным устройством или внешним оборудованием – монитором или клавиатурой.

Максимальная длина USB-кабеля для стандартов USB 1.x и 2.x ограничена 5 метрами. Для версии 3.x стандарт ничего не говорит о длине, но определяет электрические требования, которым должно соответствовать соединение. Используя медные провода, на практике получается примерно 3 метра.

По прошествии более двадцати лет мы пришли к третьей версии стандарта USB, а готовится четвертая. Скорость передачи данных с использованием этого интерфейса за это время увеличилась в несколько тысяч раз, а разъёмы, использованные за эти годы, несколько раз меняли свой внешний вид.

USB – быстро, быстрее, ещё быстрее

Первая версия стандарта USB имела две скорости передачи данных. USB 1.0 позволил достичь скорости 12 Мбит/с (Full Speed) и 1,5 Мбит/с в режиме низкой скорости. Как отмечает Аджай Бхатт, переход в более медленный режим, вероятно, «спас» USB от сбоев. Первоначально он не был предусмотрен и был добавлен только по просьбе разработчиков программного обеспечения Microsoft.

Планируя поддержку мыши в Windows, они пришли к выводу, что 12 Мбит/с – это «слишком быстро». Они предсказали, что более быстрый режим работы может потребовать экранирования кабелей, а это означает, что кабели компьютерных мышей станут слишком жесткими для комфортной работы, а затраты на их производство будут слишком высокими.

Они решили, что если стандарт не будет использовать более низкие скорости, они не смогут реализовать его в системе. После обновления стандарта до версии 1.1 в 1998 году электрические параметры разъёма были улучшены, что облегчило передачу сигналов на большие расстояния.

В 2000 году была опубликована спецификация USB 2.0. Так называемый режим Hi Speed был добавлен к двум предыдущим режимам. Это позволило передавать данные со скоростью 480 Мбит/с. В дополнение к более высокой производительности были введены новые разъемы и усовершенствованы стандарты электропитания.

В новой версии точно определен способ загрузки. Максимальный ток, который мог протекать через разъем, составлял 500 мА. В то же время два устройства могут быть подключены друг к другу без использования хоста.

USB 2.0 правил на рынке компьютерных разъёмов в течение следующих 10 лет.

С 2010 года пользователи могут использовать третий вариант USB. За прошедшее время было выделено несколько поколений этого стандарта, а названия были изменены несколько раз. В базовой версии 3.0 появился режим Super Speed, позволяющий передавать данные со скоростью 5 Гбит/с. С 2013 года данные могут передаваться со скоростью 10 Гбит/с. Это, так называемый, режим Super Speed+, известный по USB 3.1. Спецификация варианта USB 3.2, опубликованная в 2017 году, увеличила скорость передачи в режиме Super Speed+ до 20 Гбит/с.

В конечном итоге, USB 3.0 получил название USB 3.2 Gen1, USB 3.1 – USB 3.2 Gen2, а USB 3.2 – USB 3.2 Gen2x2. В соответствии с рекомендациями организации по стандартизации USB, производители устройств должны помечать розетки и вилки Super Speed синим цветом и логотип SS.

Сила USB

Силу тока в разъёмах типа A и B стандарта USB 3.2 увеличили до 900 мА (1,5 A для разъемов питания). Разъём C, который заменяет все другие более ранние разъемы, однако, допускает максимальный ток 3А при стандартном напряжении 5В. Розетки питания USB в этой версии имеют напряжение 20В и максимальный ток 5А. В результате вы можете получить до 100 Вт мощности. Этого достаточно, например, для питания ноутбука.

Постоянно возрастающие требования к эффективности передачи данных привели к потребности в разработке нового стандарта. Спецификация USB 4 была опубликована в 2019 году, а первые устройства должны появиться во второй половине этого года. Максимальная производительность разъёма составляет 40 Гбит/с. USB 4 основан на протоколе Thunderbolt 3 и полностью совместим с ним.

Путаница с розетками USB

В первой версии USB предусмотрены только два типа разъемов стандартного размера – штекеры плоского сечения, обозначенные как тип A, и вилка квадратной формы, обозначенная как тип B.

Беспорядок пришёл с USB 2.0. К стандартному размеру присоединились мини- и микро-. Мини-размер имел три варианта – A, B и AB, а микро-размер два – A и B. Мини-вариант был создан для работы мобильных устройств. Однако, он был очень «урезан» производителями, поэтому необходимо было снова адаптировать розетки и вилки. Тогда был представлен микро-разъём с толщиной около половины мини.

Начиная с версии USB 3.0, используются только традиционные, стандартные вилки и розетки A и B. Сокеты Micro B всё ещё встречаются, но исчезнут с популяризацией стандарта 3.2, то есть, в соответствии с текущим наименованием, – 3.2 Gen2x2.

Здесь царит разъем USB-C и будет единственным в случае стандарта USB 4.0

что такое ведущее устройство usb. standart usb. что такое ведущее устройство usb фото. что такое ведущее устройство usb-standart usb. картинка что такое ведущее устройство usb. картинка standart usb. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Разъёмы и вилки USB 2.0 и 3.0 A совместимы друг с другом. Порты USB 3.0 типа B немного крупнее, чем в версии 2.0, и позволяют подключать более крупные разъемы 3.0 B и меньшие 2.0 B. Однако, разъемы 3.0 B не соответствуют входу 2.0. Разъемы B на микро версии идентичны для USB 2.0 и для USB 3.0. USB-C больше не совместим со своими предшественниками. Как видите, очень легко потеряться среди типов USB-разъемов.

Тот, кто ожидает разумных и недвусмысленных меток в этих джунглях, будет разочарован. Спецификация USB не предоставляет, например, цветового кода отдельных разъёмов. Мы уже писали, что единственное обозначение, которое оно предлагает производителям (но не требует), – это синий цвет суперскоростных портов, т.е. начиная с версии 3.0 и выше. Другие цвета розеток и вилок, которые иногда встречаются в разных устройствах, обычно являются маркировкой, принятой отдельными производителями.

Подводя итог, можно сказать, что черный разъем и черный штекер – это USB 2.0, а синий порт – вариант 3.x, тогда как фиолетовый или зеленый могут, хотя и не обязательно, означать разъём для быстрой зарядки с более высоким током. Оранжевый или красный цвета часто являются портами, которые позволяют заряжать устройство, в то время как компьютер или ноутбук, оборудованный этой розеткой, находится в спящем состоянии (так называемые, спящие и зарядные порты). Однако, чтобы всё не казалось таким простым, оранжевый иногда означает порты быстрой зарядки Qualcomm Quick Charge (QQC), стандарт для зарядки мобильных устройств с более высокой производительностью, чем указано в спецификации USB.

USB и Thunderbolt

Thunderbolt – это конкурирующая технология для подключения устройств и передачи данных. Первоначально разработанный отдельно, начиная с версии 3, он частично подключается к USB 3.x. Пока только общий доступ к тому же разъему USB-C. У Thunderbolt лучшие параметры по сравнению с USB 3.2 Gen2x2. Максимальная скорость передачи, которой достигает Thunderbolt 3, составляет 40 Гбит/с. Протокол позволяет подключить два 4K-монитора и отправить на них картинку с частотой 60 Гц, питание устройств напрямую из порта. Вы даже можете использовать его для подключения внешних видеокарт.

USB 3.2 даёт только половину указанной скорости передачи данных, возможность подключения только одного 4K-монитора и отсутствие подключения цепочки устройств. Thunderbolt 3 имеет те же возможности, что и USB 3.2, но USB 3.2 не может делать то, что делает Thunderbolt. Если Thunderbolt 3 не может, например, идентифицировать устройство как аппаратное обеспечение Thunderbolt, он попытается подключиться к нему по протоколу USB.

USB 4 будет полным эквивалентом Thunderbolt 3. Оба стандарта будут полностью интегрированы друг с другом и будут иметь практически одинаковые возможности. Весьма вероятно, что Thunderbolt 3 исчезнет с рынка. Тем не менее, нет точной и достоверной информации о том, какие изменения планирует Intel в отношении стандарта Thunderbolt 4.

Источник

Популярно о USB. Часть 1

Немоляев А. В, г. Екатеринбург

Введение

У меня возникла необходимость разобраться с USB и, к своему удивлению, я обнаружил, что материалов по USB на русском языке не так уж много. Решил обобщить свой опыт изучения USB и передать всем желающим с ним познакомиться.

что такое ведущее устройство usb. Mean Well APC 728%D1%8590. что такое ведущее устройство usb фото. что такое ведущее устройство usb-Mean Well APC 728%D1%8590. картинка что такое ведущее устройство usb. картинка Mean Well APC 728%D1%8590. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Публикация адресована начинающим разработчикам, тем, кто не знаком с 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 базового уровня и протоколы устройств классов. Протоколы устройств классов – это некоторая надстройка над протоколами нижнего уровня. Логично сначала разобраться с базовыми принципами, а уж потом со всем остальным.

Виртуальные каналы и конечные точки

Все примеры в статье даются в среде операционной системы 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 используются два канала по прерыванию и один канал управления.

что такое ведущее устройство usb. Fig 1. что такое ведущее устройство usb фото. что такое ведущее устройство usb-Fig 1. картинка что такое ведущее устройство usb. картинка Fig 1. Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

Рисунок 1.

Изохронные каналы – применяются для передачи потока данных, например аудио и видео. Характерной особенностью является отсутствие повторной передачи данных в случае ошибок. Поврежденные пакеты просто отбрасываются без запроса повторной передачи. Такая политика позволяет воспроизводить поток данных в реальном времени без временных задержек. С периодом в 1 миллисекунду хост запрашивает данные, и буфер USB-устройства передается на хост. В веб-камерах используются изохронные каналы.

Канал передачи массивов данных используется в типах устройств, не требующих временной привязки при передаче данных и оперативной реакции на внешние события. Принципиальное отличие от двух предыдущих типов каналов заключается в том, что временной интервал, по истечении которого данные будут доставлены, не гарантирован. В изохронном канале хост опрашивает устройство с периодичностью 1 мс. В канале передачи по прерыванию хост может опрашивать USB-устройство с периодом от 1 до 255 миллисекунд. В канале передачи массивов хост начинает запрашивать данные для приема в свободное от всех остальных передач время. В случае искажения данных при передаче происходит повторная передача искаженных данных. В моей флэшке используются два канала передачи массивов данных: один на передачу и один на прием, не считая канала управления.

У 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).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *