USB设备描述符

/* USB Standard Device Descriptor */
const u8 Virtual_Com_Port_DeviceDescriptor[] =
  {
    0x12,   /* bLength */  //USB设备描述符的总长度固定为18个字节,因此为12H
    USB_DEVICE_DESCRIPTOR_TYPE,     /* bDescriptorType */  //USB设备描述符的类型值,固定为01H
    0x00,                               //USB遵循的规范版本号,USB2.0; 0xXXYZ,XX为主版本号,Y为次版本号,Z为子次版本号
    0x02,   /* bcdUSB = 2.00 */
    0x02,   /* bDeviceClass: CDC */       //USB所遵循的标准设备类。0表示设备的接口相互独立,分别属于不同的设备类;
                                       //1~FEH之间表示USB协议中定义的某个类。03H表示HID类,02H表示CDC类。
                                       //FFH表示供应商自定义的设备类
    0x00,   /* bDeviceSubClass */       //USB设备所属的标准设备子类。对于显示设备类(04H),包含3个子类,
                                       //子类代码01H表示CRT显示器,02H表示平面显示器,03H表示3D显示器。
                                       //bDeviceClass为0时,该值为0;该值为FFH时,表示供应商自定义的设备子类
    0x00,   /* bDeviceProtocol */       //采用的设备类协议。该值为FFH时表示设备类协议由供应商自定义
    0x40,   /* bMaxPacketSize0 */       //端点0所支持最大数据包长度(字节),低速为8,全速为8,16,32或64,高速为64
    0x83,                               //设备供应商id,使主机为其加载合适驱动
    0x04,   /* idVendor = 0x0483 */
    0x40,                               //产品id,用于区分不同的usb设备
    0x57,   /* idProduct = 0x7540 */
    0x00,                               //设备版本号,帮助主机加载合适驱动
    0x01,   /* bcdDevice = 1.00 */
    1,              /* Index of string descriptor describing manufacturer */  //若没有,可为0
    2,              /* Index of string descriptor describing product */          //若没有,可为0
    3,              /* Index of string descriptor describing the device‘s serial number */       //若没有,可为0
    0x01    /* bNumConfigurations */    //USB设备所支持的配置数
  };

USB设备描述符

时间: 2024-12-27 09:13:33

USB设备描述符的相关文章

USB描述符【转载】

USB描述符 USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链接通道.那么USB描述符信息到底是一个什么样的数据呢,USB协议中有详细描述. 通用的USB描述符信息包括设备描述符.配置描述符.接口描述符和端点描述符,具体不同的USB设备还包括其它类型的描述符,例如,USB鼠标.键盘还包括HID

usb协议分析-设备描述符配置包-描述符

/* usb协议分析仅供大家参考---设备描述符配置包,设备描述符, 地址设置, 配置描述符, 字符串描述符 */ /* -1- usb设备描述符配置包 */ typedef struct _USB_SETUP_PACKET { REQUEST_TYPE bmRequestType; BYTE bRequest; WORD_BYTE wValue; WORD_BYTE wIndex; WORD wLength; } USB_SETUP_PACKET; 1.bmRequestType 是包含有下面

USB 描述符

标准的USB设备有5种USB描述符:设备描述符,配置描述符,字符串描述符,接口描述符,端点描述符. 1 // Standard Device Descriptor 2 typedef struct 3 { 4 u8 bLength; 5 u8 bDescriptorType; 6 u16 bcdUSB; 7 u8 bDeviceClass; 8 u8 bDeviceSubClass; 9 u8 bDeviceProtocol; 10 u8 bMaxPacketSize0; 11 u16 idVe

USB描述符解析-->枚举.

枚举可以理解为主机按不定的顺序向USB设备讨要设备信息,好给它分配资源,若枚举不成功,就放弃分配资源,免得浪费资源.一般都是使用中断传输方式通信. 常用的描述符有以下几种:01H.设备描述符  02H.配置描述符  03H.字符串描述符  04H.接口描述符  05H.端点描述符 21H:HID描述符 22H:HID报告 一个设备只能有一个设备描述符,而一个设备描述符可以包含多个配置描述符(bNumConfigurations  ),一个配置描述符又可以包含多个接口描述符,一个接口使用了几个端点

USB学习笔记连载(十二):USB描述符

USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.HID描述符,这里主要讲解USB描述符. USB标准设备描述符包括:设备描述符,端点描述符,接口描述符,配置描述符,设备限定描述符,其他描述符.这些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!   1.设备描述符 一共18个字节,14个字段.在官方给的固件程序中的描述如下图

USB描述符概述

在USB总线接口协议中,规定了一些标准的USB描述符,如表所示. 对于USB设备来说,有些USB描述符是必需的,例如: 设备描述符 配置描述符 字符串描述符 接口描述符 端点描述符 其余一些描述符并非必需,只在特定USB设备中使用,例如:设备限定描述符.其他速率配置描述符用于高速USB设备:OTG设备描述符用于USB OTG外设:超高速端点伴侣描述符用于超高速USB设备. USB描述符其实就是一个数据集合,用来表征USB设备某一方面的功能.USB协议中严格规定了每一种描述符的数据格式.各个USB

遍历 USB devcie,读取设备描述符 device descriptor【转】

转自:http://blog.csdn.net/flyyyri/article/details/5480347 理论:    对于USB接口的设备,现在越来越多了.本篇我们就通过获取一个USB扫描仪设备中的序列号,来介绍如何获取usb设备的一些硬件信息.对于usb设备都是采用HCD0,HCD1,HCD2,HCD3等符号描述的.如下图: 因此,有了这个名字,我们就可以使用CreateFile来打开usb设备.然后使用DeviceIoControl函数与usb设备通讯了.HCD是host contr

电子工程师名片——UFI Command,USB盘符的显示

USB Mass Storage类规范概述        USB Mass storage Device协议即海量存储设备协议适用于硬盘,U盘等大容量存储设备.协议使用的接口端点有BulkIn.BulkOut和Interrupt端点.该设备类又包含6个独立的子类以及3种传输协议.        Bulk- Only 传输规范仅仅使用Bulk 端点传送数据/命令/状态,CBI 传输规范则使用Control/Bulk/Interrupt 三种类型的端点进行数据/命令/状态传送.       我们手中

根据scsi_id决定设备描述符

缺点:对于磁盘矩阵阵列,所有的设备的scsi_id都必须部署一遍,旷日费事. 虚拟机中测试: 摘自:http://blog.itpub.net/666724/viewspace-1058618/ VMware 中使用 scsi_id 查询磁盘UUID 在VMware的Linux系统中查询磁盘的udev功能时,发现scsi_id命令无法返回设备的SCSI ID. 方法如下: [@[email protected]]1.在虚拟机关闭以后,进入虚拟机的目录 2.用文本编辑器修改vmx文件,在vmx文件