Инициализация устройств. Видимые состояния устройства — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Инициализация устройств. Видимые состояния устройства

2019-06-06 344
Инициализация устройств. Видимые состояния устройства 0.00 из 5.00 0 оценок
Заказать работу

Протокольный уровень USB1.1

 

Обмен данных происходит пакетами, которые образуют транзакции. Транзакция обычно состоит из трех пакетов: маркерного, данных, квитирования. Транзакция обеспечивает однократный обмен данными между хостом и конечной точкой устройства. В свою очередь транзакции включены в кадр(Frame). Начала кадра и номер кадра передаются специальным пакетом(SOF) каждую 1 ms.

 

Пакет (Packet)

 

Передача данных осуществляется пакетами (рисунок 1, 2). Начало пакета определяется по сигналу SOP (Start of Packet), это переход из состояния Idle в состояние K. Далее следует байт синхронизации SYNC (80hex), которой после NRZI кодирования имеет вид KJKJKJKK. Последних два бита SYNC- KK являются маркерам начала блока данных. Блок данных состоит из полей разной длины, суммарная длина блока данных должна быть кратна 8 битам. Байты передаются в порядке очереди начиная с младшего бита и заканчивая старшим битом.

 

 

Рисунок 1 – Пакет Low Speed USB1.1(1,5 Mb/s)

 

Рисунок 2 – Пакет Full Speed USB1.1(12 Mb/s)

 

Заканчивается пакет сигналом EOP (End of Packet) длительностью 3 бита, который является временным разделителем пакетов.

Типы пакетов: Token Packets(TP) - Маркерный пакет. Этот пакет всегда посылается хостом и является заголовком транзакции, т.е. определяет кому и как будет передаваться информация в следующем пакете (рисунок 3). В таблице 1 приведено описание полей маркерного пакета.

 

 

Рисунок 3 - Структура маркерного пакета

 

Таблица1 – Описание полей маркерного пакета

 

PID PID NAME Описание
0xE1(1110 0001) OUT передача данных от хоста к конечной точке
0x69(0110 1001) IN передача данных от конечной точки к хосту
0x2D(0010 1101) SETUP передача от хоста к конечной точке по каналу управления

ADDR число 1..127 -адрес устройства с которым будет работать хост в текущей транзакции. ENDP число 0..15 -адрес конечной точки с которой будет работать хост в текущей транзакцииCRC5 контрольная сумма полей ADDR,ENDP-вычисляется без учёта дополнительных синхробитов Stuffed Bit - вычисляется побитовой сверткой данных с полиномом 0x25(100101).

Start-of-Frame Packets(SOF) пакет, определяющий начала кадра. Этот пакет посылается хостом каждую миллисекунду(1000Гц) и обозначает начало нового кадра (рисунок 4). Этот пакет могут принимать все устройства сети, он без адресный. Это единственный пакет, имеющий синхронизацию с часами реального времени. В пакете присутствует счетчик кадров, который по сути является счетчиком миллисекунд. Устройства могут синхронизировать свою работу с реальным временем считывая это пакет. Структура пакета начала кадра представлена в таблице 2.

 

 

Рисунок 4 – Структура пакета начала кадра

 

Таблица 2 – Описание полей пакета начала кадра

 

PID PID NAME Описание
0xA5(1010 0101) SOF (Start-of-Frame) маркер начала кадра

 

Frame Number число 0..2047 -номер кадра (количество миллисекунд). Этот счетчик имеет полный цикл в 2,048 сек. CRC5 контрольная сумма поля Frame Number-вычисляется без учёта дополнительных синхробитов Stuffed Bit - вычисляется побитовой сверткой данных с полиномом 0x25(100101).

Data Packets(DP) пакет данных. Это пакет с данными, которыми обмениваются хост и конечная точка устройства (рисунок 5). В транзакции он следует за маркерным пакетом. Структура пакета данных представлена в таблице 3.

 

 

Рисунок 5 – Структура пакета данных

