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

 

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

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

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 71 72 73 74 75 76 < 77 > 78 79 80 81 82 83 .. 166 >> Следующая

Пользовательский режим
Режим ядра
Диспетчер ввода/вывода
Реестр и
INF-файл ы
Компоненты установки и конфигурирования
PnP-менеджер
Менеджер питания
РпР-менеджер
NT PnP-драйверы Драйверы WDM
Слой аппаратных абстракций (HAL)
Z]
Рис. 10.3. Программные РпР-компоненгы Windows 2000/ХР
10.2. Plug and Play для USB
Согласно спецификации USB, любое USB-устройство должно соответствовать спецификации PnP. Шина USB поддерживает динамическое подклю-
226
Часть III. Практика программирования
чение и отключение устройств "по определению". Нумерация устройств шины является постоянным процессом, отслеживающим изменения физической топологии.
10.2.1. Конфигурирование устройств USB
При начальном подключении или после сброса производится начальное конфигурирование. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов при запросе от хоста. Хост разрешает работу порта и адресуется к устройству через канал управления, используя нулевой порт.
Хост определяет, является ли новое подключенное устройство хабом или функцией, и назначает ему уникальный адрес USB. Хост создает канал управления с этим устройством,* используя назначенный адрес и нулевой номер конечной точки.
Если новое устройство является хабом, хост определяет подключенные к нему устройства, назначает им адреса и устанавливает каналы. Если новое устройство является функцией, уведомление о подключении передается диспетчером USB заинтересованному ПО.
Когда устройство отключается, хаб автоматически запрещает соответствующий порт и сообщает об отключении контроллеру, который удаляет сведения о данном устройстве из всех структур данных. Если отключается хаб, процесс удаления выполняется для всех подключенных к нему устройств. Если отключается функция, уведомление посылается заинтересованному ПО.
10.2.2. Нумерация устройств USB
Нумерация устройств (Enumeration), подключенных к шине, осуществляется динамически по мере их подключения (или включения их питания) без какого-либо вмешательства пользователя или клиентского ПО. Процедура нумерации выполняется следующим образом.
1. Включение устройства. Пользователь подключает устройство к порту, или подается питание на устройство, уже подключенное к порту. Устройство может подключаться к корневому или любому другому хабу. Хаб подает питание на порт и устройство переходит в состояние Питание подано (Powered).
2. Хаб определяет подключение устройства. Хаб, производящий постоянный мониторинг каждого порта, определяет, что к порту подключено устрой-
' ство (см. разд. 18.1.7). Определив подключение устройства, хаб продолжает подавать питание на устройство, но пока не передает данные, т. к. устройство еще не готово их принимать.
Глава 10. Спецификация PnP для USB
227
3. Хаб информирует хост о новом устройстве. Хаб, к которому подключилось устройство, информирует хост о смене состояния своего порта ответом на опрос состояния. Каждый хаб имеет специальное прерывание (точнее, конечно, канал типа interrupt) для передачи таких уведомлений. Когда хост узнает о подключении нового устройства, он посылает запрос get_status для получения дополнительной информации.
4. Хаб проверяет режим устройства. Хаб проверяет, является устройство низкоскоростным или полноскоростным, и отправляет эту информацию в ответ на запрос get_status. Спецификация USB 1.x позволяет хабу производить определение скоростного режима и после сброса, но USB 2.0 требует знания режима до сброса.
5. Хаб подает устройству сигнал сброса. Когда хост узнает о появлении нового устройства, хост-контроллер посылает хабу запрос set_feature, который указывает хабу произвести сброс устройства. Хаб производит сброс только того порта, к которому подключено новое устройство, другие хабы и порты шины не затрагиваются.
6. Хост определяет возможность работы устройства в режиме HS.
7. Хаб устанавливает соединение между устройством и шиной. Хост проверяет, что сброс устройства произведен. Для этого хост посылает запрос get_status. Если устройство не отвечает, хост повторяет запрос. Состояние устройства после сброса называется Основным состоянием (Default state). В этом состоянии регистры устройства сброшены, а устройство готово к обмену по нулевому каналу.
8. Хост определяет конфигурацию нулевой точки. Хост посылает запрос get_deSCRi PTOR для того, чтобы узнать размер максимального пакета для Основного канала. Хост посылает запрос по адресу 0 конечной точке номер 0. Так как в один момент времени хост будет работать только с одним (обнаруженным) устройством, то на этот запрос откликнется только одно устройство, даже если к шине подключено их несколько. Устройство отвечает восьмибайтовым дескриптором, в котором содержится максимальный размер пакета, поддерживаемый конечной точкой 0.
9. Хост назначает устройству уникальный адрес, посылая запрос set_address. Устройство посылает хосту подтверждение и переходит в состояние Адресовано (Addressed). С этого момента любой обмен с устройством возможен только по этому адресу. Адрес устройства верен до отключения устройства, во время следующего включения устройство может получить другой адрес.
Предыдущая << 1 .. 71 72 73 74 75 76 < 77 > 78 79 80 81 82 83 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100