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

 

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

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

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

= Data[lData+0]; = Data[iData+l]; = @Data[iData+0]
Case typDescr of $01: begin Il Стандартный дескриптор With TDeviceDescriptor(PDataA) do begin
Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( Log(Format ( End; End;
bcdUSB =%s',
bDeviceClass =%d\
bDeviceSubClass =%d\
bDeviceProtocol =%d',
bMaxPacketSizeO =%d',
idVendor =%d',
idProduct =%d\
bcdDevice =%s'
!Manufacturer =%d\
iProduct =%d':
iSerialNumber =%d' bNumConfigurations=%d'
[BCD2Str(bcdUSB)
[bDeviceClass
[bDeviceSubClass
[bDeviceProtocoJ
[bMaxPacketSizeO
[idVendor
[idProduct
[BCD2Str(bcdDevice)
[!Manufacturer
[iProduct
[iSerialNumber
[bNumConfі gurations
$02: begin Il Дескриптор конфигурации With TUsbConfigurationDescriptor(PData'
Log(Format (' Log(Format (' Log(Format (' Log(Format (' End; End;
iConfiguration=%d', bNumInterfaces=%d', bmAttributes =%d', MaxPower(мА) =%d',
) do begin [!Configuration] [bNumlnterfaces] [bmAttributes ] [MaxPower*2 ]
) )
$03: begin
Il Дескриптор строки
End;
$04: begin
Il Дескриптор интерфейса
End;
л22
Часть II. Внутренняя организация USB
$05: begin
// Дескриптор конечной точки
End;
End; {end of case} /I переходим к следующему дескриптору iData:= iData + lenDescr; Until (lenDescr = 0) or (iData > High(Data)); end;
Каждый дескриптор отображается в соответствии с содержащимися в нем данными. Для получения доступа к содержимому дескриптора мы используем указатель на текущее положение в буфере данных, приводя его к соответствующему типу. Для перевода BCD-чисел в строку номера версии используется функция BCD2str, код которой можно найти в приложениях. Полный код этой программы содержится на компакт-диске.
Глава 5
Внутренняя организация хоста и хабов
Хаб — специальное устройство, позволяющее "сжечь" несколько портов одновременно.
5.1. Хабы
Хаб (Hub, другое название — концентратор) — устройство, которое обеспечивает дополнительные порты на шине USB. Другими словами, хаб преобразует один порт {восходящий порт, Upstream Port) в множество портов {нисходящие порты, Downstream Ports). Архитектура допускает соединение нескольких хабов (не более 5) (рис. 5.1).
Г~1
Порт Порт Порт 1 2 3
ч °-° 2
X I=
(J о CQ
Хаб
Порт 4
Порт Порт Порт 7 6 5
Рис. 5.1. Структурная схема хаба
Основные функции хабов:
? обеспечение физического подключения устройств к каждому из портов;
? распознавание подключения и отключения устройств к портам, уведомление порта об изменениях;
? управление питанием портов, ограничение тока, потребляемого каждым портом;
124
Часть II. Внутренняя организация USB
? конфигурирование портов;
? обеспечение изоляции сегментов с низкой скоростью от высокоскоростных;
? обнаружение ошибок на шине, изолирование неисправных сегментов шины.
Хаб USB 2.0 состоит из контроллера, повторителя и транслятора транзакций.
Контроллер хаба (Hub Controller) содержит регистры для взаимодействия с хостом. Доступ к регистрам осуществляется с помощью специальных команд, которые позволяют конфигурировать хаб, управлять его портами и получать состояние портов.
Повторитель (Hub Repeater) представляет собой управляемый коммутатор, соединяющий выходной порт с входным. Он имеет средства поддержки сброса и приостановки передачи сигналов. В хабе USB 1.1 коммутатор один (FS/LS), а в хабе USB 2.0 добавлен еще один коммутатор для скоростей HS. Спецификация второго коммутатора существенно отличается от первого. Который из коммутаторов используется, зависит от того, на какой скорости (FS или HS) хаб подключается к вышестоящему устройству.
Транслятор транзакций (Transaction Translator) служит для организации расщепленных транзакций, когда хаб подключен на HS, а к его портам подключены устройства или хабы FS/LS. Транслятор транзакций в хабе USB 1.1 отсутствует.
Хаб имеет внутренний генератор синхронизации, который синхронизируется с маркерами кадров (SOF), принимаемыми от восходящего порта. Одной из задач хаба является отслеживание маркеров SOF и выявление пропадания SOF, нарушения времени их появления и обнаружение других ошибок на шине.
Хаб следит за сигналами, генерируемыми устройствами. Неисправное устройство может не вовремя "замолчать" (потерять активность) или, наоборот, что-то "бормотать" (babble). Эти ситуации отслеживает ближайший к устройству хаб и запрещает восходящие передачи от такого устройства не позже, чем по границе кадра. Благодаря бдительности хабов эти ситуации не позволят неисправному устройству заблокировать всю шину.
Каждый из нисходящих (downstream) портов может быть разрешен или запрещен, а также сконфигурирован на высокую, полную или ограниченную скорость обмена. Нисходящие порты хабов имеют множество возможных состояний, из которых можно выделить несколько основных состояний:
? Не сконфигурирован (Not Configured) — состояние портов хаба с неустановленной конфигурацией. На линию выдается сигнал SE0,
? Питание отключено (Powered off) — на порт не подается питание. Выходные буферы переводятся в высокоимпедансное состояние, входные сигналы игнорируются. В это состояние порт переводится по команде кон-
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100