USB驱动程序设计

USB 系统架构(基础知识)

系统结构:每个结构都有一个Host主控制器,下面可接多级Hub,最多可接127个设备。

常见USB主控制器规格:

OHCI:非PC系统的USB芯片

UHCI:大多IntelVia主板控制器,USB1.1规格

EHCI:兼容OHCIEHCIUSB2.0规格

USB设备逻辑结构包含4个层次:设备、配置、接口、端点,设备通常有1个或多个配置,配置有1个或多个接口,接口有1个或多个端点。

不同的配置使设备表现出不同的功能组合,配置由多个接口组成,1个接口代表1个基本功能,一个功能复杂的USB设备可以具有多个接口

例:

一个USB播放器带有音频、视屏功能、还有旋钮和按钮功能:

配置1:音频(接口)+旋钮(接口)

配置2:音频(接口)+视频(接口)+按钮(接口)

配置3:视频(接口)+旋钮(接口)

有音频、视屏接口、还有旋钮和按钮接口,均需要一个驱动程序。

 

USB设备唯一可寻址的部分是端点,类似字符设备、块设备等其他设备的寄存器,位于USB设备或主机上的数据缓冲区,用来存放和发送USB的各种数据,每个USB设备在USB总线中有自己唯一地址。每一个USB设备中一定有一个0号端点,主要对USB设备提供控制的功能,每一个USB设备都有一个0号端点。

例如
 USB总线类似高速公路,总线上收发的数据类似于汽车,端点相当于高速公路收费站入口和出口,一个车从一个出口流向一个入口,数据在USB端点之间传送。

 

 

   USB描述符

在每个USB设备都会有一些配置信息,说明设备的生产商、类型等,这些信息称之为USB描述符,标准的USB描述符有5种:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。 1个设备只有一个设备描述符,一个设备描述符可以包含多个配置描述符,依次类推,同设备层次相同。



上图为标准USB设备描述符,从中可知Device Class设备类型,Vender IDproduct ID等, 长度为8个字节。

                                           配置描述符



接口描述符

描述符记录了设备的信息,按照上面逻辑划分,设备、配置、接口、端点,4个层次记录设备信息,从配置里访问接口描述符,可知配置有哪几个接口功能共同构成。 每个端口描述符记录端点信息。

 

分析USB数据包,一次传输(Transfer)由一个或多个事务(Transaction)构成,事务分为In事务,Out事务,Setup事务。



传输(Transfer)有四种类型:中断传输、批量传输、同步传输、控制传输。事务(Transaction)由包(Packet)构成。包分三种类型令牌包(setup),数据包(data),握手包(ACK)。


包由一个或多个域组成。SyncADDRENOP

 

 

 

               USB设备枚举  

通过枚举,主机认识USB设备并为设备分配好资源。在数据传输之前要把准备工作完成,准备的过程叫做枚举。

枚举共有八个步骤:

1.获取设备描述符  2.复位 3.设置地址 4.再次获取设备符 5.获取配置描述符 6.获取接口、端点描述符 7.获取字符串描述符 8.选择设备配置


Linux USB系统架构


Host开始,最底端为USB主控制器,以上为USB系统软件(包含驱动程序),之上为客户软件,以USB摄像头为例,摄像头驱动程序为系统软件,视频采集应用程序为客户软件。

Device端,依次Bus Interface(硬件),USB 逻辑设备,功能层,每层都有箭头交互, 只有最底层才是真正数据流,其余只是逻辑数据流。

 


Linux USB架构



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值