Таблица 3 – Описание полей пакета данных

 

PID PID NAME Описание
0xС3(1100 0011) DATA0 пакет данных с четным PID
0x4B(0100 1011) DATA1 пакет данных с нечетным PID

 

DATA данные для обмена между хостом и конечной точкой в байтах. Число байтов данных называют полезной нагрузкой пакета(Payload). CRC16 - контрольная сумма поля DATA-вычисляется без учёта дополнительных синхробитов Stuffed Bit - вычисляется побитовой сверткой данных с полиномом 0x18005(11000000000000101).

Handshake Packets(HP) - пакет квитирования. Этим пакетом обычно заканчивается транзакция между хостом и конечной точкой (рисунок 6). В нем сообщается о результатах приёма пакета данных. Описание полей пакета квитирования приведено в таблице 4.

 

 

Рисунок 6 – Структура пакета квитирования

 

Таблица 4 – Описание полей пакета квитирования

 

PID PID NAME Описание
0xС3(1101 0010) ACK Выставляется хостом(IN-транзакция) или функцией(OUT) и подтверждает, что обмен данными между ними прошел без ошибок
0x5A(0101 1010) NAK Выставляется только функцией, подтверждает что данные OUT-транзакции приняты от хоста с ошибкой
0x1E(0001 1110) STALL Выставляется только функцией, подтверждает, что функция остановлена и не готова к обмену в IN/OUT транзакциях.

 

Preambule Packets(HP) - преамбула низкоскоростного пакета. Этот пакет предписывает хабу работающему на полной скорости передать следующий за преамбулой пакет на низкой скорости (рисунок 7). После получения сигнала EOP в конце низкоскоростного пакета хаб должен вернуться на полную скорость. Структура пакета преамбулы представлена в таблице 5.

 

 

Рисунок 7 – Структура пакета преамбулы

 

Таблица 5 – Описание полей пакета преамбулы

 

PID PID NAME Описание
0xС3(0011 1100) PRE Выставляется хостом. Предписывает хабу передать пакет за преамбулой на LS.

 

Транзакция (Transaction)

 

Транзакция – это однократный обмен данными между хостом и конечной точкой. Обычно она состоит из трёх стадий(пакетов):

-хост выбирает с кем он будет общаться (маркерный пакет);

-посылка данных (пакет данных);

-подтверждение приёма данных (пакет квитирования).

Транзакции включаются в состав кадров, которые передаются каждую 1 ms. Транзакции связаны с типом передачи, на который настраивается конечная точка в процессе инициализации устройства(см.п.3.3).

Типы передачи: Control Transfers - передача управления (команды). Хост посылает команды, функция принимает с подтверждением (рисунок 8).

 

 

Рисунок 8 – Структура транзакции при передаче управления

Bulk Data Transfers - передача важных данных (ошибки не допустимы: файл). Этот тип передачи гарантирует доставку пакета без ошибок, но не гарантирует время доставки (рисунок 9). Хост и функция подтверждают приём данных.

 

 

Рисунок 9 – Структура транзакции при передаче важных данных

 

Interrupt Data Transfers - передача данных по прерыванию (ввод координат: клавиатура, мышь). Структура транзакции одинакова с Bulk Transactions (рис.16).

Isochronous Data Transfers - передача изохронных данных (потоковая передача с возможными ошибками: микрофон, видео). Этот тип передачи гарантирует время доставки данных, но не гарантирует их правильность (рисунок 10). В этих транзакциях не используется пакет подтверждения.

 

 

Рисунок 10 – Структура транзакции при передаче изохронных данных

TimeOut время ожидания в транзакциях: Устройство должно ожидать квитирования не менее 16 битовых интервалов и приостанавливаться через 18 битовых интервалов. Хост может послать следующий маркер, если устройство не ответило, не ранее чем через 18 битовых интервалов. Ограничения для LowSpeed транзакций: Максимальное количество байт данных в транзакции не более 8. Поддерживаются только передачи прерывания и управления. Пакет SOF не получается низко скоростными устройствами.

 

Кадр (Frame)

 

Кадр это набор транзакций, который начинается пакетом SOF(Start-of-Frame). Кадры генерируются 1000 раз в секунду (1ms). Пакет SOF содержит в себе счетчик кадров. Пакет SOF принимается одновременно всеми устройствами сети, он позволяет синхронизоваться устройствами относительно часов хоста. Передача всех данных с устройств должны быть закончены до начала следующего кадра. Устройства не выполнившие эти требования автоматически отключаются от сети.

 

Устройства (Devices)

 

Устройства USB представлены двумя глобальными классами: хабы и функции. Устройство (хаб или функция) состоит их набора конечных точек (от 1 до 16 шт.).Каждая точка является отдельным каналом связи между хостом и устройством, осуществляющим определённый тип передачи Control/Bulk/Interrupt/Isochronus. В каждом устройстве всегда есть нулевая конечная точка, которая формирует канал с типом передачи Control (Канал по умолчанию).Через канал по умолчанию хост получает информацию о устройстве (дескриптор устройства),присваивает устройству индивидуальный адрес в сети (1..127) и записывает байт конфигурации устройства (после удачной конфигурации всех конечных точек устройства).Определённый набор сконфигурированных конечных точек используемых совместно называется интерфейсом. Устройство может иметь несколько альтернативных интерфейсов, которые описываются в конфигурациях. Устройство имеет одну и более конфигураций. Каждая конфигурация имеет один и более интерфейсов. Каждый интерфейс имеет одну и более конечных точек. Для описания атрибутов устройства используют дескрипторы(описатели), которые сообщаются по запросу хоста (Device Requests). Дескрипторы устройства и запросы хоста группируются в протоколы, подклассы, классы образуя реляционные базы данных. Это существенно уменьшает количество дескрипторов и запросов для вновь создаваемых устройств USB. Таким образом система дескрипторов (описателей свойств) и запросов (методов действий) формирует иерархическую реляционную структуру данных, в которой можно проследить наследственную нить, представленную как: Глобальный класс-Класс-Подкласс-Протокол-Конфигурация-Интерфейс-Конечная точка.

 

Дескрипторы устройств

 

Дескриптор(Описатель) – это структура данных с определённым форматом, которую использует устройства для того чтобы сообщить о своих атрибутах. Каждый дескриптор начинается с байта, в котором указана общая длина дескриптора, которая следует за байтом, обозначающим тип дескриптора. Каждая конфигурация устройства может многократно использовать различные дескрипторы, образуя реляционные базы данных, что существенно уменьшает количество дескрипторов. В соответствующих местах, дескрипторы содержат ссылки на строковые дескрипторы, которые предоставляют отображаемую информацию, описывающую дескриптор, в удобной для прочтения человеком форме. Включение строковых дескрипторов необязательно. Однако, поля ссылок внутри дескрипторов обязательны. Если устройство не поддерживает строковые дескрипторы, в строковых полях должны быть ссылки, сброшенные в нуль, чтобы указать, что нет доступных строковых дескрипторов. В 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

 

Функционирование хаба

 

Хаб является разветвителем сети, который предоставляет порты для устройств USB. Хаб состоит (рисунок 12) из одного верх передающего порта(Upstream) и нескольких вниз передающих портов (Downstream).

 

 

Рисунок 12 – Архитектура хаба

 

Хаб устроен из повторителя(Repeater) и управляющего им контроллера(Controler). Устройства-функции могут подключатся только к Downstream портам хаба. В свободном состоянии (Idle) все порты хаба работают только на приём, они ожидают сигнала SOP-начала пакета (рисунок 13).

 

Рисунок 13 – Хаб в состоянии ожидания пакета данных (Idle)

Хаб транслирует данные полученные с Upstream во все Downstream порты (рисунок 14). Таким образом, пакет посланный хостом попадает ко всем сконфигурированным устройствам сети одновременно. Устройство само решает обрабатывать этот пакет или нет.

 

 

