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

 

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

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

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 23 24 25 26 27 28 < 29 > 30 31 32 33 34 35 .. 166 >> Следующая

Транзакция на шине USB — это последовательность обмена пакетами между хостом и ПУ, в ходе которой может быть передан или принят один пакет данных. Когда клиентское ПО передает IRP уровню системного драйвера, USB-драйвер преобразует их в одну или несколько транзакций шины и затем передает получившийся перечень транзакций драйверу контроллера хоста.
Архитектура системного драйвера USB
Системный драйвер USB состоит из драйвера USB и драйвера хост-контроллера.
Когда клиентский уровень передает IRP уровню системного обеспечения USB, USB-драйвер преобразует их в одну или несколько транзакций шины и затем передает получившийся перечень транзакций драйверу контроллера хоста.
Драйвер контроллера хоста принимает от системного драйвера шины перечень транзакций и выполняет следующие действия:
? планирует исполнение полученных транзакций, добавляя их к списку транзакций;
? извлекает из списка очередную транзакцию и передает ее уровню хост-контроллера интерфейса шины USB;
? отслеживает состояние каждой транзакции вплоть до ее завершения.
При выполнении всех связанных с командным пакетом транзакций системный уровень уведомляет об этом клиентский уровень.
3.1.3. Уровень хост-контроллера интерфейса
Уровень хост-контроллера интерфейса шины USB получает отдельные транзакции от драйвера контроллера хоста (в составе уровня системного обеспечения USB) и преобразует их в соответствующую последовательность операций шины. В результате этого USB-пакеты передаются вдоль всей физической иерархии хабов (на рис. 3.1 мы изобразили последовательность хабов как одну логическую линию, но физически это может быть как один USB-кабель, так и последовательность хабов) до периферийного USB-устройства (правая часть рис. 3.1).
3.1.4. Уровень шины периферийного устройства
Нижний уровень периферийного USB-устройства называется уровнем интерфейса шины USB. Он взаимодействует с интерфейсным уровнем шины USB на стороне хоста и передает пакеты данных от хоста периферийному
гпава 3. Внутренняя организация шины
69
устройству в формате, определяемом спецификацией USB. Затем он передает пакеты вверх — уровню логического USB-устройства.
3.1.5. Уровень логического USB-устройства
Средний уровень периферийного USB-устройства называется уровнем логического USB-устройства. Каждое логическое USB-устройство представляется набором своих конечных точек, с которыми может взаимодействовать системный уровень USB-хоста. Эти точки являются источниками и приемниками всех коммуникационных потоков между хостом и периферийными USB-устройствами.
3.1.6. Функциональный уровень USB-устройства
Самый верхний уровень периферийного USB-устройства называется функциональным уровнем. Этот уровень соответствует уровню клиентского обеспечения хоста. С точки зрения клиентского уровня, нижележащие уровни нужны для организации между ним и конечными точками прямых "каналов данных" (см. разд. 3.7), которые идут вплоть до функционального уровня периферийного устройства. А с точки зрения нашей схемы функциональный уровень выполняет следующие действия:
О получает данные, посылаемые клиентским уровнем хоста из конечных точек каналов данных нижележащего уровня логического USB-устройства;
О посылает данные клиентскому уровню хоста, направляя их в конечные точки каналов данных нижележащего уровня логического USB-устройства.
3.2. Передача данных по уровням
Логически передача данных между конечной точкой и ПО производится с помощью выделения канала и обмена данными по этому каналу, а с точки зрения представленных уровней, передача данных выглядит следующим образом (рис. 3.2).
O Клиентское ПО посылает IPR-запросы уровню USBD.
Q Драйвер USBD разбивает запросы на транзакции по следующим правилам:
• выполнение запроса считается законченным, когда успешно завершены все транзакции, его составляющие;
• все подробности отработки транзакций (такие как ожидание готовности, повтор транзакции при ошибке, неготовность приемника и т. д.) до клиентского ПО не доводятся;
70
Часть II. Внутренняя организация USB
• ПО может только запустить запрос и ожидать или выполнения запроса или выхода по тайм-ауту;
• устройство может сигнализировать о серьезных ошибках (см. разд. 3.8), что приводит к аварийному завершению запроса, о чем уведомляется источник запроса.
? Драйвер контроллера хоста принимает от системного драйвера шины перечень транзакций и выполняет следующие действия:
• планирует исполнение полученных транзакций, добавляя их к списку транзакций;
• извлекает из списка очередную транзакцию и передает ее уровню хост-контроллера интерфейса шины USB;
• отслеживает состояние каждой транзакции вплоть до ее завершения.
? Хост-контроллер интерфейса шины USB формирует кадры;
? Кадры передаются последовательной передачей бит по методу NRZI (см. разд. 2.2.1).
Клиентское IRP Драйвер Транзакции Драйвер хост-контроллера Транзакции Хост-контроллер Кадры ш W Э NRLZ
по USB интерфейса шины USB
Формирует IRP-запросы
Формирует перечень транзакций
Планирует выполнение транзакций
Формирует кадры
Предыдущая << 1 .. 23 24 25 26 27 28 < 29 > 30 31 32 33 34 35 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100