Контроллеры usb что это
Шина USB обеспечивает обмен данными между хост-компьютером и множеством периферийных устройств (ПУ). USB является единой централизованной аппаратно-программной системой массового обслуживания множества устройств и множества прикладных программных процессов. Связь программных процессов со всеми устройствами обеспечивает хост-контроллер с многоуровневой программной поддержкой. Этим USB существенно отличается от традиционных периферийных интерфейсов (портов LPT, COM, GAME, клавиатуры, мыши и т. п.), сравнение этих типов подключений приводится в таблице.
Таблица. Сравнение шины USB с традиционными периферийными интерфейсами
Традиционные интерфейсы (COM, LPT, Game…) | Шина USB |
Подключение каждого устройства в общем случае требует присутствия собственного контроллера (адаптера) 1 | Все устройства подключены через один хостконтроллер |
Каждый контроллер занимает свои ресурсы (области в пространстве памяти, ввода/вывода, а также запросы прерывания) | Ресурсы занимает только хост-контроллер |
Малое количество устройств, которые возможно одновременно подключить к компьютеру | Возможность подключения до 127 устройств |
Драйверы устройств могут обращаться непосредственно к контроллерам своих устройств, независимо друг от друга | Драйверы устройств обращаются только к общему драйверу хост-контроллера |
Независимость драйверов оборачивается непредсказуемостью результата одновременной работы с множеством устройств, отсутствием гарантий качества обслуживания (возможность задержек и уменьшения скорости передачи) для различных устройств | Централизованный планируемый обмен обеспечивает гарантии качества обслуживания, что позволяет передавать мультимедийные изохронные данные наряду с обычным асинхронным обменом |
Разнообразие интерфейсов, разъемов и кабелей, специфичных для каждого типа устройств | Единый удобный и дешевый интерфейс для подключения устройств всех типов. Возможность выбора скорости работы устройства (1,5–15–480 Мбит/с) в зависимости от потребности |
Отсутствие встроенных средств обнаружения подключения/отключения и идентификации устройств, сложность поддержки PnP | Возможность «горячего» подключения/отключения устройств, полная поддержка PnP, динамическое конфигурирование |
Отсутствие средств контроля ошибок | Встроенные средства обеспечения надежной передачи данных |
Отсутствие штатного питания устройств | Возможность питания устройств от шины, а также наличие средств управления энергопотреблением |
1 — Возможностью подключения к одному контроллеру множества устройств обладает и шина SCSI, но ее параллельный интерфейс по сравнению с USB слишком дорог, громоздок и более ограничен в топологии.
Функции USB в Windows 10
Контроллеры двух ролей, которые могут функционировать как USB-узел или USB-устройство. Например, Телефон может подключаться к ПК как USB-устройству, или же он может подключаться к другим периферийным устройствам USB как к USB-узлу.
USB типа C, перевернутый, обратимый USB-разъем приблизительно того же размера, что и соединитель USB Micro-B. Кроме того, тип USB-C обеспечивает поддержку следующих функций:
USB 2,0, 3,0 и теперь USB 3,1, позволяя изготовителям оборудования легко выбирать из множества контроллеров и периферийных устройств.
универсальные драйверы можно создавать для периферийных устройств USB, которые работают на всех Windows 10 устройствах, от интернета вещей (IOT) до серверов.
Партнерам рекомендуется протестировать эти функции с помощью комплекта «оборудование для лабораторий » и посетить блог группы USB Core для получения обновленных сведений о функциях и тестах хлк, включая следующие записи, связанные с Windows 10:
Запросы, пакеты и транзакции
Для передачи или приема данных клиентское ПО посылает к каналу пакет запроса ввода/вывода — IRP (Input/Output Request Packet) и ждет уведомления о завершении его отработки. Формат IRP определяется реализацией драйвера USBD в конкретной ОС. В IRP имеются только сведения о запросе (местоположение буфера передаваемых данных в оперативной памяти и длина передачи); от свойств конкретного текущего подключения (скорость, допустимый размер пакета) драйвер устройства абстрагируется. Отработкой запроса в виде транзакций на шине USB занимается драйвер USBD; при необходимости он разбивает на части длинные запросы (пакеты), пригодные для передачи за одну транзакцию. Транзакция на шине USB — это последовательность обмена пакетами между хостом и ПУ, в ходе которой может быть передан или принят один пакет данных (возможны транзакции, в которых данные не передаются). Отработка запроса считается завершенной, когда успешно выполняются все связанные с ним транзакции. «Временные трудности», встречающиеся при их выполнении (неготовность к обмену данными), до сведения клиентского драйвера не доводятся — ему остается только ждать завершения обменов (или выхода по тайм-ауту). Однако устройство может сигнализировать о серьезных ошибках (ответом STALL), что приводит к аварийному завершению запроса, о чем уведомляется клиентский драйвер. В этом случае отбрасываются и все последующие запросы к данному каналу. Возобновление работы с данным каналом возможно лишь после явного уведомления об обработке ошибочной ситуации, которое драйвер устройства делает с помощью специального запроса (тоже вызова USBD).
Длинные запросы разбиваются на транзакции так, чтобы использовать максимальный размер пакета. Последний пакет с остатком может оказаться короче максимального размера. Хост-контроллер имеет средства обнаружения приема от устройства «неполновесного» пакета, размер которого меньше ожидаемого. В запросе IRP указывается, следует ли особым образом реагировать на это событие. Особая реакция может быть двоякой:
- считать короткий пакет разделителем, указывающим на конец блока данных. При этом данный IRP завершается нормально и исполняются следующие запросы к данному каналу;
- считать короткий пакет признаком ошибки, по которому канал останавливается (все его последующие ожидающие запросы сбрасываются).
При передаче массивов использование укороченных пакетов в качестве разделителей наиболее естественно. Таким образом, например, в одном из вариантов протоколов для устройств хранения данных укороченные пакеты известной длины используются в качестве управляющих.
Технические характеристики и типы USB-контроллеров
Для спецификации USB1.1 предусмотрено два типа реализации таких устройств. К примеру, для USB1.0 компания Intel разработала контроллер последовательной шины USB двух типов - UHCI и OHCI. Их отличие заключается только в методе доступа к регистрам: регистры первого типа конструктивно расположены в пространстве системных портов, отвечающих за ввод-вывод информации, а логические микросхемы второго типа находятся в пространстве памяти персонального компьютера. Заметим, что контроллер USB типа OHCI считается более интеллектуальным, нежели UHCI, поскольку способен освобождать главный процессор от необходимости выполнять рутинные операции, связанные с передачей данных по шинам USB. Оба контроллера применяют 32-битную адресацию.
Для USB2.0 разработан контроллер универсальной последовательной шины USB типа EHCI, который способен поддерживать работу на высоких скоростях (480 мбит/с). В нем, благодаря разделенной транзакции, реализована поддержка низкоскоростного интерфейса USB1.1, что весьма актуально для более медленных устройств.
Для USB3.0 нужен универсальный контроллер типа XHCI. Он способен поддерживать обмен информацией на любой скорости.
Каналы
Коммуникационные каналы USB разделяются на два типа:
С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Полоса пропускания шины делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не вписывается в уже существующее распределение, запрос на выделение канала отвергается.
Каналы различаются и по назначению:
Интерфейс устройства, с которым работает клиентский драйвер, представляет собой связку клиентских каналов (pipe’s bundle). Для этих каналов драйверы устройств являются единственными источниками и потребителями передаваемых данных.
Минимальные требования к оборудованию для USB
USB является необязательным для всех устройств и компьютеров, на которых выполняется Windows 10. Windows 10 поддерживает следующие USB-контроллеры:
полный набор требований к оборудованию для Windows 10 см. в разделе минимальные требования к оборудованию.
Для чего нужен USB-контроллер?
Это устройство обеспечивает коммуникацию всех подключенных к шине периферийных приборов. USB-контроллер - это интеллектуальное устройство, которое способно осуществлять взаимодействие в обход центрального процессора с оперативной памятью персонального компьютера в режиме сквозного доступа к памяти. По типу интеграции такие устройства могут быть задействованы в составе системной логики либо в виде отдельных микросхем (чипов) как на самой материнской плате компьютера, так и на выносных платах (карта расширения). По методу подключения PCI USB-контроллер может быть выполнен для шин PCI и для PCI Express.
Запросы, пакеты и транзакции
Устраняем проблемы с контроллером универсальной последовательной шины USB
Какое-бы устройство с поддержкой USB не использовалось, будь то накопитель данных, принтер или мышь, связь между ним и компьютером обеспечивает контроллер универсальной последовательной шины USB или хост контроллер. Он есть на «борту» практически каждой материнской платы, но если требуется расширить возможности системы, можно приобрести дополнительную внешнюю плату (для подключения в слот PCI, PCI-E). К сожалению, иногда с контроллером возникают технические неполадки, поэтому нужно уметь их устранять.
Типичные проблемы
Во время эксплуатации USB оборудования проблемы возникают, как правило, по одной из причин:
- из-за переустановки операционной системы (ОС);
- в результате сбоя;
- при подключении устройства;
- после установки некорректной программы управления контроллером;
- в следствие повреждения драйвера (микропрограммы) хост контроллера;
- из-за конфликт старых устройств USB.
После таких событий, перестают работать переносной или флеш диск, принтер, сканер и другая аппаратура. За исключением физических повреждений наладить работу интерфейса USB можно, выполнив одно из следующих действий — установку или обновление драйвера хост контроллера, очистку системы от старых и неиспользуемых микропрограмм, восстановление ОС используя архивную копию или точку восстановления. Предварительно перед выполнением этих действий рекомендуется проверить, что в ОС Windows установлены все доступные обновления и удостовериться, что периферийное устройство исправно подключается на другом ПК.
Системный реестр
Иногда после обновления микрокодов (прошивок) или программ для работы с контроллером, подключаемое оборудование перестает функционировать – т.е. работает только до перезагрузки. После перезагрузки требуется установка оборудования заново. Это связано с тем, что некоторые производители записывают в реестре свои значения. Для возобновления нормального режима работы хост контроллера записи с наименованием «LowerFilters» и «UpperFilters» нужно удалить. Для этого необходимо:
Ручная установка драйвера по идентификатору
Иногда бывает, что драйвер некорректно установлен из-за неправильного определения конфигурации оборудования. В этом случае драйвер можно найти по уникальному идентификатору производителя (VEN/DEV). Находится он в «Диспетчере устройств» на закладке «Сведения» в поле «ИД оборудования». Например, если строка в Сведениях «pci ven 8086 dev 9c31 cc 0c03», то нам нужны значения ven 8086 и dev 9c31, по ним и будем осуществлять поиск.
С помощью полученного идентификатора контроллера универсальной последовательной шины USB можно уже скачать драйвер на одном из популярных сайтов, например devid.info.
Автоматический поиск драйвера
В этом режиме установки хост контроллер определяется с помощью операционной системы. Микропрограмма устанавливается либо из дистрибутива Windows, либо из центра обновления Microsoft Windows (необходимо наличие подключенного интернета). В «Диспетчере устройств» нажать на проблемном оборудовании «Обновить драйвер» и произвести «Автоматический поиск обновленных драйверов».
Windows Спецификации программы обеспечения совместимости оборудования для USB
программа Windows совместимости оборудования использует тесты в комплекте Windows Hardware Lab Kit (хлк), который можно использовать для диагностики проблем на ранних этапах процесса разработки, обеспечения совместимости драйверов с Windows и, при необходимости, сертификации устройств или систем. тесты в хлк могут проверить работу двух ролей и режима функционирования в любом выпуске Windows 10.
требования к программе System. основы. системусб. системекспосесусбпорт Windows совместимости оборудования перечислены в списке типов контроллеров USB, которые рекомендуются, поддерживаются или не поддерживаются.
Кадры и микрокадры
Хост организует обмены с устройствами согласно своему плану распределения ресурсов. Для этого хост-контроллер циклически с периодом 1 мс формирует кадры (frames), в которые укладываются все запланированные транзакции (cм. рисунок ниже). Каждый кадр начинается с посылки пакета-маркера SOF (Start Of Frame), который является синхронизирующим сигналом для изохронных устройств, а также для хабов. Кадры нумеруются последовательно, в маркере SOF передаются 11 младших бит номера кадра. В режиме HS каждый кадр делится на 8 микрокадров, и пакеты SOF передаются в начале каждого микрокадра (с периодом 125 мкс). При этом во всех восьми микрокадрах SOF несет один и тот же номер кадра; новое значение номера кадра передается в нулевом микрокадре. В каждом микрокадре может быть выполнено несколько транзакций, их допустимое число зависит от скорости, длины поля данных каждой из них, а также от задержек, вносимых кабелями, хабами и устройствами. Все транзакции кадров должны быть завершены до начала интервала времени EOF (End of Frame). Период (частота) генерации микрокадров может немного варьироваться с помощью специального регистра хост-контроллера, что позволяет подстраивать частоту для изохронных передач.
Кадрирование используется и для обеспечения живучести шины. В конце каждого микрокадра выделяется интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. Если хаб обнаружит, что с какого-то порта в это время ведется передача данных (к хосту), этот порт отключается, изолируя «болтливое» устройство, о чем информируется USBD.
Счетчик микрокадров в хост-контроллере используется как источник индекса при обращении к таблице дескрипторов кадров. Обычно драйвер USB составляет таблицу дескрипторов для 1024 последовательных кадров1, к которой он обращается циклически. С помощью этих дескрипторов хост планирует загрузку кадров так, чтобы кроме запланированных изохронных транзакций и прерываний в них всегда находилось место для транзакций управления. Свободное время кадров может заполняться передачами массивов. Спецификация USB позволяет занимать под периодические транзакции (изохронные и прерывания) до 90% пропускной способности шины, то есть времени в каждом микрокадре.
Универсальные шины USB являются популярным интерфейсом персонального компьютера. Они позволяют производить последовательное подключение различных устройств до 127 единиц. Универсальные USB-шины поддерживают функцию подключения/отключения приборов без выключения питания персонального компьютера. При этом подключаемые устройства могут запитываться непосредственно через интерфейс USB, что освобождает от необходимости использовать дополнительные блоки питания. В этой статье пойдет речь о таком устройстве, как USB-контроллер. Мы рассмотрим его назначение, технические характеристики и типы.
Технические характеристики и типы устройств
Для спецификации USB1.1 разработаны два типа таких приборов. Так для USB1.0 компанией Intel разработаны USB-контроллеры типа UHCI и OHCI. Отличие этих устройств заключается только в методе доступа к регистрам. В первом случае регистры конструктивно расположены в пространстве системных портов, отвечающих за ввод-вывод информации, а во втором - находятся в разделе памяти персонального компьютера. USB-контроллер типа OHCI считается более интеллектуальным по сравнению с типом UHCI. Это преимущество заключается в его способности освобождать главный процессор от необходимости выполнять рутинные операции, связанные с передачей данных по шинам USB. Оба контроллера применяют 32-битную адресацию.
Для USB2.0 разработан контроллер универсальной последовательной шины USB типа EHCI. Он способен поддерживать работу на высоких скоростях (480 Мбит/с). В этом контроллере благодаря разделенной транзакции реализована поддержка низкоскоростного интерфейса USB1.1 для поддержки более медленных устройств.
Для USB3.0 разработан скоростной USB-ХОСТ-контроллер типа XHCI, который способен поддерживать обмен информацией на всех трех скоростях.
Переустановка драйвера
Переустановка может понадобиться для исправления ошибок существующего драйвера и решения большинства проблем с корректным определением USB устройств. Хорошей практикой считается периодически проверять выход новых версий обновлений на сайте производителя и проводить их установку.
Для того, чтобы скачать нужный драйвер необходимо определить производителя материнской платы и модель. В Windows это выполняется в несколько шагов — запустить командную строку и выполнить команду «wmic baseboard get product, manufacturer», которая выведет производителя и модель платы. Есть еще несколько способов для получения этой информации – на коробке или в инструкции от материнской платы, при загрузке компьютера, или воспользовавшись утилитами – «Everest», «AIDA64». После определения модели нужно зайти на сайт производителя и найти микропрограмму в разделе (на разных сайтах разделы отличаются) «Сервис» или «Поддержка». Затем скачать наиболее свежую версию и установить ее.
По окончании установки, как правило требуется перезагрузка, затем рекомендуется проверить «Диспетчер устройств» — на предмет отсутствия проблем и подключить USB устройство.
Модель передачи данных
Каждая единица клиентского ПО (обычно представляемая драйвером) связывается с одним интерфейсом своего устройства (функции) монопольно и независимо (см. рисунок ниже). Связи на этом рисунке обозначают коммуникационные каналы (communication pipes), которые устанавливаются между драйверами устройств и их конечными точками. Каналы устанавливаются только с конечными точками устройств, относящимися к выбранным (из альтернативных) вариантам интерфейсов активной конфигурации. Другие конечные точки недоступны.
Восстановление системы
Также для возобновления работы оборудования можно воспользоваться «Восстановлениеv системы». В ОС Windows существует возможность отката операционной системы на ранее созданную точку восстановления (если функция включена). При этом нужно учитывать, что все программы, драйвера и обновления, установленные после создания точки восстановления – будут удалены. Документы при этом затронуты не будут. Методика для восстановления следующая:
Оборудование
Для повышения эффективности питания и повышения производительности рекомендуется, чтобы USB-контроллеры USB 3,0 совместимы с контроллером XHCI, интегрированным в SoC или набор микросхем. Операционная система поддерживает стандартные контроллеры EHCI и XHCI 1,0, включая регистры отладки. Если контроллер узла не полностью совместим с опубликованными стандартными спецификациями, то отклонения должны быть документированы, а поддержка контроллера узла определяется отдельно для каждого случая. Кроме того, для контроллеров узла XHCI важна возможность отладки.
У меня возникла необходимость разобраться с 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 базового уровня и протоколы устройств классов. Протоколы устройств классов – это некоторая надстройка над протоколами нижнего уровня. Логично сначала разобраться с базовыми принципами, а уж потом со всем остальным.
Виртуальные каналы и конечные точки
Все примеры в статье даются в среде операционной системы 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 миллисекунд. В канале передачи массивов хост начинает запрашивать данные для приема в свободное от всех остальных передач время. В случае искажения данных при передаче происходит повторная передача искаженных данных. В моей флэшке используются два канала передачи массивов данных: один на передачу и один на прием, не считая канала управления.
У 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-контроллер. Такие устройства выполняются в виде платы расширения PCI-типа либо PC-карт для ноутбуков. Выносные контроллеры выпускаются с поддержкой USB1.0, 2.0 и 3.0. Если вы надумали установить себе такое устройство, лучше выбирать более скоростное, так как их стоимость практически одинаковая. По такому принципу можно заменить уже существующий контроллер на более скоростной. Однако при такой модернизации не следует забывать о том, что для полноценной работы устройства понадобится переустановка драйверов для данного контроллера.
Универсальные последовательные шины USB - это довольно популярный интерфейс ПК. С его помощью можно подключать одновременно 127 различных устройств. Они поддерживают функцию подключения/отключения приборов, при этом выключать компьютер нет надобности. Подсоединяемые устройства могут запитываться непосредственно через шину USB, благодаря чему отпадает необходимость использования дополнительных блоков питания. Сегодня мы поговорим о такой схеме, как контроллер универсальной последовательной шины USB. Мы рассмотрим его назначение и существующие на сегодняшний день типы.
Проверка работоспособности
Убедиться в правильности работы контроллера универсальной последовательной шины можно через «Диспетчер устройств»:
- Открыть «Панель управления» (в командной строке набрать команду «control» или воспользоваться меню «Пуск»).
- Открыть «Диспетчер устройств» (если режим просмотра панели управления — категории, то находится здесь — «Оборудование и звук\Устройства и принтеры\Диспетчер устройств» или проще всего в командной строке набрать «devmgmt»).
- При наличии проблем, в разделе «Другие устройства» или «Контроллеры USB», рядом с соответствующей записью будет желтая иконка с восклицательным знаком.
Контроллер в «Диспетчере» может именоваться по-разному в зависимости от производителя, модели оборудования и локализации ОС. Например, «Intel 631xESB/6321/3100 Chipset USB2 расширенный хост контроллер – 268С» обозначает, что он выполнен на базе микросхемы Intel 631 xESB, c поддержкой режима USB 2.0.
Примеры возможных состояний оборудования:
Рекомендации по использованию USB для Windows 10
- Как правило, USB должен «просто работать» с минимальным вмешательством пользователя.
- Предполагается, что оборудование или встроенное по предоставило первоначальные политики, появившиеся с двойной ролью, поставкой питания и функциями альтернативного режима.
- Windows выполнит корректировки политики, чтобы улучшить взаимодействие с пользователем и помочь пользователю устранить неполадки в случае сбоя.
- Партнеры должны убедиться в том, что их USB-оборудование (например, системы, концентраторы, кабели или аксессуары) может взаимодействовать с другим USB-оборудованием, идущим или уже на рынке. Мы рекомендуем участие в событиях взаимодействия и соответствия требованиям USB-IF.
- Мы рекомендуем поддерживать альтернативный режим Дисплайпорт для вывода видео и аудио через USB Type-C.
- Для систем с несколькими портами USB, которые имеют различные возможности USB, рекомендуется сделать так, чтобы они были понятны для клиентов, у которых есть какие-либо возможности. Например, значок, напечатйся рядом с USB-портом, можно использовать для отображения того, что порт поддерживает альтернативные режимы и приставку питания.
- Партнеры должны следовать последней спецификации ACPI, чтобы правильно описать их USB-порты, такие как методы _UPC и _PLD.
Поддерживаемые рекомендации для USB от Windows 8.1
эти рекомендации Windows 8.1 поддерживаются для Windows 10.
Для чего нужен контроллер универсальной последовательной шины USB?
Заключение
Итак, если вы являетесь владельцем старого компьютера, не оснащенного USB-портами, не расстраивайтесь: посредством незначительной модернизации вы можете установить USB-контроллер. Такие устройства выполняются в виде платы расширения PCI-типа либо PC-карт для ноутбуков. Упомянутые контроллеры выпускаются с поддержкой USB1.0, 2.0 и 3.0. Если вы надумали установить себе одно из этих устройств, остановите свой выбор на более скоростном, благо, их стоимость практически одинаковая. Еще пример: если на вашем ПК поддерживаются только USB-версии 1.0 или 1.1, вы может установить контроллер, который обеспечит версию 3.0.
сценарии 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
Основные понятия
Архитектура USB допускает четыре базовых типа передач данных между хостом и периферийными устройствами:
Аппаратная часть USB включает:
- периферийные устройства USB, несущие полезные функции (USB-functions);
- хост-контроллер (Host Controller), обеспечивающий связь шины с центром компьютера, объединенный с корневым хабом (Root Hub), обеспечивающим точки подключения устройств USB. Существует два варианта хост-контроллеров USB 1.x — UHC (Universal Host Controller) и OHC (Open Host Controller), поддерживающие скорости FS/LS; высокую скорость шины USB 2.0 (HS и только) поддерживает EHC (Enhanced Host Controller);
- хабы USB (USB Hubs), обеспечивающие дополнительные точки подключения устройств;
- кабели USB, соединяющие устройства с хабами.
Программная часть USB включает:
- клиентское ПО (CSw, Client Software) — драйверы устройств USB, обеспечивающие доступ к устройствам со стороны прикладного ПО. Эти драйверы взаимодействуют с устройствами только через программный интерфейс с общим драйвером USB (USBD). Непосредственного обращения к каким-либо регистрам аппаратных средств драйверы устройств USB не выполняют;
- драйвер USB (USBD, USB Driver), «заведующий» всеми USB-устройствами системы, их нумерацией, конфигурированием, предоставлением служб, распределением пропускной способности шины, мощности питания и т. п.;
- драйвер хост-контроллера (HCD, Host Controller Driver), преобразующий запросы ввода/вывода в структуры данных, размещенные в коммуникационной области оперативной памяти, и обращающийся к регистрам хост-контроллера. Хост-контроллер выполняет физические транзакции, руководствуясь этими структурами данных.
Драйверы USBD и HCD составляют хост-часть ПО USB; спецификация USB очерчивает круг их задач, но не описывает интерфейс между ними. Физическое устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Физические устройства USB могут быть комбинированными (compound devices): включать в себя несколько устройств-функций, подключенных к внутреннему хабу, а также предоставлять своим внутренним хабом дополнительные внешние точки подключения.
Работой всех устройств шины USB управляет хост-контроллер (host controller), являющийся программно-аппаратной подсистемой хост-компьютера. Хост-контроллер является интеллектуальным устройством шины PCI или составной частью «южного» хаба (моста) системной платы, интенсивно взаимодействующим с оперативной памятью.
Физическая топология шины USB — многоярусная звезда (см. рисунок, а). Ее вершиной является хост-контроллер, объединенный с корневым хабом (root hub). Хаб является устройством-разветвителем, он может служить и источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до пяти уровней (ярусов) каскадирования хабов (не считая корневого). Поскольку комбинированные устройства содержат внутри себя хаб, их подключение к хабу пятого яруса уже недопустимо. Каждый промежуточный хаб имеет несколько нисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и один восходящий (upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба.
Логическая топология USB — звезда. Хабы (включая корневой) создают иллюзию непосредственного подключения каждого логического устройства к хост-контроллеру (см. рисунок ниже, б). В этой звезде устанавливаются сугубо подчиненные отношения по системе опроса-ответа: хост-контроллер по своей инициативе передает данные к выбранному устройству или принимает их. Устройство по своей инициативе передавать данные не может; непосредственные передачи данных между устройствами невозможны. Устройство по своей инициативе может лишь сигнализировать о «пробуждении» (wakeup), для чего используется специальная сигнализация, но не передача данных.
Физический интерфейс USB прост и изящен. Конструкция кабелей и коннекторов USB не дает возможности ошибиться при подключении устройств (см. рисунок ниже, а и б). Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение (см. рисунок ниже, в). Гнезда типа «A» устанавливаются только на нисходящих портах хабов, вилки типа «A» — на шнурах периферийных устройств или восходящих портов хабов. Гнезда и вилки типа «B» используются только для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств — мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). Для малогабаритных устройств имеются разъемы mini-B, а для поддержки OTG (On-the-Go) имеются и вилки mini-A, и розетки miniAB. Хабы и устройства обеспечивают возможность «горячего» подключения и отключения с сигнализацией об этих событиях хосту.
При планировании соединений следует учитывать способ питания устройств: устройства, питающиеся от шины, как правило, подключают к хабам, питающимся от сети. К хабам, питающимся от шины, подключают лишь маломощные устройства — так, к клавиатуре USB, содержащей внутри себя хаб, подключают мышь USB и другие устройства-указатели (трекбол, планшет).
Логическое устройство USB представляет собой набор независимых конечных точек (Endpoint, EP), с которыми хост-контроллер (и клиентское ПО) обменивается информацией. Каждому логическому устройству USB (как функции, так и хабу) конфигурационная часть ПО хоста назначает свой адрес (1–127), уникальный на данной шине USB. Каждая конечная точка логического устройства идентифицируется своим номером (0–15) и направлением передачи (IN — передача к хосту, OUT — от хоста). Точки IN4 и OUT4, к примеру, представляют собой разные конечные точки, с которыми могут общаться даже модули клиентского ПО. Набор конечных точек зависит от устройства, но всякое устройство USB обязательно имеет двунаправленную конечную точку 0 (EP0), через которую осуществляется его общее управление. Для прикладных целей используются конечные точки с номерами 1–15 (1–2 для низкоскоростных устройств). Адрес устройства, номер и направление конечной точки однозначно идентифицируют приемник или источник информации при обмене хост-контроллера с устройствами USB. Каждая конечная точка имеет набор характеристик, описывающих поддерживаемый тип передачи данных (изохронные данные, массивы, прерывания, управляющие передачи), размер пакета, требования к частоте обслуживания.
Устройство может выполнять несколько различных функциональных задач: например, привод CD-ROM может обеспечивать проигрывание аудиодисков и работать как устройство хранения данных. Для решения каждой задачи в устройстве определяется интерфейс — набор конечных точек, предназначенных для выполнения данной задачи, и правила их использования. Таким образом, каждое устройство должно обеспечивать один или несколько интерфейсов. Наличие нескольких интерфейсов позволяет нескольким драйверам, каждый из которых обращается только к своему интерфейсу (представляющему часть устройства USB), работать с одним и тем же устройством USB. Каждый интерфейс может иметь один или несколько альтернативных вариантов (альтернативных установок — alternate settings), из которых в данный момент активным может быть только один. Варианты различаются наборами (возможно, и характеристиками) используемых конечных точек.
Набор одновременно поддерживаемых интерфейсов составляет конфигурацию устройства. Устройство может иметь одну или несколько возможных конфигураций, из которых на этапе конфигурирования хост выбирает одну, делая ее активной. От выбранной конфигурации зависит доступная функциональность, и зачастую — потребляемая мощность. Пока устройству не назначен номер выбранной конфигурации, оно не может функционировать в прикладном смысле и ток потребления от шины не должен превышать 100 мА. Хост выбирает конфигурацию исходя из доступности всех ресурсов, затребованных данной конфигурацией, включая и ток потребления от шины.
Удаление старых драйверов
Со временем, из-за отключенных и неиспользуемых устройств в ОС накапливается много старых драйверов, которые могут вызывать конфликт при установке нового оборудования. Такое оборудование желательно удалить, но сначала его требуется отобразить в «Диспетчере устройств» воспользовавшись следующим способом:
Универсальная последовательная шина (USB)
В этом документе приводятся рекомендации по проектированию и разработке компонентов USB. Цель этого документа — позволить партнерам экосистемы создавать устройства с оптимизированными возможностями USB.
Читайте также: