Главная » Ассемблер, Железо » Дескриптор USB хаба

0

Кроме стандартных дескрипторов, по запросу может быть выдан специфический Дескриптор хаба (Hub Descriptor), структура которого приведена в табл. 8.9.

Таблица 8.9. Структура Дескриптора хаба


Сме

Мнемо

Размер

Описание

 

щение

ника

 

 

 

0

bDescLength

BYTE

Размер данного дескриптора в байтах

 

1

bDescriptorType

BYTE

Тип дескриптора (29h)

 

2

bNbrPorts

BYTE

Количество нисходящих портов

 

3

wHubCharac- teritics

WORD

Характеристики хаба: биты 0-1 — логический режим управления энергией (00Ь — подача энергии включаются одновременно для всех портов, 01Ь — возможно индивидуальное управление подачей энергии для каждого порта, 10Ь или 11Ь —у хаба отсутствует схема управления энергией); бит 2 — признак составного устройства (0 — хаб является самостоятельным устройством, 1 — хаб входит в состав периферийного устройства); биты 3-4 — режим защиты от перегрузки (00b — глобальная защита от перегрузки по сумме токов всех портоа, 01Ь — индивидуальная защита для каждого порта, 10Ь или 11 b — защита отсутствует);

биты 5-15 зарезервированы

 

5

bPwr0n2Pwr- Good

BYTE

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

 

Сме

Мнемо

Размер

Описание

щение

ника

 

 

6

bHubContr- Current

BYTE

Величина тока (мА), потребляемого контроллером хаба

7

Device- Removable

К байт

Битовая карта подключения съемных

устройств к портам:

бит 0 зарезервирован,

бит 1 соответствует порту 1,

бит 2 — порту 2, j,

бит п — порту П.

Если бит имеет значение 0, к порту подключено съемное устройство, если 1 —несъемное

7 + К

PortPwr- CtrlMask

К байт

Маска контроля питания портов (каждому порту соответствует один бит маски). Маска входит в дескриптор для сохра- ненения совместимости со стандартом USB 1.0 и в настоящее время не используется (все разряды установлены в 1)

Запросы, специфические для хабов USB

В спецификации USB для хабов определены следующие коды специфических запросов:

•       0 — GET_STATUS (определить состояние устройства);

•       1 — CLEAR_FEATURE (сбросить свойство);

•       2 — GET_STATE (получить состояние устройства);

•       3 — SET_FEATURE (установить свойство);

•       6 – GET_DESCRIPTOR (получить дескриптор);

•       7 — SET_DESCRIPTOR (загрузить дескриптор).

Кроме того, для хабов в спецификации USB определены следующие значения селектора свойств:

•    0 — C_HUB_LOCAL_POWER (признак изменения состояния встроенного источника питания),

•    1 — C_HUB_OVER_CURRENT (признак изменения состояния индикатора перегрузки по току).

Для портов хабов в спецификации USB определены следующие значения селектора свойств:

•       0 — P0RT_C0NNECTI0N (к порту подключено устройство),

•       1 — PORT_ENABLE (работа порта разрешена),

•   2 — PORT_SUSPEND (порт находится в состоянии ожидания),

•   3 – PORT_OVER_CURRENT (перегрузка по току),

•   4 — PORT RESET (установлен сигнал сброса),

•   8 — P0RT_P0WER (питание включено),

•   9 — P0RT_L0W_SPEED (порт работает в низкоскоростном режиме),

•   16 — C_P0RT_C0NNECTI0N (признак изменения состояния подключения),

•   17 — C_PORT_ENABLE (признак выполнения операции разрешения или запрета работы порта),

•   18 — C_P0RT_ SUSPEND (признак переключения из состояния ожидания в активный режим или наоборот),

•   19 — C_PORT_OVER_CURRENT (признак изменения состояния индикатора перегрузки по току),

•   20 — C_PORT_RESET (признак того, что сигнал сброса был установлен или снят).

Запрос Clear Hub Feature используется для того, чтобы сбросить признак состояния хаба, указанный значением селектора свойств. Запрос имеет следующие параметры:

•   bmRequestType = 00100000b;

•   bRequest = CLEARJEATURE (Olh);

•   wVal ue — селектор свойств хаба;

•   wlndex = 0;

•   wLength = 0.

Передача данных по запросу Clear Hub Feature не производится.

Запрос Clear Port Feature используется для того, чтобы сбросить состояние порта хаба, указанное значением селектора свойств. Запрос имеет следующие параметры:

•   bmRequestType = 00100011b;

•   bRequest = CLEARJEATURE (Olh);

•   wVal ue — селектор свойств порта;

•   wlndex — номер порта;

•   wLength = 0.

Передача данных по запросу Clear Port Feature не производится. Запрос Clear Port Feature допускает использование следующих селекторов: PORT_ENABLE, PORT_SUSPEND, P0RT_P0WER, C_P0RT_C0NNECTI0N, C_PORT_ENABLE, C_PORT_SUSPEND, C_PORT_OVER_CURRENT, C_PORT_RESET.

Сброс свойства PORT_SUSPEND вызывает формирование сигнала пробуждения для порта, который находится в состоянии ожидания. После сброса свойства PORT_ENABLE работа порта будет запрещена. Сброс свойства P0RT_P0WER вызывает отключение питания порта.

Запрос Get Bus State используется для диагностики порта с заданным номером. Запрос имеет следующие параметры:

•   bmRequestType = 10100011b;

•   bRequest = GETSTATE (02h);

•   wValue = 0;

•   wlndex — номер порта;

•   wLength = 1.

По запросу Get Bus State хаб возвращает один байт данных со следующей структурой:

•   бит 0 — значение сигнала на линии D-;

•   бит 1 — значение сигнала на линии D+;

•   биты 2-7 зарезервированы и должны быть сброшены в 0.

Запрос Get Hub Descriptor позволяет хосту получить дескриптор хаба. Запрос имеет следующие параметры:

•   bmRequestType = 10100000b;

•   bRequest = GET_DESCRIPTOR (06h);

•   wVal ue содержит тип дескриптора (29h) в старшем байте и индекс дескриптора (00h в младшем байте);

•   wlndex = 0;

•   wLength — размер дескриптора в байтах.

По запросу Get Hub Descriptor хаб возвращает дескриптор, структура которого описана в табл. 8.9.

Запрос Get Hub Status позволяет определить текущее состояние хаба. Запрос имеет следующие параметры:

•   bmRequestType = 10100000b;

•   bRequest = GET_STATUS (OOh);

•   wValue = 0;

•   wlndex = 0;

•   wLength = 4.

По запросу Get Hub Status хаб возвращает 16-разрядное слово состояния wHubStatus и 16-разрядное слово индикаторов изменения состояния wHubChange.

Слово состояния хаба имеет следующую структуру:

•   бит 0 содержит признак неисправности встроенного источника питания хаба (0 — встроенный источник питания находится в рабочем состоянии, 1 — источник выключен, и хаб получает питание от шины USB);

•   бит 1 содержит признак перегрузки порта по выходному току (О — порт работает нормально, 1 — подключенное к порту устройство потребляет слишком много энергии);

•   биты 2-15 зарезервированы (содержат нули).

Слово индикаторов изменения состояния хаба имеет следующую структуру:

•   бит 0 содержит признак изменения состояния встроенного источника питания C_HUB_LOCAL_POWER (устанавливается в 1, если состояние встроенного источника питания изменилось);

•   бит 1 содержит признак изменения состояния индикатора перегрузки по току C_HUB_OVER_CURRENT (устанавливается в 1, если состояние индикатора перегрузки изменилось);

•   биты 2-15 зарезервированы (содержат нули).

Запрос Get Port Status позволяет определить текущее состояние заданного порта хаба. Запрос имеет следующие параметры:

•   bmRequestType = 10100011b;

•   bRequest – GET_STATUSj(00h);

•   wValue = 0;

•   wlndex — номер порта;

•   wLength = 4.

По запросу Get Port Status хаб возвращает 16-разрядное слово состояния порта wPortStatus и 16-разрядное слово индикаторов изменения состояния порта wPortChange.

Слово состояния порта имеет следующую структуру:

•   бит 0 содержит признак подключения P0RT_C0NNECTI0N (0 — порт свободен, 1 — к порту подключено устройство);

•   бит 1 содержит признак разрешения работы PORT_ENABLE (0 — работа порта запрещена, 1 — работа разрешена);

•   бит 2 содержит признак состояния ожидания PORT_SUSPEND (устанавливается в 1, если порт находится в состоянии ожидания);

•   бит 3 содержит индикатор перегрузки по току PORT_OVER_CURRENT (устанавливается в 1, если устройство потребляет от порта слишком большой ток);

•   бит 4 содержит признак активности сигнала сброса PORT RESET (устанавливается в 1, если на шине установлен сигнал сброса);

•   биты 5-7 зарезервированы (содержат нули);

•   бит 8 содержит индикатор состояния схемы управления энергией P0RT_P0WER (0 — питание на устройство не подается, 1 — подача питания разрешена);

•   бит 9 содержит признак подключения низкоскоростного устройства P0RT_L0W_SPEED (устанавливается в 1, если к порту подсоединено низкоскоростное устройство);

•   биты 10-15 зарезервированы (содержат нули).

Слово индикаторов изменения состояния имеет следующую структуру:

•   бит 0 содержит индикатор изменения состояния подключения C_P0RT_C0NNECTI0N (устанавливается в 1, если произошло подключение или отключение устройства);

•   бит 1 содержит индикатор изменения значения признака разрешения работы порта C_P0RT_ENABLE (устанавливается в 1, если работа порта была разрешена или запрещена);

•   бит 2 содержит индикатор изменения значения признака состояния ожидания C_P0RT_SUSPEND (устанавливается в 1, если порт был переключен из состояния ожидания в активный режим работы или наоборот);

•   бит 3 содержит индикатор изменения состояния сигнала перегрузки по току C_P0RT_0VER_CURRENT (устанавливается в 1, если состояние сигнала перегрузки изменилось);

•   бит 4 содержит индикатор изменения значения признака активности сигнала сброса C_P0RT_RESET (устанавливается в 1 после установки или снятия сигнала сброса);

•   биты 5-15 зарезервированы (содержат нули).

Запрос Set Hub Descriptor позволяет хосту перезаписать (заменить)

дескриптор хаба. Запрос имеет следующие параметры:

•   bmRequestType 00100000b;

•   bRequest = SET_DESCRI PTOR (07h);

•   wVa 1 ue содержит тип дескриптора (29h ) в старшем байте и индекс дескриптора (00h в младшем байте);

•   wlndex = 0;

•   wLength — размер дескриптора в байтах.

По запросу Set Hub Descriptor хост передаетхабу дескриптор, структура которого описана в табл. 8.9.

Запрос Set Hub Feature используется для того, чтобы установить признак состояния хаба, указанный значением селектора свойств. Запрос имеет следующие параметры:

•       bmRequestType = 00100000b;

•       bRequest = SET_FEATURE (03h);

•       wVal ue — селектор свойств хаба;

•       wlndex = 0;

•       wLength = 0.

Передача данных по запросу Set Hub Feature не производится. Запрос Set Port Feature используется для того, чтобы перевести порт хаба в состояние, указанное значением селектора свойств. Запрос имеет следующие параметры:

•       bmRequestType = 00100011b;

•       bRequest = SET_FEATURE (03h);

•       wVal ue — селектор свойств порта;

•      wlndex — номер порта;

•      wLength = 0.

Передача данных по запросу Set Port Feature не производится. Запрос Set Port Feature допускает использование следующих селекторов: PORT_ENABLE, P0RT_SUSPEN0, P0RT_P0WER, C_P0RT_C0NNECTI0N, C_P0RT_ ENABLE, C_PORT_Sl)SPEND, C_PORT_OVER_CURRENT, C_PORT_RESET. После установки свойства PORT_SUSPEND порт и подсоединенное к нему устройство переводятся в состоянии ожидания.

После установки свойства PORT_ENABLE работа порта будет разрешена. После установки свойства P0RT_P0WER будет включено питание порта.

Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.

По теме:

  • Комментарии