Рисунок 14 – Хаб в состоянии передачи пакета от Хоста

 

Данные поступающие из Downstream порта передаются только в Upstream порт, при этом остальные Downstream порты блокируются.

Таким образом, хост принимает пакет только от одного устройства сети, остальные устройства в этот момент блокированы хабами и вести обмен данными не могут. Устройство может послать пакет только по запросу хоста (рисунок 15).

 

 

Рисунок 15 – Хаб в состоянии передачи пакета от Устройства

 

Таким образом, сигнал SOP включает повторитель, а сигнал EOP выключает (переводит в Idle). Хост управляет поведением хаба считывая его дескрипторы(состояния) и посылая ему запросы(команды).

Дескрипторы хаба

 

Хаб является устройством, поэтому он поддерживает стандартные дескрипторы устройств (таблица 23). Для класса устройств типа хаб спецификация определила код HUB_CLASSCODE=0х09H. Кроме стандартных дескрипторов устройств спецификация определяет класс-специфицированные дескрипторы для класса хабов.

Таблица 23 – Дескриптор хаба (8 байт или более)

 

BDescLength bDescriptorType bNbrPorts

wHubCharacteristics

bPwrOn2PwrGood bHubContrCurrent DeviceRemovable PortPwrCtrlMask
Byte00 Byte01 Byte02 Byte03 Byte04 Byte05 Byte06 Byte7..39 Byte08..
                 

 

Описание полей дескриптора хаба (Hub Descriptor):

byte00(bDescLength) -число, длина дескриптора в байтах

byte01(bDescriptorType) -константа, тип дескриптора =0x29h (Hub Descriptor)

byte02(bNbrPorts) -число, количество Downstream портов, поддерживаемых хабом

byte03..04(wHubCharacteristics) -битовое поле:

D1..D0= 00-все порты запитаны к одному; 01-каждый порт включается отдельно; 1Х-неопределено

D2= 0-хаб не входит в составное устройство; 1- хаб является частью составного устройства;

D4..D3= 00-глобальная защита от перегрузки, суммированием тока всех портов; 01-защита каждого порта; 1Х-нет защиты от перегрузки

D15..D5=резерв

byte05(bPwrOn2PwrGood) -число, в 2мс единицах, показывает время необходимое для запитки порта

byte06(bHubContrCurrent) -максимальный ток в мА потребляемый контроллером хаба

byte07..39(DeviceRemovable) -битовое поле, которое показывает является устройство съёмным, значение бита 0-съёмное; 1-не съёмное. Всего 256 бит (bit0-неиспользуется, bit1-порт1 ит.д. до 255)

byte40(bNumConfigurations) -битовое поле, которое нужно для согласования с версией USB 1.0 количество бит равно числу портов плюс битов кратности 8. Все биты должны быть установлены в 1.

 

Запросы хаба хостом

 

Хаб как устройство поддерживает запросы стандартных устройств. Для хаба определенны класс-специфицированные запросы (таблица 24).

В таблице 24 приняты следующие обозначения: bRequest -код запроса.

GET_STATUS=0;

CLEAR_FEATURE=1;

GET_STATE=2;

SET_FEATURE=3;

Reserved=4-5;

GET_DESCRIPTOR=6;

SET_DESCRIPTOR=7;

Таблица 24 – Класс-специфицированные запросы Хаба

 

Request bRequestType bRequest wValue wIndex wLenght Data
Name Byte00 Byte01 Byte02..03 Byte04..05 Byte06..07 N*Byte
ClearHubFeature 00100000B CLEAR_ FEATURE Feature Selector Zero Zero None
ClearPortFeature 00100011B CLEAR_ FEATURE Feature Selector Port Zero None
GetBusState 10100011B GET_ STATE Zero Port One Per-Port Bus State
GetHubDescriptor 10100000B GET_DESCRIPTOR Descriptor Type and Descriptor Index Zero or Language ID Descriptor Length Descriptor
GetHubStatus 10100000B GET_ STATUS Zero Zero 4 Hub Status and Hub Change Indicators
GetPortStatus 10100011B GET_ STATUS Zero Zero 4 Port Status and Port Change Indicators
SetHubDescriptor 00100000B SET_DESCRIPTOR Descriptor Type and Descriptor Index Zero or Language ID Descriptor Length Descriptor
SetHubFeature 00100000B SET_ FEATURE Feature Selector Zero Zero None
SetPortFeature 00100011B SET_ FEATURE Feature Selector Port Zero None

 

Feature Selectors - выбор возможностей;

C_HUB_LOCAL_POWER =0 (Получатель Hub)-возможность изменения локального питания;

C_HUB_OVER_CURRENT =1 (Получатель Hub)-возможность изменения контроля перегрузки по току для хаба;

PORT_CONNECTION =0 (Получатель Port)-возможность подсоединения порта;

PORT_ENABLE=1(Получатель Port)-возможность разрешения порта;

PORT_SUSPEND=2 (Получатель Port)-возможность приостановки порта;

PORT_OVER_CURRENT=3 (Получатель Port)-возможность контроля перегрузки по току для порта;

PORT_RESET=4(Получатель Port)-возможность сброса порта;

PORT_POWER=8 (Получатель Port)-возможность контроля питания порта;

PORT_LOW_SPEED=9 (Получатель Port)-возможность работы на низкой скорости;

C_PORT_CONNECTION=16 (Получатель Port)-возможность изменения подключения порта;

C_PORT_ENABLE =17 (Получатель Port)-возможность изменения разрешения порта;

C_PORT_SUSPEND =18 (Получатель Port)-возможность изменения приостановки порта;

C_PORT_OVER_CURRENT=19 (Получатель Port)-возможность изменения контроля перегрузки;

C_PORT_RESET =20 (Получатель Port)-возможность изменения сброса порта;

Hub Status -битовое поле (16 бит), состояние хаба

Bit0 -Источник локального питания (Local Power Source) 0-локальное питание включено; 1-локальное питание выключено;

Bit1 -Индикатор перегрузки (Over-current Indicator) 0-перегрузка по току; 1-нет перегрузки по току;

Bit15..2 – резерв;

Hub Change Indicators - битовое поле (16 бит), изменение индикаторов;

Bit0 -Изменения состояния локального питания (Local Power Status Change), 0-нет изменения локального питания; 1-было изменение локального питания;

Bit1 -Изменение индикатора перегрузки (Over-current Indicator Change), 0-изменение индикатора перегрузки по току; 1-нет было изменение индикатора;

Bit15..2 – резерв;

Per-Port Bus State -битовое поле(8 бит), состояние линий D+,D-;

Bit0 -значение на линии D-;

Bit1 -значение на линии D+;

Bit7..Bit2 -резерв.

Port Status -битовое поле (16 бит), состояние порта;

Bit0 -Состояние текущего соединения (Current Connect Status) 0-нет подсоединённого устройства; 1-к порту присоединено устройство;

Bit1 -Вкл/Выкл порта (Port Enabled/Disabled) 0-порт выключен; 1-порт включен;

Bit2 -Приостановлено(Susped) 0-нет приостановки; 1-приостановка или возобновление;

Bit3 -Индикатор перегрузки (Over-current Indicftor) 0-нет перегрузки; 1-есть перегрузка;

Bit4 -Сброс (Reset) 0-сброса не было; 1-сброс был;

Bit7..5 -резерв;

Bit8 -Питание порта (Port Power) 0-питание порта выключено; 1-питание порта включено;

Bit9 -Присоединение низкоскоростного устройства (Low Speed Device Attached) 0-к порту подключено FS устройство; 1-к порту подключено LS устройство;

Bit15..10 -Резерв.

Port Change Indicators - битовое поле (16 бит), изменение индикаторов порта

Bit0 -Изменения состояния соединения (Connect Status Change) 0-нет изменения текущего соединения; 1-было изменение соединения;

