Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5-USB-исходник

.pdf
Скачиваний:
30
Добавлен:
03.05.2015
Размер:
393.59 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования "Нижегородский государственный технический университет им. Р.Е. Алексеева”

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

для лабораторной работы №5 Разработка программного обеспечения для USB

по курсу "Интерфейсы периферийных устройств"

для студентов направления 09.03.01 Информатика и вычислительная техника

Форма обучения очная и очно-заочная

Нижний Новгород 2015

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

для лабораторных работ по курсу "Интерфейсы периферийных устройств"

для студентов направления 09.03.01 Информатика и вычислительная техника,

Форма обучения очная и очно-заочная

Кафедра "Вычислительные системы и технологии".

Составитель: Жевнерчук Д.В, к.т.н., доцент.

Методические указания составлены на основании государственного образовательного стандарта высшего профессионального образования

и утверждены на заседании кафедры Протокол от " " 20 г. № .

Методические

указания

предназначены

для

использования

студентами направления 090301 Информатика

и

вычислительная

техника, можно еще перечислить…

 

 

2

 

Содержание

 

1.

Введение в USB................................................

4

 

1.1. USBlyzer - Утилита перехвата USB трафика. ...............

6

2.

Библиотека usb4java ....................................

13

3.

Лабораторное задание и содержание отчета.....................

16

4.

Контрольные вопросы..........................................

17

5.

Список используемой литературы...............................

18

3

1. Введение в USB

Протокол USB похож на стек сетевых протоколов, основанных на

TCP/IP (который, отчасти и послужил его прототипом). Так же как в случае с сетевыми протоколами, протокол USB можно разделить на несколько уровней. На самом нижнем логическом уровне (спецификации физического уровня мы не рассматриваем) устройства обмениваются пакетами данных (с встроенными механизмами коррекции ошибок,

подтверждения получения и т.д). Из пакетов формируются запросы,

которые устройства посылают друг другу. Запросы составляют блоки запросов USB (USB Request Block, URB).

Протокол USB является «хостоцентричным» - процесс передачи данных всегда инициируется хостом (то есть, компьютером). Если у периферийного устройства появились данные для передачи хосту, оно должно ожидать запроса хоста на передачу данных. Существует четыре типа передач данных:

- Передача управляющих данных (control transfer) предназначена

для определения параметров и настройки периферийных

устройств, а так же для передачи коротких команд. Полезная

часть блока управляющих данных состоит из установочного

пакета (setup packet) и (возможно) нескольких байтов данных.

Установочный пакет

содержит информацию о запросе, который

хост

направляет

устройству,

направлении

передачи

дополнительных данных (от хоста к устройству или наоборот),

логическом

адресате

данных

(устройство,

интерфейс)

и

количестве

байт дополнительных

данных.

 

 

-Передача прерываний (interrupt transfer, их не следует путать с прерываниями в компьютере) используется для передачи

коротких сообщений, в основном - от устройства хосту.

Поскольку инициатива в обмене данными всегда исходит от хоста, прерывания, посылаемые устройством, не могут прервать порядок работы хоста. Однако устройство ожидает, что хост будет опрашивать его на предмет прерываний с определенной

4

частотой (эта частота определяется в процессе настройки

соединения). Таким образом, устройство может

рассчитывать,

что

задержка

при

передаче

прерываний

не

превысит

определенного

значения.

При

этом

количество

данных,

передаваемое в одном прерывании, ограничено (8-мью, 64-мя или

1024-мя байтами, в зависимости от скоростных параметров

устройства). Следует учитывать, что «гарантированное максимальное время задержки» гарантировано только для

доставки прерывания хосту. Фактическая обработка выполняется

 

ПО и может

быть отложена на неопределенное время.

 

- Изохронная

 

передача

данных

(isochronous

transfer)

 

 

 

 

мультимедиа,

 

 

используется

для передачи данных

для которых

важна гарантированная пропускная способность, но потеря отдельных пакетов из-за помех несущественна (в этом смысле изохронная передача напоминает потоки данных UDP). Изохронная передача возможна в обоих направлениях. Обычно этим способом передаются живые мультимедиа-данные (например, видео,

получаемое с цифровой камеры в режиме он-лайн).

-Массовая передача данных (bulk transfer) – передача больших объемов данных с гарантированной доставкой, но

негарантированной максимальной задержкой и полосой пропускания. Примером такой передачи данных могут служить данные, передаваемые хостом принтеру или данные, которыми хост обменивается с устройством хранения данных. Массовая передача данных так же возможна в обоих направлениях.

Продолжая аналогию между протоколами USB и сетевыми протоколами,

мы можем вспомнить, что «пункт назначения» сетевого протокола

включает в себя помимо адреса еще и порт. Аналогом сетевого порта

в протоколе USB может служить конечная точка (endpoint). Каждое устройство USB поддерживает конечную точку с номером 0x00,

предназначенную для передачи управляющих данных. Помимо этого

устройство

может предоставлять еще несколько

конечных точек,

каждая

из

которых предназначена для определенного типа передачи

данных

в

определенном направлении. Например,

если устройству

5

требуется принимать данные с помощью массовой передачи и

передавать прерывания, оно предоставит две дополнительные конечные точки. Помимо направления передачи данных в описании конечной

