hid bulk interface驱动_USB 设备驱动[转]

本文深入介绍了USB设备驱动,包括USB描述符(设备、配置、接口、端点描述符)、传输方式(控制、中断、批量、等时)以及URB(USB请求块)的工作原理。同时,提到了管道的概念,它是连接USB端点与主控制器的关键。内容源自Linux USB驱动的学习总结。
摘要由CSDN通过智能技术生成

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

通过命令lsusb -v 列出系统中所有的USB设备的各个描述符信息:

设备描述符:

219f599aca8a56d4065a43d607bf4f0b.png
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
struct usb_config_descriptor {         ///USB 配置描述符

         __u8  bLength;

         __u8  bDescriptorType;

 

         __le16 wTotalLength;///总长度

         __u8  bNumInterfaces;///接口数目(每个接口代表一种功能)

         __u8  bConfigurationValue;///

         __u8  iConfiguration;

         __u8  bmAttributes;

         __u8  bMaxPower;

} __attribute__ ((packed));

接口描述符:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值