|
|
||||
|
|
Обзор USB шинысентябрь 2003USB вытесняет паралельный и последовательный интерфейсы во всех сферах применения
Обзор
USB
Управление питанием
USB ХОСТы и концентраторы управляют питанием путем включения и выключения питания индивидуальных устройств, електрически отключая проблемые устройства из системы. Позже, они смогут сообщать перефирии о переходе в режим ожидания, который понижает максимальное потребление до 500 микроампер для (низко-питаемых, 1.5 Mbps) или 2.5 ma для 12Mbps. Длины кабелей ограничены до 5 метров для 12Mbps и
3 для 1.5Mbps. Это звучит ошибочно, но исходит из использования лучших
кабелей при больших скоростях. Топология USB - "звездное"
соединение (рис. 1). Концентраторы являются вершинами, соединяющими
устройства. Одно и только одно ведущее устройство (обычно ПК) включает
"Корневой концентратор", который является связующим звеном
для всех. Устройства, контролируемые USB, являются "ведомыми", отвечая на команды (host a) "ведущего". Когда устройство подключается в USB сеть, host связывается с ним для определения: какой драйвер необходим (процес enumeration). Для избежания перемычек и проблем с прерываниями, host присваивет адрес устройства в процессе энумерации. Спецификация определяет два вида устройств: stand-alone (одиночное, как мышь) и составное (имеющие более одного порта). Примером составного устройства является видео камера с отдельным аудио процессором. Концентраторы и мосты; они увеличивают физическую нагрузочную способность сети. Концентратор имеет оно исходящее соединение (которое образовано с корневым концентратором или другим концентратором, ближним к корневому), и от одного до нескольких нисходящих соединений. Концентраторы сами по себе являются USB устройствами, и являются интеллектуальными. Критическая часть философии USB то, что пользователи могут отключать устройства не выходя из системы. Концентраторы определяют эти изменения. Они так же могут служить источниками питания для USB сети; питание может поступать от hub (концентратора) (если он является самоснабжаемым), или от вышестоящего. Как только концентратор находит новую периферию (или отключение таковой), он подает информацию ХОСТу и позволяет соединение с подключенным устройством, на самом деле, он является невидимым "умным" проводом, распределяющим данные между устройствами и ведущим. Таким образом, физически соединение устанавливается "звездой", но для приложений прямое соединение существует между компьютером (ведущим) и каждым отдельным устройством. Обзор соединения USBUSB соединение устанавливается между ХОСТом и endpoint (конечная точка), расположенной в периферии. Конечная точка - уникальная доступная часть периферии, являющаяся источником или приемником данных. Четыре бита определяют адрес конечной точки; коды также определяют направление передачи и является ли передача управляющей. Точка 0 зарезервирована для управляющих передач, предоставляющая до 15 двунаправленных источников и приемников данных для каждого устройства. Идея конечных точек является важной составляющей концепции USB транзакций. Вся передача осуществляется через виртуальные каналы (pipe), которые соединяют периферийные конечные точки с ХОСТом. Когда устанавливается соединение с устройством, каждая конечная точка возвращает дескриптор, структура данных, которая описывает конфигурацию и предназначение. Дескрипторы включают вид передачи, максимальный размер пакетов данных, и в некоторых случаях, необходимую пропускную способность канала, который определяется размером, делая его аналогом водопроводной системы. USB поддерживает четыре вида передачи данных: управляющий, изохронный, массовый (bulk) и через прерывание. Управляющие запросы меняют конфигурацию, установки и управляют передачами данных. Осуществляется проверка CRC и инициация ре-трансмиссии, при необходимости коррекции пакетов. Bulk (массовая) передача, осуществляет обмен большим количеством данных, когда время не критично. Основной вид обмена данными для устройств, включая принтеры и сканеры. Заполняет шину, когда ничего более важного не происходит. Осуществляется аппаратный контроль CRC. Interrupt (прерывание) передача, не вызывает прерывания CPU компьютера, опрашивая устройства: или не нужно их обслужить. Периферия обменивается небольшими фрагментами данных, которые требуют немедленного внимания (мышки, клавиатуры) используя interrupt передачу. Осуществляется аппаратный контроль CRC. И, наконец, изохронная передача оперирует потоками данных, как, например, от аудио и видео устройств. Это передача в реальном времени с гарантированным доступом к шине. Проверка целостности отсутствует. Драйвер устройства
Большинство конечных соединений, в худшей или лучшей степени осуществляется на ПК с операционной системой Microsoft. USB не полностью поддерживается в DOS, Windows 3.x и Windows NT. Windows 95 обеспечивает несколько USB драйверов, и то только в поздних версиях начиная с OEM Software Release 2.1. Все версии Windows 98 и 2000 включают полный комплект драйверов для частых задач. Многие даже самые блестящие инженеры, производители устройств, спасуют перед таким занятием, как написание драйверов, и для этого есть причины. К несчастью, USB драйвер это трудный "зверек". Хорошими новостями являются новости о том, что в большинстве случаев драйвера, поставляемые с Windows, смогут взять на себя работу даже с вашим нестандартным устройством. Давайте посмотрим, как они функционируют. Реализация драйверов в Windows 98 основана на Win
32 Driver Model (WDM), которая распределяет различные части процесса
передачи данных в стек драйверов (рис. 2). Приложение (с помощью API
процедур) осуществляет связь с классовыми или дополнительными (собственными)
драйверами в WDM. Внутри WDM стека данные передаются, используя низкоуровневые
IRP (I/O request packets) взамен API. ![]() Рис. 2: Windows USB WDM модель. Низкоуровневый драйвер шины USB (USB Bus Driver) управляет питанием устройства, определением и различными USB транзакциями. Ниже, драйвер контроллера (Host Controller Driver) "общается" непосредственно с аппаратурой. Оба эти драйвера включены в поставке с Windows. Windows, как и USB спецификация, подразделяет драйвера в "классы", где периферия, принадлежащая одному классу, поддерживает одинаковые интерфейсы. Определения классов основываются на документации из спецификации для данного набора характеристик; все устройства одного класса требуют подходящее программное обеспечение. Примером является HID класс (устройства, взаимодействующие с пользователем), он поддерживает мышки, джойстики, клавиатуры. Еще есть Monitor класс, который управляет позицией, размером и выравниванием изображения на видео дисплеях. В Windows включен полноценный драйвер HID-класса. Если ваше оборудование нуждается в HID-образной поддержке, вы можете использовать встроенный драйвер без необходимости написания своего кода на PC. Спецификации для HID драйверов можно найти на официальном сайте USB http://www.usb.org Собственные драйверы являются альтернативой драйверам
классов. Индивидуальный драйвер использует свойства отдельный частей
оборудования, расположенных по ту сторону USB кабеля. Если вы сделали
накопительное устройство, то драйверы класса вам не подойдут, придется
писать собственные. Аналогично, если устройство имеет отличные от стандартного
класса функции, придется писать драйвер для их поддержки. Компилировать
драйвер можно в Visual C++, в любом случае необходимо скачать DDK, свободно
доступное от Microsoft.
|
|||||||
|
|
|||||||||