usb驱动-1-usb结构,协议

来源:互联网 发布:济南知满天教育官网 编辑:程序博客网 时间:2024/05/09 10:24

usb 2.0  60Mbyte/s

usb 3.0   600Mbyte/s

usb 4根线最多挂载128个设备.

usb: hub , 广义上讲,usb hub也是一种设备.

 

1)usb设备逻辑结构

usb设备逻辑结构:设备,配置,接口,端点,4个层次.

设备有1个或多个配置,配置有1个或多个接口,接口有1个或者多个端点.

usb设备不同的配置使设备表现不同的功能组合,每一个接口需要一个usb驱动程序就

 

是一个功能,,代表一个基本的功能接口是端点的汇集.音频接口,视频接口均需要一

 

个驱动程序.

usb端点:是位于usb上的一个实实在在数据缓冲区.

 

设备的端点号:每一个usb设备有一个唯一的地址,这个地址是当设备链接时候,由主机

 

分配的.每一个设备有0号端点.他是用于控制的端点,一个usb可能还有其他端点比如

 

输入端点,输出端点等.

 

usb总线,高速公路

usb端点:公路的出入口.

 

 

 

2)usb描述符

USB Human Interface Device

Vendor ID    ,Device ID ,类似于pci中的厂商号,设备号..

一个有4种描述符,设备描述符 配置描述符,接口描述符,端点描述符.

一个设备描述符可以有多个配置描述符,配置描述符可以有多个接口描述符,接口描述

 

符可以有多个端点描述符.

 

设备描述符,它的长度为18个字节.格式见9.6 .bLength 描述符长度,固定值

 

0x12,bDeviceClass设备类型,idVendor 2个字节 厂商id, idProduct 2个字节 产

 

id.

配置描述符,它体现出来的是功能的组合.bNumInterfaces 1个字节 代表一

 

个配置有多少接口组成的.

接口描述符,它长度为8个字节,bInterfaceClass 接口类

 

.bInterfaceProtocol 接口所使用的协议, iInterface 如果接口里面记录了一串

 

字符串来描述厂商名称 那么这个就是指定哪一个字符串来描述这个信息的.

端点描述符,bEndpointAddress 地址,bmAttributes 属性.

 

 

描述符记录了设备的信息按照usb 的逻辑结构来划分的,记录了设备的制造商,设备

 

的有几种配置比如说第一种配置,从第一种配置下访问 它有几个接口,从接口访问

 

它的端点信息.

 

 

 

3)USB数据传输:

4中传输等时传输,中断传输,控制传输,批量传输,

4种端点,等时端点,中断端点,控制端点,批量端点.

 

所有的传输都是由usb主机发起的,设备不能主动传输数据主机每隔一个固定的时间

 

(大概是0.1),查询每一个设备是否需要发送数据.

 

控制传输:控制,获得设备状态.

中断传输:该方式传输的数据量很小.当主机查询到设备要发送数据时,中断

 

端点会以一个固定的速率传输数据.

等时传输:对时间要求很敏感,对数据的正确性要求不高的数据传输方式,

 

如麦克风.当数据传输错误时,不会理会.

批量传输:正好和等时传输相反.要求数据传输准确.

 

控制传输是任何一个usb设备都有的,要用来完成设备的初始化的工作都会有一个0

 

端点.等时和中断传输见的比较多.什么样的设备决定了什么样的传输方式.鼠标就是

 

中断传输

 

?数据传输有点类似以太网的数据包.

 

一次传输(transfer)由一个或者多个事务构成的.事务可以分成in事务,out

 

事务,setup事务.

 

事务(transaction)是由packet构成的.包可以分成令牌包(setup),数据包

 

(data),握手包(ACK)和特殊包.

 

(packet)是由域构成的.

 

 

4)USB设备枚举

定义:在正常工作前,让主机认得usb设备,从设备获取信息,知道是一个什么

 

类型的设备,,并且为该设备分配好资源.建立好主机和设备的数据传输机制.

过程:8个步骤,不一定都有.1:获取设备描述符.2:复位.3:设置地址.4:再次

 

获取设备描述符.5:获取配置描述符.6:获取接口,端点描述符.7:获取字符串描述

.8:选择设备配置.

 

 

关于ju

.1:获取设备描述符.

2:复位.

3:设置地址.

4:再次

 

获取设备描述符.

5:获取配置描述符.

6:获取接口,端点描述符.

7:获取字符串描述

 

.8:选择设备配置.

 

134号包就是发送一个setup事务,分为3个包,先是发送一个setup.然后发送一个数据内容,然后收到usb设备的响应包,,数据包内容就是包135. 08代表方向 主机发送的,06代表命令请求响应.要求设备发送设备描述符.这2个是配对使用的,

 

 

一次传输有5次事务,第一次为setup事务,然后3in事务,然后一次out事务.