USB驱动之USB简介

在学习USB驱动之前,先来了解下USB相关的一些知识点,比如:USB接口类型 USB主控制器 USB协议(其中最重要的是USB协议),了解了USB协议才能去很好的阅读Linux内核源码中USB驱动中的实现,好了,废话不多说。咱们直接进入正题。

一、USB接口类型

USB接口有A口、B口和mini口,分别如下图所示:

二、USB构成与拓扑图

咱们在使用U盘、USB鼠标的时候,都是很简单直接插入电脑中的USB接口,那么可以想象到的是在整个USB构成中,USB设备是其中不可缺少的。而能够去识别并且让USB设备通信的器件是USB主机控制器。但是很多的时候咱们会发现USB接口不够用,那么小伙伴们就会去淘个USB hub来让更多的USB设备接入。

简单的总结下上面所讲:也就是USB构成由下面组成

1、USB主机控制器

2、USB HUB

3、USB 设备

注意:每一个USB主机控制器都连接着USB根集线器,USB根集线器可以插入USB设备或者USB HUB。

下面为USB的拓扑图:

、驱动USB设备

从上面的构成可以看出来,如果想要去驱动一个U盘,那么就需要用USB主机控制器去控制USB设备(可以把根集线器和HUB只是看成用来通信的线)。USB有其相对应的USB协议规范。USB主机控制器使用USB1.0、USB2.0、USB3.0去控制USB设备(U盘)。在Linux系统中对于USB主机控制器就有其对应的三种协议分别为:

UHCI : Intel用在自家芯片上的USB1.1主机控制器协议(用于PC方面的USB主机控制器)

OHCI : 微软等公司使用的USB1.1主机控制器协议(用于非PC方面的主机控制器,比如:嵌入式中的arm等)

EHCI : USB2.0的主机控制器协议,兼容USB1.1

XHCI : USB3.0的主机控制器协议,兼容以前的版本

四、USB设备插入PC机过程

想必大家都试过把U盘或者手机插入到PC机中的时候,PC会提示正在安装驱动......

好的,那么可以想象一下:

问:为什么U盘插入就会帮咱们把U盘的驱动安装,而不是安装了USB鼠标的驱动呢?

答:就像RTC时钟芯片,我们可以去读取寄存器获取时间。而U盘没有寄存器说法,只有USB设备描述符。通过获取USB设备描述符中的信息PC机就能知道安装时什么类型的驱动程序了。

那么USB设备描述符中都有什么,请参照http://blog.csdn.net/lidroid/article/details/46885103这篇文章。

阅读完上面那篇文章大家想必就知道,USB设备中都有下面的描述符:

USB设备描述符  

配置描述符

接口描述符

端点描述符

简单的说下上面各种描述符的作用:

USB设备描述符里面决定了该设备有多少种配置,每种配置描述符中对应了多少个接口,接口描述符中对于多个端点。

咱们先来看下接口描述符:这里的接口是逻辑上的接口,比如买回来了一个USB摄像头,基本上都有两个接口,一个是摄像头,一个是麦。那么这个USB设备就有两个接口。

而配置描述符是指这个USB设备有什么功能:还是USB摄像头为例子,可以配置下面:

功能1:摄像头

功能2:麦

功能3:摄像头+麦

最后是端点描述符:在描述符中有端点,主要是用来传输数据的。

五、USB主机控制器和USB设备数据传输

USB主机控制器和USB设备数据传输是靠端点来传输的,端点可以通过端点描述符去获取。既然是用来传输数据的,那么就有输入和输出数据,咱们可以将其理解成串口的tx或者rx缓冲区。端点是有方向的,而且是单向的(除了端点0是双向)。

对于众多的USB设备,划分了4种USB数据传输的类型:

控制传输:USB主机控制器根据USB协议或者USB设备硬件发送数据

中断传输: 以USB鼠标为例子,中断传输的特点是,数据稳定、数据实时(总不能再玩cs的时候,USB鼠标点击开枪的时候,子弹没出去,被对方爆头了吧)

实时传输:以USB摄像头为例子,实时传输的特点是,数据可以不稳定,数据实时(在和人视频的时候,总不能数据出错,就让其不断重发达到稳定,那样对面走了都不知道)

批量传输:以U盘为例子,批量传输的特点是,数据稳定,数据不实时(在把文件复制到U盘时候,如果没有安全退出,可能会遇到文件只复制一部分)


六、其他和USB相关的知识

在USB主机控制器和USB设备之间交流信息,一切以USB主机控制器为主导地位,也就是只能USB主机控制器去访问USB设备,而USB设备只能等待USB主机控制器访问。

上面讲到USB设备和USB主机控制器是通过端点来传输的,实际上在USB主机控制到USB设备端点之间有一个通道,我们叫管道。如下图:

对于USB的简介,就写到这里。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值