точки указывается максимальный размер передаваемого пакета в

байтах. Если конечная точка предназначена для передачи прерываний,

ее описание содержит информацию о том, с какой частотой следует опрашивать эту точку. Группы конечных точек доступа устройства объединяются в интерфейсы. Интерфейсы объединяются в конфигурации,

которые, помимо прочего, включают описания режимов питания устройства. У большинства устройств присутствует интерфейс,

состоящий из двух точек доступа: для передачи управляющих сообщений и для передачи прерываний от устройства хосту. Если,

помимо передачи управляющей информации устройству нужно передавать большие объемы данных в двух направлениях, оно может предоставить

еще

один

интерфейс,

объединяющий

две

точки

доступа,

предназначенные для массовой передачи данных, и т.д.

 

Само устройство идентифицируется двумя числами: идентификатором производителя (VID) и идентификатором продукта (PID). С точки зрения системы устройство идентифицируется адресом на шине USB и

этими двумя числами. Таким образом, настройка связи драйвера с устройством включает в себя поиск устройства с заданными VID и PID

на шине USB, после чего драйвер выбирает конфигурацию, интерфейс и группу конечных точек, если выбранный интерфейс поддерживает несколько групп.

1.1. USBlyzer - Утилита перехвата USB трафика.

USBlyzer – это инструмент для мониторинга и анализа устройств

USB, предназначенный для отслеживания активности USB хост-

контроллеров, хабов и устройств, подключенных к ним, представления детальной информации об устройствах в виде иерархической структуры. USBlyzer позволяет сохранять результаты в бинарный файл для последующего анализа. Программа доступна для скачивания по адресу http://www.usblyzer.com/ и имеет 33-дневный бесплатный

6

период ознакомления, в течении которого доступна полная функциональность. На рис 1. Показано главное окно программы.

Рис. 1 – Главное окно USBlyzer

Для того, чтобы запустить процесс мониторинга USB трафика,

необходимо в дереве устройств «Device Tree» выбрать необходимые

(поставить галочку напротив требуемых пунктов) и запустить процесс захвата, нажав на кнопку «Start Capture».

Вся информация и элементы управления расположены на различных панелях, которые могут быть выведены на главную форму или скрыты.

Кроме того, программа позволяет сохранять различные конфигурации

GUI (Рис 2.)

Рис 2. – Работа с состояниями GUI

Все устройства отображаются в дереве устройств «Device Tree».

Все узлы дерева, за исключением корневого, представляют собой

7

связки «логическое устройство - физическое устройство». Узел конкретного устройства содержит его стек устройств.

Панель «Стек устройства» («Device Stack») Рис 3. отображает цепочку объектов устройств, составляющих стек, там выводится информация о том, какой драйвер создал конкретный объект устройства и в каком порядке они присоединены к стеку.

Рис 3 – Панель «Стек устройств» Узлы дерева устройств также содержат информацию, детальное

представление которой можно увидеть на панели PnP Properties.

Свойства панели USB отображает такие сведения как состояние соединения, скорость устройства, и т.д. Выводится детальная информация обо всех стандартных дескрипторах USB. Анализатор USB

проверяет соответствие USB дескрипторов USB спецификации, и любые расхождения отмечаются красным цветом. Панели PnP и USB свойств показаны на рис 4.

Рис 4 – Панели PnP и USB свойств

8

USBlyzer позволяет осуществлять мониторинг трафика устройств на стадиях подключения, инициализации и обмена данными с прикладными процессами. Для захвата пакетов в момент подключения необходимо установить галку в меню Capture – Capture Hot-plugged (Рис 5)

Рис. 5 – Установка режима захвата пакетов при подключении USB

устройства

После выбора устройств, USB-трафик которых необходимо

перехватить,

и/или

установки

режима

захвата

пакетов при

подключении,

может

понадобиться

настройка

ряда

параметров

перехвата. Для этого необходимо открыть окно настройки параметров перехвата «Capture settings…»: Capture - Capture settings… (Рис 6)

Вэтом окне существует возможность создания конфигураций

перехвата,

которые

определяются

некоторым

подмножеством

параметров.

Рис 6 – Окно установки параметров перехвата

9

Дерево настройки перехватываемых параметров содержит группы:

Блок запроса USB (URB).

Пакеты запроса ввода/вывода (IRP).

Команды управления вводом/выводом USB в режиме ядра (USB Kernel-Mode IOCTLs).

Команды управления вводом/выводом USB в пользовательском режиме (USB User-Mode IOCTLs).

Таким образом, фильтрация параметров может быть проведена до захвата (с целью уменьшения объема получаемых данных) либо после перехвата.

Рассмотрим другие настройки. Для этого откройте окно настроек: Options – Preferences. (Рис 7).

В частности, здесь можно настроить предельно допустимый размер файла с данными перехвата.

Рис 7 – Окно настроек Preferences

Перехват начинается по нажатию кнопки «Start capture», либо при подключении нового устройства, если выбран режим «Capture Hotplugged». Перехват завершается по нажатию кнопки «Stop capture»,

либо когда достигнут предельный размер файлы с данными. Индикатор на панели состояний (Status Bar) показывает, какая часть файла в конкретный момент времени заполнена (Рис 8.).

10