首页 > 代码库 > 大话USB驱动之基础概念
大话USB驱动之基础概念
写在前面的话:这几天一直在学习USB驱动,中间遇到挫折困难在此不再详诉.....写着几篇文章算是对之前几天来所学知识的一个总结。本人深知你仅仅通过这几篇文章是不可能完全掌握USB驱动的,但只要能给大家带来一点思路,或者能对大家有所帮助,文章的目的也就达到了。
一.整体框架
-------------------------------------------------------------
USB设备驱动程序 // 知道数据含义
内核 -------------------------------------------------------
USB总线驱动程序 // 1. 识别, 2. 找到匹配的设备驱动, 3. 提供USB读写函数 (它不知道数据含义)
-------------------------------------------------------------
USB主机控制器
UHCI OHCI EHCI
硬件 ------------------------------------------------------
USB设备
二.硬件基础
USB的硬件十分简单,一共就四根线,一共电源一共地,还有两根数据线。这区区四根线看似简单,作用不可小看啊。
识别过程:正如上图看到的, PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低。USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;它一接入PC,电源通过两根电阻接地,然后分压,就会把PC USB口的D-或D+拉高,从硬件的角度通知PC有新设备接入。
三.软件概念
1.USB设备概观
有图可看出:
? 设备通常有一个或多个配置.
? 配置常常有一个或多个接口
? 接口常常有一个或多个设置.
? 接口有零或多个端点.
2.端点
端点是USB通信的最基本的形式,USB端点只能往一个方向传输数据。输出端点(主机向设备),输入端点(设备向主机)都是相对于主机来说的。
端点的四种类型:
控制端点:控制端点是用来控制对USB设备不同部分的访问,通常用于配制设备、获取设备信息、发送命令到设备,或者获取设备的状态报告。数据可靠,并且有时间保证。
中断端点:每当USB宿主要求设备传输数据是,中断端点就以一个固定的速率来传输少量数据。注意这里说的中断,并不是我们之前说的硬件上的中断。因为设备在没有主控制器要求的情况下是不会发送数据的,所以是USB宿主负责每一个USB设备是否有数据需要发送。这些端点是USB鼠标和键盘所使用的主要传输方式。
批量端点:批量端点传输大批量的数据。USB协议不保证这些传输始终可以在特定的时间内完成。U盘等设备多用次传输方式
等时端点:等时端点也可以传送大批量的数据,但是数据是否到达没有保证。USB话筒,USB视频都使用这类端点。
3.接口
USB接口只处理一种USB逻辑连接。举个例子:现在的USB摄像头基本都带麦克风功能。要实现它的驱动,则需要两个驱动,一个USB摄像头驱动,一个麦克风驱动。所以需要两个接口。因为一个USB接口代表了一种基本的功能。所以说,并不是一个硬件就只对应着一个驱动,是有一对多的情况的。
4.配置
一个 USB 设备可有多个配置并且可能在它们之间转换,以便改变设备的状态. 例如, 一些允许固件被下载到它们的设备包含多个配置来实现这个,一个配置只能在一个时间点上被使能。
参考:韦东山视频第二期
LDD3