Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2019-06-06 | 210 |
5.00
из
|
Заказать работу |
|
|
Все устройства должны отвечать на запросы хоста, которые определены для данного устройства производителем и спецификацией USB. Таким образом запросы являются методом действия хоста над свойствами устройства(дескрипторами). С помощью запросов выполняются основные операции над устройствами определенные спецификацией:
1) Dynamic Attachment and Removal (Динамическое присоединение и удаление устройств)
2) Address Assignment (Назначение адреса устройству)
3) Configuration (Конфигурация устройства)
4) Data Transfer (Передача данных)
5) Power Management (Управление питанием):
6) -Power Budgeting (Планирование мощности потребления);
7) -Remote Wakeup (Пробуждение устройства по команде хоста).
8) Request Processing (Выполнение запросов):
-Request Processing Timing (Контроль времени обработки запросов);
-Reset/Resume Recovery Time (Возобновление работы по сигналам Reset/Resume);
-Set Address Processing (Установка адреса устройства);
-Standard Device Requests (Стандартные запросы устройства);
-Class-specific Requests (Специфичные запросы класса устройств).
9) Request Error (Запрос об ошибке). Запросы передаются по нулевому каналу транзакциями SETUP и могут сопровождаться, если необходимо, передачей транзакций DATA (фаза данных). Длина пакета DATA0 всегда равна 8 байтам (в транзакции SETUP).
Таблица 6 – Формат данных при запросе (8 байт)
bmRequestType | bRequest | wValue | wIndex | wLength | |||
Byte00 | Byte01 | Byte02 | Byte03 | Byte04 | Byte05 | Byte06 | Byte07 |
byte00 (bmRequestType) - битовое поле, тип запроса;
D0..D4 - Получатель 0=Устройство; 1=Интерфейс; 2=Конечная точка; 3=Другой; 4..31=резерв;
D5..D6 -Тип 0=Стандарт; 1=Класс;2=Производитель 3=резерв;
D7 -Направление 0=от хоста к устройству; 1=от устройства к хосту;
byte01 (bRequest) - код запроса, данные зависят от типа запроса.
byte02..03 (wValue) - значение передаваемого параметра (word, где byte03-старшая часть слова, byte02-младшая);
|
byte04..05 (wIndex) - значение индекса или смещения для передаваемого параметра(word, где byte05-старшая часть слова, byte04-младшая);
byte06..07 (wLength) - число, длина блока данных в байтах передаваемая в фазе данных, т.е. после транзакции SETUP.(word, где byte07-старшая часть слова, byte06-младшая)Если =0, то фаза передачи данных отсутствует и запрос представлен только транзакцией SETUP. Запрос передается в шину USB последовательно начиная с Byte00.Каждый бит байта передается последовательно, начиная с бита-0.
Стандартные запросы (Standard Device Requests) устройства, определённые спецификацией USB 1.1 приведены в таблицах 7-17.
Таблица 7 – CLEAR_FEATURE (Очистить возможности)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x00(к устройству) | 0x01(код запроса) | Feature Selector | 0x0000 | 0x0000 |
0x01(к интерфейсу) | 0x01(код запроса) | Feature Selector | Interface | 0x0000 |
0x02(к конечной точке) | 0x01(код запроса) | Feature Selector | Endpoint | 0x0000 |
Этот запрос хоста блокирует специальные возможности устройства, интерфейса или конечной точки указанные в поле wValue.
Таблица 8 – GET_CONFIGURATION(Получить конфигурацию)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x80(от устройства) | 0x08(код запроса) | 0x0000 | 0x0000 | 0x0001 |
Этот запрос возвращает хосту текущую конфигурацию устройства. Если ответ 0, то устройство не сконфигурировано
Таблица 9 – GET_DESCRIPTOR(Получить дескриптор)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x80(от устройства) | 0x06(код запроса) | Descriptor Type and Index | ID Language | Descriptor Length |
Этот запрос возвращает определённый полем wValue дескриптор, если он существует. Старший байт(byte03) поля wValue указывает тип дескриптора:1=Device; 2=Configuration; 3-String; 4=Inteface; 5=Endpoint.Младший байт(byte02) поля wValue указывает индекс дескриптора.Для строковых дескипторов поле wIndex содержит идентификатор языка по кодировке UNICODE.Поле wLength указывает общую длину дескриптора в байтах.
Таблица 10 – GET_INTERFACE(Получить интерфейс)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x81(от интерфейса) | 0x0A(код запроса) | 0x0000 | Interface | 0x0001 |
Это запрос возвращает альтернативную установку для интерфейса, номер которого указан в поле wIndex. В фазе данных хост принимает 1 байт с номером алтернативного интерфейса.
|
Таблица 11 – GET_STATUS(Получить статус)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x80(от устройства) | 0x00(код запроса) | 0x0000 | 0x0000 | 0x0002 |
0x81(от интерфейса) | 0x00(код запроса) | 0x0000 | Interface | 0x0002 |
0x82(от конечной точки) | 0x00(код запроса) | 0x0000 | Endpoint | 0x0002 |
Этот запрос возвращает в фазе данных 2 байта статуса устройства или интерфейса, или конечной точки, указанных в поле wIndex.
Таблица 12 – SET_ADRESS(Установить адрес)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x00(к устройству) | 0x05(код запроса) | Device Adress | 0x0000 | 0x0000 |
Этот запрос устанавливает число, указанное в поле wValue, как адрес прибора в сети.
Таблица 13 – SET_CONFIGURATION(Установить конфигурацию)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x00(к устройству) | 0x09(код запроса) | Configuration Value | 0x0000 | 0x0000 |
Этот запрос устанавливает число, записанное в поле wValue как конфигурацию устройства. Если число 0, то устройство будет не сконфигурированным
Таблица 14 – SET_DESCRIPTOR(Установить дескриптор)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x00(к устройству) | 0x07(код запроса) | Descriptor Type and Index | ID Language | Descriptor Length |
Это необязательный запрос. Если устройство поддерживает его, то существующие дескрипторы устройства указанные в поле wValue, заменяются дескрипторами, которые хост передаст в фазе данных.
Таблица 15 – SET_FEATURE (Установить возможности)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x00(к устройству) | 0x03(код запроса) | Feature Selector | 0x0000 | 0x0000 |
0x01(к интерфейсу) | 0x03(код запроса) | Feature Selector | Interface | 0x0000 |
0x02(к конечной точке) | 0x03(код запроса) | Feature Selector | Endpoint | 0x0000 |
Этот запрос включает дополнительные возможности устройства, интерфейса, конечной точки, указанные в поле wValue.
Таблица 16 – SET_INTERFACE (Установить интерфейс)
bmRequestType | bRequest | wValue | wIndex | wLength |
0x01(к интерфейсу) | 0x0B(код запроса) | Alternate Setting | Interface | 0x0000 |
Этот запрос позволяет интерфейсу, номер которого указан в поле wIndex использовать альтернативные установки с номером, указанным вwValue.
Таблица 17 – <sSYNC_FRAME(Синхронизовать кадр)</s
bmRequestType | bRequest | wValue | wIndex | wLength |
0x82(от конечной точки) | 0x0C(код запроса) | 0x0000 | Endpoint | 0x0002 |
Этот запрос используется, чтобы установить и затем сообщить кадр синхронизации конечной точке. Параметры запросов: Descriptor Types(Тип дескриптора):1=Device; 2=Configuration; 3-String; 4=Inteface; 5=EndpointFeature Selectors (Выбор возможностей): 1=Device_Remote_Wakeup; 0=Endpoint_HaltInterface (номер интерфейса): целое числоEndpoint (адрес конечной точки): целое число 0..15 Alternate Setting(номер альтернативного интерфейса):целое числоID Language (Идентификатор языка):целое число, идентификатор языка в UNICODE
|
Дескрипторы устройств
Дескриптор(Описатель) – это структура данных с определённым форматом, которую использует устройства для того чтобы сообщить о своих атрибутах. Каждый дескриптор начинается с байта, в котором указана общая длина дескриптора, которая следует за байтом, обозначающим тип дескриптора. Каждая конфигурация устройства может многократно использовать различные дескрипторы, образуя реляционные базы данных, что существенно уменьшает количество дескрипторов. В соответствующих местах, дескрипторы содержат ссылки на строковые дескрипторы, которые предоставляют отображаемую информацию, описывающую дескриптор, в удобной для прочтения человеком форме. Включение строковых дескрипторов необязательно. Однако, поля ссылок внутри дескрипторов обязательны. Если устройство не поддерживает строковые дескрипторы, в строковых полях должны быть ссылки, сброшенные в нуль, чтобы указать, что нет доступных строковых дескрипторов. В USB определены следующие стандартные дескрипторы: устройств, конфигурации, интерфейса, конечной точки, строки.
Дескриптор устройства (Device Descriptor). Дескриптор устройства описывает общую информацию относительно устройства USB. Она включает информацию, которая применяется устройством глобально и во всех его конфигурациях (таблица 18). Устройство USB имеет только один дескриптор устройства.
Таблица 18 – Дескриптор устройства (18 байт)
bLength | bDescriptorType | bcdUSB | bDeviceClass | bDeviceSubClass | bDeviceProtocol | bMaxPacketSize0 | idVendor | idProductd | bcdDevice | iManufacturer | iProduct | iSerialNumber | bNumConfigurations | ||||
Byte00 | Byte01 | Byte02 | Byte03 | Byte04 | Byte05 | Byte06 | Byte07 | Byte08 | Byte09 | Byte10 | Byte11 | Byte12 | Byte13 | Byte14 | Byte15 | Byte16 | Byte17 |
byte00 (bLength) -число, длина дескриптора в байтах
|
byte01 (bDescriptorType) -константа, тип дескриптора =1 (Device Descriptor)
byte02..03 (bcdUSB) -число (BCD-формат), номер спецификации USB поддерживаемой устройством
byte04(bDeviceClass) -число, код класса устройства.
bDeviceClass=0 интерфейс сам определяет информацию о классе, различные интерфейсы функционируют независимо.
bDeviceClass=0x01..0xFE интерфейсы определены классом устройств заданым фондом USB.
bDeviceClass=0xFF класс устройства для данных интерфейсов определен производителем.
byte05 (bDeviceSubClass) -число, код подкласса устройства. Заданы фондом USB(за исключением класса 0xFF)
byte06 (bDeviceProtocol) -число, код протокола устройства.
bDeviceClass=0 устройство не использует протоколы определённые классом.
bDeviceClass=0x01..0xFE протоколы определены классом. Заданы фондом USB.
bDeviceClass=0xFF протокол определён производителем.
byte07(bMaxPacketSize0) -число, максимальный размер пакета данных для нулевой точки в байтахbyte08..09 (idVendor) -идентификатор, производителя. Задан фондом USB.
byte10..11 (idProduct) -идентификатор, продукта.Задан производителем устройства.
byte12..13(bcdDevice) -число (BCD-формат), версия устройства
byte14(iManufacturer) -индекс, индекс строкового дескриптора производителя
byte15 (iProduct) -индекс, индекс строкового дескриптора продукта
byte16 (iSerialNumber) - индекс, индекс строкового дескриптора серийного номера устройства
byte17 (bNumConfigurations) - число, количество возможных конфигураций
Дескриптор конфигурации (Configuration Descriptor). Дескриптор конфигурации описывает информацию о конфигурации устройства. Дескриптор содержит поле bConfigurationValue (таблица 19), значение которого используется как параметр в запросе Set Configuration, который заставляет устройство переходить в описанную конфигурацию. Устройства могут иметь несколько дескрипторов конфигураций.
Таблица 19 – Дескриптор конфигурации (9 байт)
bLength | bDescriptorType | wTotalLength | bNumInterfaces | bConfigurationValue | iConfiguration | bmAttributes | MaxPower | |
Byte00 | Byte01 | Byte02 | Byte03 | Byte04 | Byte05 | Byte06 | Byte07 | Byte08 |
byte00(bLength) -число, длина дескриптора в байтах
byte01 (bDescriptorType) -константа, тип дескриптора =2 (Configuration Descriptor) byte02..3(wTotalLength) -число, Общая длина данных в байтах, возвращаемых для этой конфигурации. Включает объединенную длину всех дескрипторов (конфигурации, интерфейса, конечной точки, и класса или определений продавца) возвращенных для этой конфигурации.
byte04 (bNumInterfaces) -число, интерфейсов поддерживаемых этой конфигурацией
byte05 (bConfigurationValue) -число, номер конфигурации, используемый в запросе SetConfiguration, для выбора этой конфигурации.
byte06 (iConfiguration) -индекс, строкового дескриптора описывающего эту конфигурацию
byte07 (bmAttributes) -битовое поле, определяет свойства устройства
D7=1 устроство питается от шины USB
D6=1 устройство имеет независимое питание
D5=1 устройство имеет функцию удалённого пробуждения
|
D4..D0 резерв (всегда 0)
byte08 (MaxPower) -число, максимальный ток потребления в х2мА (т.е. 50=100мА)
Дескриптор интерфейса (Interface Descriptor). Дескриптор интерфейса описывает набор конечных точек включенных в интерфейс для заданной конфигурации (таблица 20). Дескриптор интерфейса всегда возвращается как часть дескриптора конфигурации. К нему нельзя непосредственно обращаться запросом Get или Set Descriptor. Дескриптор интерфейса никогда не включает нулевую конечную точку в число конечных точек.
Таблица 20 – Дескриптор интерфейса (9 байт)
bLength | bDescriptorType | bInterfaceNumber | bAlternateSetting | bNumEndpoints | bInterfaceClass | bInterfaceSubClass | bInterfaceProtocol | iInterface |
Byte00 | Byte01 | Byte02 | Byte03 | Byte04 | Byte05 | Byte06 | Byte07 | Byte08 |
byte00 (bLength) -число, длина дескриптора в байтах
byte01 (bDescriptorType) -константа, тип дескриптора =4 (Interface Descriptor)
byte02 (bInterfaceNumber) - число, номер интерфейса в массиве параллельных интерфейсов поддерживаемых данной конфигурацией.
byte03 (bAlternateSetting) -число, номер альтернативного интерфейса для интерфейса указанного в bInterfaceNumber
byte04 (bNumEndpoints) -число, количество конечных точек используемых этим интерфейсом (без нулевой точки)
byte05 (bInterfaceClass) - число, код класса интерфейса. bInterfaceClass=0 -зарезервирован для будущей стандартизации bInterfaceClass=0xFF -класс интерфейса определенный производителем bInterfaceClass=0x1..0xFE -класс интерфейса задан фондом USB
byte06 (bInterfaceSubClass) - число, код подкласса интерфейса
byte07(bInterfaceProtocol) -число, код протокола. Эти коды определяются значением полей bInterfaceClass и bInterfaceSubClass. Если интерфейс поддерживает запросы, определяемые классом, этот код определяет протоколы, которые устройство использует как определено спецификацией класса устройства. Если это поле сброшено в 0, устройство не использует протокол, определяемый классом на этом интерфейсе. Если это поле установлено к 0xFF, устройство использует для этого интерфейса протокол, определенный производителем.
byte08 (iInterface) -индекс, строкового дескриптора интерфейса
Дескриптор конечной точки (Endpoint Descriptor). Каждая конечная точка, используемая для интерфейса, имеет собственный дескриптор (таблица 21). Этот дескриптор содержит информацию, требуемую хостом, чтобы определить требования по пропускной способности каждой конечной точки. Дескриптор конечной точки всегда возвращается как часть дескриптора конфигурации. К нему нельзя непосредственно обращаться запросом Get или Set Descriptor. Нулевая точка не имеет дескриптора.
Таблица 21 – Дескриптор конечной точки (7 байт)
bLength | bDescriptorType | bEndpointAddress | bmAttributes | wMaxPacketSize | bInterval | |
Byte00 | Byte01 | Byte02 | Byte03 | Byte04 | Byte05 | Byte06 |
byte00(bLength) -число, длина дескриптора в байтах
byte01 (bDescriptorType) - константа, тип дескриптора =5 (Endpoint Descriptor)
byte02 (bEndpointAddress) -число, адрес конечной точки
Bit0..3 -адрес конечной точки (0..15)
Bit4..6 –резерв
Bit7 -направление передачи 0=OUT; 1=IN
byte03(bmAttributes) - битовое поле атрибутов
Bit0..1 - тип передачи 00=Control; 01=Isochronous; 10=Bulk; 11=Interrupt
Bit2..7 - резервbyte04..05(wMaxPacketSize) - число, максимальная длина пакета данных используемая конечной точкой. Для изохронных конечных точек, это значение используется, чтобы резервировать время шины в кадре.
byte06 (bInterval) -число, Интервал при опросе конечной точки в миллисекундах. Это поле игнорируется для конечных точек Bulk и Control.
Для изохронных конечных точек это поле должно быть установлено в 1.
Для конечных точек прерывания, это поле может иметь значение от 1 до 255.
Дескриптор строки (String Descriptor). Дескрипторы строк являются необязательными. Строковые дескрипторы описывают характеристики устройства текстовыми строками, что удобно для человека (таблица 22). Если устройство не поддерживает строковые дескрипторы, все ссылки к строковым дескрипторам внутри устройства, конфигурации, и дескрипторах интерфейса должны быть сброшены в нуль. При запросе строкового дескриптора, запросчик определяет требуемый язык, используя ID (LANGID) определенный Microsoft Windows UNICODE.В отличии от Windows строка не обязана заканчиваться NULL символом
Таблица 22 – Дескриптор строки (более 2 байт)
bLength | bDescriptorType | String |
Byte00 | Byte01 | Byte02..N |
byte00(bLength) -число, длина дескриптора в байтах
byte01 (bDescriptorType) -константа, тип дескриптора =3 (String Descriptor)
byte02..N (bLength) -строка в UNICODE
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!