Bit1 -Изменение состояния порта Вкл/Выкл(Port Enable/Disable Change) 0-было изменение вкл/выкл; 1-нет было изменение;

Bit2 -Изменение состояния приостановки (Suspend Change) 0-нет изменений; 1-Восстановлено (Resume complete);

Bit3 -Изменение индикатора перегрузки (Over-Current Indicator Change) 0-нет изменений; 1-есть изменения;

Bit4 -Изменение состояния сброса (Reset Change) 0-нет изменений; 1-был сброс;

Bit15..5 -Резерв.

 

Логическая структура хоста

 

Хост является единственным и основным ведущим устройством сети. Он определяет с кем и на каких условиях будет происходить обмен данными. Устройство не может самостоятельно вызывать хост, оно ожидает обращение хоста к устройству. Поэтому хост должен спланировать всю работу в сети. Логически связь хоста с устройством разбита на три уровня (рисунок 16).

 

 

Рисунок 16 – Логическая структура Хост - Устройство

Три логических уровня: 1. Клиентский уровень (Client-Function). Организует логическую связь программы пользователя с функцией устройства. Обеспечивает передачу и приём пользовательских данных между ПК и устройством. Делает невидимым для пользователя работу системного и физического уровня. Использует каналы точек 1..15.

2.Системный уровень (USB System). Организует логическую связь между USB драйвером хоста и устройства. Обеспечивает конфигурацию и настройку устройства. Делает невидимым для драйвера работу физического уровня. Использует канал по умолчанию (0-точка)

3.Физический уровень (USB Interface).

Обеспечивает физическую передачу данным между контроллерами хоста и устройства.

 

 

Рисунок 17 – Структура хоста

 

Client Soft - клиентское программное обеспечение.

Клиентское программное обеспечение общается с устройством через интерфейс.

Интерфейс – это набор логических каналов связи с конечными точками.

В интерфейсе каждый канал может быть настроен на передачу, или на приём.

Интерфейсов может быть несколько и ПО клиента выбирает номер интерфейса, по которому оно будет общаться с устройством.

Физически связь клиентского ПО с USB драйвер осуществляется с помощью пакетов, содержащих команды ввода/вывода (IRP).

IRPs(I/O Request Packets) -протокол обмена ПО клиента с драйвером USB.

Пакет содержащий запрос к драйверу USB о вводе или выводе информации через указанный логический канал.

В этом пакете определён тип передачи, адрес буфера памяти и размер данных для обмена по заданному каналу.

USB драйвер сам забирает или помещает даные в этот буфер, клиент только указывает размер и адрес буфера.

Host Software- программное обеспечение хоста.

Это не обязательный элемент хоста.

Если он присутствует, то его конфигурацию должно выполнять ПО клиента.

Обычно применяется если система не использует стандартный USB драйвер.

USB Driver(USBD)- драйвер USB.

Этот драйвер организует базисный интерфейс хоста(USBDI), который обеспечивает взаимодействие клиентов с устройствами USB.

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

Назначает адрес каждому физическому устройству сети.

Распределяет полосу пропускания шины между устройствами.

Планирует все транзакции.

Связь между USBD и HCD (HC Driver) известна как HCDI-интерфейс (Host Controller Driver Interface)

Этот интерфейс никогда не доступен непосредственно клиентам и таким образом не определяется спецификацией USB.

Однако особенности HCDI, определены каждой операционной системой, которая поддерживает различные реализации хост контроллеров.

USBD получает пакеты запросов ввода/вывода от клиентского ПО и формирует задание для HC драйвера.

HC Driver (HCD-Host Conttroller Driver)-драйвер хост контроллера.

Этот драйвер отвечает за подключение USB драйвера к различным хост контроллерам.

Принимает от USBD перечень текущих транзакций.

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

Сообщает в USBD о выполнении транзакции.

HW-Defined (Hard Ware Defined) -интерфейс между HC Driver и Host Controller.

Этот интерфейс описывается (definition) в драйвере HCD аппаратной частью контроллера.

Host Controller -контроллер хоста.

Физическое устройство, которое формирует и физически выполняет транзакции из очереди установленной драйвером HCD.

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

Кодирует данные в NRZI.

Вставляет синхробиты.

Контроллер подает текущую транзакцию в схему последовательной передачи данных SIE (Serial Interface Engine) в сигнальные линии USB.

Serial Interface Engine (SIE) -физический последовательный интерфейс.

Физическое устройство, которое формирует последовательный сигнал, передающийся по проводам.

 

Содержание отчёта

 

Отчет по лабораторной работе должен содержать:

- титульный лист;

- название и цель работы;

- ответы на контрольные вопросы.

 

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

 

1) Приведите диаграммы сигналов при передаче пакетов Low Speed и Full Speed по интерфейсу USB1.1 и их описание.

2) Назовите типы пакетов, предаваемых по интерфейсу USB1.1: приведите структурк пакета и описание его полей.

3) Структура дескрипторов устройства, интерфейса, конфигурации, конечной точки и строки.

4) Структура дескриптора хаба и класс-специфицированные запросы Хаба.

5) Урофни логической структуры «Хост-Устройство».

 

Протокольный уровень USB1.1

 

Обмен данных происходит пакетами, которые образуют транзакции. Транзакция обычно состоит из трех пакетов: маркерного, данных, квитирования. Транзакция обеспечивает однократный обмен данными между хостом и конечной точкой устройства. В свою очередь транзакции включены в кадр(Frame). Начала кадра и номер кадра передаются специальным пакетом(SOF) каждую 1 ms.

 

Пакет (Packet)

 

Передача данных осуществляется пакетами (рисунок 1, 2). Начало пакета определяется по сигналу SOP (Start of Packet), это переход из состояния Idle в состояние K. Далее следует байт синхронизации SYNC (80hex), которой после NRZI кодирования имеет вид KJKJKJKK. Последних два бита SYNC- KK являются маркерам начала блока данных. Блок данных состоит из полей разной длины, суммарная длина блока данных должна быть кратна 8 битам. Байты передаются в порядке очереди начиная с младшего бита и заканчивая старшим битом.

 

 

Рисунок 1 – Пакет Low Speed USB1.1(1,5 Mb/s)

 

Рисунок 2 – Пакет Full Speed USB1.1(12 Mb/s)

 

Заканчивается пакет сигналом EOP (End of Packet) длительностью 3 бита, который является временным разделителем пакетов.

Типы пакетов: Token Packets(TP) - Маркерный пакет. Этот пакет всегда посылается хостом и является заголовком транзакции, т.е. определяет кому и как будет передаваться информация в следующем пакете (рисунок 3). В таблице 1 приведено описание полей маркерного пакета.

 

 

Рисунок 3 - Структура маркерного пакета

 

Таблица1 – Описание полей маркерного пакета

 

PID PID NAME Описание
0xE1(1110 0001) OUT передача данных от хоста к конечной точке
0x69(0110 1001) IN передача данных от конечной точки к хосту
0x2D(0010 1101) SETUP передача от хоста к конечной точке по каналу управления

ADDR число 1..127 -адрес устройства с которым будет работать хост в текущей транзакции. ENDP число 0..15 -адрес конечной точки с которой будет работать хост в текущей транзакцииCRC5 контрольная сумма полей ADDR,ENDP-вычисляется без учёта дополнительных синхробитов Stuffed Bit - вычисляется побитовой сверткой данных с полиномом 0x25(100101).

Start-of-Frame Packets(SOF) пакет, определяющий начала кадра. Этот пакет посылается хостом каждую миллисекунду(1000Гц) и обозначает начало нового кадра (рисунок 4). Этот пакет могут принимать все устройства сети, он без адресный. Это единственный пакет, имеющий синхронизацию с часами реального времени. В пакете присут


Поделиться с друзьями:

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.27 с.