Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 50

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 44 45 46 47 48 49 < 50 > 51 52 53 54 55 56 .. 166 >> Следующая

134
Часть II. Внутренняя организация USB
? [1] содержит индикатор изменения признака разрешения работы порта c_port_enable (устанавливается в 1, если работа порта была разрешена или запрещена);
? [0] содержит индикатор изменения состояния подключения c_port_connection (устанавливается в I, если произошло подключение или отключение устройства).
5.1.10. Запрос SET_HUB_DESCRIPTOR
Запрос set_hub_descriptor позволяет хосту заменить дескриптор хаба. Запрос имеет следующие параметры:
? bmRequestType = 00100000b;
? bRequest = SETJ3ESCRIPTOR(07Н);
? wValue содержит тип дескриптора (29Н) в старшем байте и индекс дескриптора (ООН) в младшем байте;
? windex — номер порта;
? wLength — размер дескриптора в байтах.
По этому запросу хост передает хабу дескриптор, структура которого описана в разд. 5.1.2.
5.1.11. Запрос SET_HUB_FEATURE
Запрос set_hub_feature используется для того, чтобы установить признак состояния хаба, указанный значением селектора свойств.
Запрос имеет следующие параметры:
? bmRequestType = OOIOOOOOb;
? bRequest = set_feature (03Н);
? wValue — селектор свойств хаба (см. табл. 5.3);
? windex = 0;
? wLength = 0.
Передача данных по этому запросу не производится.
5.1.12. Запрос SET_PORT_FEATURE
Запрос set_port_feature используется для того, чтобы перевести порт хаба в состояние, указанное значением селектора свойств.
Запрос имеет следующие параметры:
? bmRequestType = 0010001 lb;
? bRequest = set_feature (03Н);
Гпава 5. Внутренняя организация хоста и хабов
135
? wValue — селектор свойств порта (см. табл. 5.4);
? windex — номер порта;
? wLength = 0.
Передача данных по этому запросу не производится.
Запрос set__port_feature допускает использование следующих селекторов:
port_enable, port_suspend, port_power, c_port_connection,
c_port_enable, c_port_suspend, c_port_over_current, c_port_reset.
После установки свойства port_suspend порт и подсоединенные к нему устройства переводятся в состояние ожидания.
После установки свойства portenable работа порта.будет разрешена. После установки свойства portpower будет включено питание порта.
5.2. Совместная работа устройств с разными скоростями
Спецификация USB 1.x описывает две скорости работы устройств (LS и FS), а спецификация USB 2.0 предусматривает повышение пропускной способности до 480 Мбит/с.
Спецификация USB гарантирует работу USB-устройств с разной скоростью на одной шине. Разумеется, если бы низкоскоростные устройства работали "напрямую", то хост (или хаб) тратил бы значительную часть времени на обмен с этими устройствами, точнее на ожидание маркера SOF от таких устройств.
Для решения проблем совместимости введены два ключевых решения:
? (USB 2.0) в состав хаба добавлен транслятор транзакций, который буфе-ризирует поступающий с медленного порта кадр, а затем на максимальной скорости передает его хосту, или же буферизирует получаемый на максимальной скорости кадр от хоста, передавая его затем устройству на меньшей, приемлемой для него скорости;
? хаб USB не транслирует трафик на свои нисходящие порты, к которым подключены низкоскоростные устройства, до тех пор, пока хост-контроллер не передаст специального маркера-преамбулы низкоскоростного обмена (PRE).
Маркер PRE игнорируется всеми устройствами, кроме хабов. Пакетом-преамбулой хост-контроллер гарантирует, что следующий пакет будет им передан на низкой скорости. Этим пакетом будет маркер, определяющий тип транзакции с LS-устройством, а в транзакциях вывода — и пакет данных (перед которым требуется своя преамбула). Хаб разрешает транслиро-
736
Часть II. Внутренняя организация USB
вать на свой нисходящий порт с LS-устройством только один пакет, следующий за преамбулой; по концу пакета (увидев EOP на низкой скорости) он снова запрещает трансляцию. Чтобы хаб успел переключить режим своего приемопередатчика, между преамбулой и последующим пакетом вводится зазор (4 битовых интервала FS). Для ответа LS-устройства никаких преамбул не нужно — хабы способны прозрачно передавать восходящий трафик на обеих скоростях (LS и FS). Хост-контроллер, естественно, должен принимать пакеты и на FS, и на LS. Очевидно, что низкоскоростные транзакции расходуют время кадра весьма неэффективно, но в USB 1.x с этим мирятся ради возможности подключения дешевых устройств и упрощения хабов, которые являются просто повторителями сигналов. Заметим, что маркеры SOF не транслируются на низкоскоростные порты, так что изохронный обмен, для которого они необходимы, для LS-устройств невозможен и не поддерживается.
Хост-контроллер USB 2.0 фактически содержит в себе два контроллера: EHC для работы с HS-устройствами и контроллер UHC (или OHC) для работы с LS-устройствами и FS-устройствами. Корневой хаб имеет равноправные порты, но в процессе конфигурирования в зависимости от свойств подключенного к нему устройства (или хаба) каждый порт соединяется с соответствующим контроллером.
Глава 6
USB без ПК
Если хочешь ты меня полюбить Просто так или с USB И, может быть, мы сразу друг др>га поймем, Если у нас один и тот же разьем
Предыдущая << 1 .. 44 45 46 47 48 49 < 50 > 51 52 53 54 55 56 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100