USB 鼠标驱动源码分析

本文深入剖析了USB驱动的工作原理,涵盖了从分配地址到读写函数的过程。详细介绍了设备描述符、配置描述符、接口描述符和端点描述符的结构及关键字段,如bDeviceClass、bMaxPacketSize0和bEndpointAddress等。通过理解这些描述符,可以更好地理解USB设备如何与系统交互,并展示了如何通过USB_driver结构体的.id_table匹配设备,实现驱动的探测和连接。
摘要由CSDN通过智能技术生成

kernel:kernel-3.4.39

UHCI: intel, 低速(1.5Mbps)/全速(12Mbps)
OHCI: microsoft 低速/全速
EHCI: 高速(480Mbps)

 

 USB总线驱动程序的作用:

1、分配地址给USB设备,同时将分配的地址发给USB设备(最开始通信地址是端口0)

2、发出命令获取描述符

3、查找和安装对应的设备驱动程序

4、提供USB读写函数

 

一个usb硬件有一个“设备描述符”;一个设备描述符下会有一个或多个“配置”;一个配置里可能有多个“接口——逻辑设备”;一个“接口”里面有多个“端点描述符”

“端点描述符”里面描述了一次性最多可以传输多少的数据;端口编号、方向、传输类型等信息。

 

USB主要有4种描述符:设备描述符、配置描述符、接口描述符、端点描述符(这是必须存在的描述符)

 

struct usb_device_descriptor {

         __u8  bLength;

         __u8  bDescriptorType;

 

         __le16 bcdUSB;

         __u8  bDeviceClass;

         __u8  bDeviceSubClass;

         __u8  bDeviceProtocol;

         __u8  bMaxPacketSize0;

         __le16 idVendor;

         __le16 idProduct;

         __le16 bcdDevice;

         __u8  iManufacturer;

         __u8  iProduct;

         __u8  iSerialNumber;

         __u8  bNumConfigurations;

} __attribute__ ((packed));

 

bLength:描述符长度

bDescriptorTyp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值