USB 设备驱动:
一、USB 描述符:(存在于USB 的E2PROM里面)
1、 设备描述符:struct usb_device_descriptor
2、 配置描述符:struct usb_config_descriptor
3、 接口描述符:struct usb_interface_descriptor
4、 端点描述符:struct usb_endpoint_descriptor
通过命令lsusb 列出系统中所有的USB设备:
![a100ea7ea5a4dbeb2a14e830103aed6c.png](https://i-blog.csdnimg.cn/blog_migrate/41a1ce8d91016781cca89a4e618145d4.jpeg)
通过命令lsusb -v 列出系统中所有的USB设备的各个描述符信息:
设备描述符:
![219f599aca8a56d4065a43d607bf4f0b.png](https://i-blog.csdnimg.cn/blog_migrate/9fdcca0e9fe277020a6d0c10c87b20c7.jpeg)
struct usb_device_descriptor {
__u8 bLength; ///长度
__u8 bDescriptorType; ///描述符类型
__le16 bcdUSB;
__u8 bDeviceClass;///设备类型
__u8 bDeviceSubClass;///设备子类型
__u8 bDeviceProtocol;///协议
__u8 bMaxPacketSize0;///最大传输大小
__le16 idVendor;///厂商 ID
__le16 idProduct;///设备 ID
__le16 bcdDevice;///
__u8 iManufacturer;
__u8 iProduct;
__u8 iSerialNumber;///序列号
__u8 bNumConfigurations;///包含的配置数目(每个USB设备会对应多个配置)
} __attribute__ ((packed));
配置描述符:
![b31d1c4305913c72fbc6e834ce8f1ca9.png](https://i-blog.csdnimg.cn/blog_migrate/f44f60e494d752e43c0281ba85a5e30f.png)
struct usb_config_descriptor { ///USB 配置描述符
__u8 bLength;
__u8 bDescriptorType;
__le16 wTotalLength;///总长度
__u8 bNumInterfaces;///接口数目(每个接口代表一种功能)
__u8 bConfigurationValue;///
__u8 iConfiguration;
__u8 bmAttributes;
__u8 bMaxPower;
} __attribute__ ((packed));
接口描述符: