Ссылки: https://blog.csdn.net/zqixiao_09/article/details/50984074
А, USB-устройство состоит из трех функциональных модулей, USB-интерфейс шины USB, устройства и функции логического блока:
- Интерфейс USB: USB устройство последовательного интерфейса двигателя SIE
- USB логическое устройство: системное программное обеспечение USB рассматривается как совокупность конечных точек
- Функциональные блоки: клиентское программное обеспечение рассматривается как набор интерфейсов
Во- вторых, с точки зрения архитектуры устройство, USB - устройство рядом конфигурации, интерфейса и конечной точки , а именно устройство USB соответствует дескриптор устройства, который может содержать одну или более конфигураций, каждая конфигурация может содержать один или несколько интерфейсов каждый интерфейс может содержать некоторое количество конечных точек. И где конфигурация интерфейса представляет собой USB абстрактных функции устройства, и текущая передача данных завершена к конечной точке необходимо указать интерфейс для конфигурирования и использовать его в USB перечислении ;
Три, USB-устройство будет описано с помощью различных дескрипторов, архитектура которого устройство, таких как дескриптор устройства, дескриптор конфигурации, дескриптор интерфейса, конца дескриптор, строк дескриптор, они, как правило, хранящихся в устройстве USB в неподвижной программе;
Дескриптор устройства: представляет собой устройство USB, состоящее из одного или более конфигурации, для объяснения общего устройства и информации , указывающая номер , содержащийся в конфигурации, устройство USB может иметь дескриптор устройства ;
. 1 STRUCT в usb_device_descriptor 2 { 3. _ _U8 bLength; // длина дескриптора 4. _ _U8 bDescriptorType; // номер типа дескриптора 5. 6. _ _Le16 bcdUSB; // версия USB - 7. _ _U8 bDeviceClass; // код устройства класса USB выделено . 8 _ _u8 bDeviceSubClass; // подклассу код USB выделено 9. _ _u8 bDeviceProtocol; // код протокола USB выделено 10 _ _u8 bMaxPacketSize0; // Endpoint0 максимальный размер пакета 11. _ _le16 idVendor; // ИД изготовителя 12 _Le16 idProduct _; // Число 13 _ _le16 bcdDevice; // серийный номер устройства 14 _ _u8 iManufacturer; // Описание Индекс поставщика Строка 15 _ _u8 iProduct ,; // строка описания индекса продукта 16 _ _u8 iSerialNumber; / / индексации устройство , описанное номер строки серийный 17. _ _u8 bNumConfigurations; // количество возможных конфигураций 18 является } _attribute_ _ _ _ _ ((упакованы));
Дескриптор 2 конфигурации: режим высокой мощности устройства USB и в режиме малой мощности может соответствовать конфигурациям, что USB-устройство для пояснения характеристик каждой конфигурации, таких как число, содержащегося в интерфейсе;
. 1 структура usb_config_descriptor 2 { 3. _ _U8 bLength; // длина дескриптора 4. _ _U8 bDescriptorType; // дескриптор типа номер 5. 6. _ _Le16 wTotalLength; // размер конфигурации всех возвращаемых данных 7. _ _U8 bNumInterfaces; // Настройка количество интерфейсов , поддерживаемых 8. _ _u8 bConfigurationValue; // Set_Configuration требуемое значение параметра команды . 9 _ _u8 IConfiguration; // строка , описывающая конфигурацию значения индекса 10 _ _u8 bmAttributes; // выбор режима питания . 11 _ _u8 bMaxPower; //Максимальный ток устройства извлекается из шины 12, } _attribute_ _ _ _ _ ((упакованы));
3 интерфейса Дескрипторы: для массового интерфейса хранения, который используется CD-ROM, когда передача файлов, аудио интерфейс, который используется, когда пользователь играет компакт-диск. Интерфейс представляет собой набор конечных точек, может содержать один или несколько альтернативных настроек, пользователь может быть в изменении состояния конфигурации количества и характеристик интерфейса USB содержит текущее время, это характерно для каждого пользовательского интерфейса Описание USB устройства, например, принадлежит устройство класс и его подклассы;
. 1 структура usb_interface_descriptor 2 { 3. _ _U8 bLength; // длина дескриптора . 4 _ _u8 bDescriptorType; // дескриптор типа 5. 6. _ _U8 bInterfaceNumber; // номер интерфейса . 7 _ _u8 bAlternateSetting; // запасной интерфейс дескриптора No. 8 _u8 bNumEndpoints _; // конечные точки интерфейса не включено 0 9. _ _u8 bInterfaceClass; // Тип интерфейса 10 _ _u8 bInterfaceSubClass; // интерфейсы подтип 11. _ _u8 bInterfaceProtocol; //Круги протокол интерфейса 12 _ _u8 IInterface; // строка описания значение индекса интерфейса 13 является } _attribute_ _ _ _ _ ((упакованы));
4 конечная точка дескриптора; конечные точки являются реальной физической единицей в устройстве USB, то есть, передача данных USB выполняется между устройством USB и каждым конечной точкой хостом. Каждая конечная точка имеет единственное число конечных точек, каждая конечная точка направления передачи данных определяется как правило, поддерживается, то есть вход в и выход OUT, использование адреса устройства, и номер конечной точки может указывать направление передачи конечной точки. 0 специальная конечная точка, то есть ввод данных в систему и выход из двух физических блоков данных, а также управления может поддерживать только передачу всех USB-устройств должна содержать количество конечной точки 0, используют в качестве контроля по умолчанию трубы с, система USB-программное обеспечение является использование конфигурация трубопроводов и USB-логическое устройство в связи; 0 конечная точка не должна быть использована только в более поздней конфигурации. Конечные точки USB-устройство может содержать множество не равно нулю, для низкоскоростных устройств содержат до двух дополнительных конечных точек, для полной скорости / высокоскоростной устройство содержит до 15 дополнительных конечных точек;
. 1 структура usb_endpoint_descriptor 2 { . 3 _ _u8 bLength; // длина дескриптора . 4 _ _u8 bDescriptorType; // дескриптор типа . 5 _ _u8 bEndpointAddress; // Конечная точка Адрес: 0 ~ 3 номер конечной точки, бит 7 является направление (0 -OUT, то In- 1). 6. _ _u8 bmAttributes; // атрибут конечной точки: бит [0: 1] указывает значение управления 00, 01 обозначает синхронизацию, выраженные в виде величин 02, 03 , как прерывание . 7 _ _le16 wMaxPacketSize; / // / конечная точка в соответствии с максимальным размером пакета или передавать 8. _ _u8 bInterval; // временной интервал данные опроса , передающие конечную точку 9 // для групповой передачи конечной точки и конечной точкой передачи управления, это поле игнорируются 10 // для конечная точка изохронных передач, это поле должно быть 1 . 11 _ _U8 bRefresh; 12 _ _u8 bSynchAddress; 13 } _ _ _attribute_ ((упакованы));
5 Строки Descriptor: описание какой-либо конкретной информации, например, название производителя, серийный номер, его содержание было дано в виде Unicode, который может быть прочитан с помощью клиентского программного обеспечения, дескриптор строки не является обязательным;
. 1 структура usb_string_descriptor 2 { 3. _ _U8 bLength; // длина дескриптора 4. _ _U8 bDescriptorType; // дескриптор типа 5. 6. _ _Le16 WDATA [ 1. ]; . 7 } _ _ _ _ _attribute_ ((упакованы));
Внутривенно
В-пятых,