USB模块学习——USB设备

来源:互联网 发布:日本手机直播软件 编辑:程序博客网 时间:2024/05/19 08:40

USB设备

USB设备包含3部分内容:配置,接口和端点。它们之间的关系如下:

1)设备可以有一个或多个配置

2)配置可以有一个或多个接口

3)接口可以有一个或多个设置

4)接口可以有零个或多个端点

1,端点

一个USB端点的种类有4种,主要是用来描述数据是如何传送的。它们分别是:

1)CONTROL(控制):通常用来配置端点、获取设备信息、发送命令到设备或获取关于设备的状态信息。

2)INTERRUPT(中断):主要用在小数据传送方面。应用:键盘和鼠标。

3)BULK(块):主要用在大数据传送方面。应用:U盘。

4)ISOCHRONOUS(同步):主要用在实时数据传送方面,数据可能会丢失一些。应用:音频和视频。

1.1 端点数据结构

端点数据结构用struct usb_host_endpoint来表示,它包含了struct usb_endpoint_descriptor。usb_endpoint_descriptor主要用于描述真实端点信息。驱动人员需要关心的成员有bEndpointAddress(特定端点USB地址,端点方向)、bmAttributes(端点类型,同步、块、中断端点类型)、wMaxPacketSize(端点一次可处理的最大数据大小),bInterval(中断时间间隔)。

2,接口

USB端点被绑定在接口中。一个USB接口只处理一类USB逻辑连接。可以用多个接口来做预备设置。

2.1 接口数据结构

接口数据结构用struct usb_interface来表示。一个接口对应一个USB驱动。该结构是内核传递给USB驱动,并由USB驱动负责控制。驱动人员需要知道的成员有

struct usb_host_interface *altsetting((多套)端点预备设置)、unsigned num_altsetting(预备设置的个数)、struct usb_host_interface *cur_altsetting(当前的设置)、int minor(次编号)。

3,配置

USB接口被绑定到USB配置上。一个USB设置可以有多个配置以便改变设备的状态(不建议,Linux处理多配置USB不是太好)。

3.1配置数据结构

配置数据结构用struct usb_host_config来表示。USB设备数据结构用struct usb_device来表示。USB设备驱动通常不需要读写这些数据结构。

4 sys下SUB设备表示

/sys/devices/.../usb2/2-1表示的是USB设备;/sys/devices/.../usb2/2-1/2-1:1.0表示的是USB接口;下面是各个部分的意思:

usb2中的2表示的第2个根集线器。根集线器就是USB控制器(?)。2-1中的1表示的是设备插入的端口号1。2-1:1.0表示的是根集线器号-端口号:配置号.接口号。从这也可以很好的看出一个驱动对应一个接口。

0 0
原创粉丝点击