USB技术及其驱动程序开发 学士论文Word文档格式.docx
- 文档编号:19673967
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:39
- 大小:72.08KB
USB技术及其驱动程序开发 学士论文Word文档格式.docx
《USB技术及其驱动程序开发 学士论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《USB技术及其驱动程序开发 学士论文Word文档格式.docx(39页珍藏版)》请在冰豆网上搜索。
Usb(UniversalSerialBus通用串行总线)是目前各个厂家投资最多的方向之一,从通用的鼠标键盘,到即插即用的Usb硬盘,各种读写卡,带Usb插口的相机等等相继推出,它有着其他总线不可比拟的优势,是今后pc外设的主流产品。
1.1USB开发的历史背景
随着电脑应用的拓展,pc机的外设越来越多,机箱后的插口也形形色色:
并行口,串行口,键盘口,鼠标口,游戏手柄接口,音频输入输出口,视频输出口等等等等。
而按常规,用户为pc增加一个新的外设却有一套复杂的操作,至少需要作以下的工作:
首先打开音箱,安装新外设的接口插卡;
其次,为了避免资源占用冲突,用户必须设置跳线为新的外设插卡选择合适的IRQ,DMA和I/O口地址,然后安装外设的驱动程序。
上述工作的问题是:
pc有限的I/O插槽无法满足日益增加的外设需要;
不具备专业知识的普通用户难于选择合适的资源和完成复杂的安装工作。
因此,简化外设补充方法,使之方便易行便成为各个pc厂家面临的重大研究课题。
而且目前各种总线有着这样那样不足,有的是占用内存过多,有的是速度不够快,因此,在1996年召开的面向pc机硬件技术工作者会议上,Compaq,Intel和Microsoft三家厂商提出了设备插架(DeviceBay)概念,Usb就是设备插架的一种规范。
用户只需花费很少的时间对Usb设备进行安装和配置,就可以使用;
另外,它还提供即插即用功能,用户可以在不断电的情况下直接把设备插在Usb插口上,从而使连接到pc机上外设的连接和配置变得很容易。
现在USB外设得到了更新更快的发展。
存储器方面,以前的4兆,8兆的OnlyDisk(优盘),还有USB接口的读写卡,现在的10G20G的USB移动式硬盘,而且可以根据需要自己给生产厂家说明生产要求,需要多大的硬盘就生产出多大的硬盘;
速度方面,由于USB2.0规范的出现,数据传输越来越快,以前的电脑眼实时传输数据,还会出现一帧一帧的跳动,现在的数码相机,网上聊天摄像机等等,真正做到了实时传输;
在办公用品方面,扫描仪,打印机等都出现了USB接口的产品,使得人们的工作和生活方便了许多。
1.2目前通用的各种总线和接口的大体介绍
PCI总线
Pci总线是Intel公司为Pentium处理器设计的一种新型标准总线,这种总线技术允许快速的内存,磁盘和视频访问。
Pci总线结构的高传输速度限制了pci接口的数量,一般只能有两到三个(通常用于图形和硬盘控制器)。
如果数据进行的是64位传输,系统时钟速度为33MHz,那么最大传输速度为264Mb/s,比较起Usb2.0的最大传输速度为480Mb/s来说,还是差了很多。
一般pc厂家为了适应高速据传输速度和缩小接口卡的尺寸,Pci插槽与pc,isa和Eisa不再兼容。
Pci总线的最大传输速度为264Mb/s,该速度只能在基于Pentium处理器的系统中使用64位软件才能达到。
在一个基于80486处理器的系统中,最大数据传输速度只有132Mb/s。
SCSI总线接口
Scsi是一种智能型的总线子系统,可以支持多个外设同时协同操作,每个设备都有一个优先级。
单个总线系统最多可以支持7个设备。
既可支持高质量的接头和电缆,也支持低质量的接头和电缆。
而且在快速传输和增强型外设的支持方面有很大的潜力。
目前各种scsi总线中,最好的Ultra-Scsi总线支持32位数据总线,最大数据传输率为40Mb/s,可接到的最多设备数为15个。
IDE接口(AT总线)
Ide接口一般用于磁盘和光盘接口,它的特点是磁盘控制器做在驱动器里面,通过一个电缆直接与主板连接。
这根电缆允许多个驱动器连接到系统,而不必担心总线和控制器冲突等问题。
通常Ide接口还包含至少32Kb的磁盘缓存。
现在典型的pc机主板上有两个Ide接口,每个接口可以连接两个硬盘或者一个硬盘和一个光驱,即最多可以接四个设备,数据传输率最大可以达到16.6Mb/s。
1394接口
1394接口有着很多和Usb相类似的特点,但是目前由于1394外设过于昂贵,只能用于公司或者高端用户,所以还没有成为广大pc厂家所支持并流行起来的接口。
1.3USB总线的特点及开发意义
USB作为计算机结构的一种新的扩展,主要致力于计算机-电话一体化和应用类消费产品。
它的数据传输速率比串、并口都要高,USB总线具有时分复用的特点,多个不同速度的USB外设可以通过集线器同时连接到同一台计算机的同一个USB口上,在USB总线带宽允许的情况下,多个外设可以同时工作而不相互影响。
USB传输速率适用于计算机的中低速外设,USB高速模式下支持实时的视频、音频和压缩的视频数据传输。
现在生产的pc都配备了Usb接口,Microsoft的Win98,NT,Wind2000,WindowsXP以及MacOS,Linux,FreeBSD等流行的操作系统都增加了对Usb的支持。
Usb有如下的特点和优点:
(1)速度快。
Usb1.1标准有高速和低速两种工作方式,主模式为高速模式,速率为12Mbps/s。
Usb2.0把速度提高到480Mbps/s,可以在上面开发功能更多的电子产品,并且,在Usb2.0上,多个高速外设可以同时运行。
(2)设备配置和安装容易。
如上所述,所有Usb设备支持即插即用,系统对其进行自动配置,彻底抛弃了过去的跳线和拨码开关配置。
(3)易于扩展。
通过使用Hub,理论上可最多接127个外设。
标准的Usb电缆长度为3m(低速为5m)。
通过Hub或者中继器可使外设距离达到30m。
可以使用多种连接方式进行扩展,图1-1是一个典型的外设配置方案。
主机
设备
设备
根HUB
复合设备
HUB
HUB
图1-1
(4)能够采用总线供电。
Usb总线能提供最大电压5V,最大电流500mA。
这样就另外为某些低电压电流的Usb外设提供额外电源。
(5)使用灵活。
Usb共有四种传输模式,控制传输,同步传输,中断传输和批量传输(这些内容的细节在第二章有详细的介绍),以适应不同的需要。
基于以上的这些优于其他总线的特点,开发Usb是势在必行的方向,也是本论文所要研究的意义。
但是,随之问题也就来了,尽管操作系统为Usb设备提供了用户需要的驱动程序,在一般情况下,设备一插到pc上就可以使用了,这是最好不过的事情。
但是,事实上并不是如此,现在已经有上千种不同的设备,而且每天还有许多不同的设备在问世,操作系统不可能为所有的设备提供全部的驱动程序;
而且,即使提供了通用的驱动程序,能够驱动Usb设备进行工作,那也可能是针对某一类设备提供的通用驱动程序,许多个别设备的优点在这种通用的驱动程序驱动下,不能发挥出来;
另外,作为我们消费者而言,总不能花了相对多的钱来用一个用很少的钱买的设备就能实现的功能,这对设备和人来说,都是一种浪费。
在原有驱动程序的基础上,自己开发出设备新的功能,或者自己干脆从头做起,都是一种不错的选择。
本论文完成的关于Usb键盘的驱动程序开发,就是基于这种目的而设计的。
第二章USB技术规范
设计USB的目标就是使不同厂家所生产的设备可以在一个开放的体系下得到广泛的使用。
USB2.0规范改进了便携商务或家用电脑的现有体系结构,进而为系统生产商和外设开发商提供了足够的空间,以用来创造多功能的产品和开发广阔的市场,而且不必担心失去旧的接口,失去兼容性。
下面从五个方面简要介绍此规范。
2.1USB的电器特性
USB的电气特性主要是描述信号的发送及电压分布情况。
下面我们将分别对其进行详细介绍。
1、信号的发送
USB通常使用一种差分的输出驱动器来控制数据信号在USB电缆上的发送,一个USB设备端的连接器是由D+、D-及Vbus,GND和其它数据线构成的简短连续电路,并要求连接器上有电缆屏蔽,以免设备在使用过程中被损坏。
它有两种工作状态,即低态和高态。
在低态时,驱动器的静态输出端的工作电压Vo变动范围为0~0.3V,且接有一个15kΩ的接地负载。
处于差分的高态和低态之间的输出电压变动应尽量保持平衡,以能很好地减小信号的扭曲变形。
下图是Usb电缆的示意图:
图2-1
在任何驱动状态下,USB设备必须能接收如图2-2所示的波形。
这些波形从一个输出阻抗为3PΩ的恒流电压源直接进入每一个USB数据口。
高速USB设备的连接电缆是阻抗为90Ω±
15%,最大单路时延为26ns的屏蔽双绞线电缆,其到达的最大速率为480Mb/s,并且每个驱动器的阻抗必须在28Ω~44Ω之间。
低速USB设备在插口端必须要有一个带有串行口连接器的可控制电缆,其速率为12Mb/s。
当电缆与设备相连时,在D+/D-线上必须要有一个200~450PF的单终端电容器。
低速电缆的传播时延必须小于18ns,从而保证信号在其上升沿或
图2-2USB信号发送的最大输出波形
者下降沿的第一个中点产生。
Usb信号的发送有其发送的标准,具体如表2-1所示,在该表中,J和K这两个数据态是两个逻辑电平,在系统中,通常被用来进行交换差分数据。
差分数据信号的发送并不关心信号经过的地方电平情况,它只要求桥电压在1.3~2.0V之间。
另外,在接收端,空闲态和工作态在逻辑上分别与J态和K态等价。
一般而言,数据,空闲信号及唤醒信号的发送标准均由端口的设备类型所决定。
如果连结的是高速设备,则USB使用所规定的高速率来发送信号并且有很快的上升沿和下降沿时间,甚至还可用低速率来发送数据,而对于表2-1中所示的低速信号发送标准仅用在低速设备与其所连接的端口之间(上升沿和下降沿时间较长)。
USB设备是一个智能型的设备,当它发现主机或集线器的下形端口上没有设备连接时,端口上自带的Rpu电阻将使D+和D-上的电压低于主机或集线器端口的单终端电压,此时该端口不是由集线器控制的,这将在下形端口产生一个SE0态。
如果主机或集线器不在控制数据线并且下形端口的SE0态的持续时间超过2.5ns,则此时USB设备将中断信号的发送,此时表示pc将认定没有设备连接到端口上。
如果集线器发现其中一根数据线上的电压大于它的临界值的持续时间超过2.5us,则表示pc知道端口上连接了一个设备,便开始信号的发送。
表2-1信号发送的标准
总线状态
信号电平
开始端的源连接器
(一位时端)
终端的目标连接器
需要条件
接受条件
差分的“1”
D+>
Voh(min)
D-<
Vol(max)
(D+)-(D-)>
200mv
(D+)>
Vih(min)
差分的“0”
D->
Voh(min)
D+<
(D+)-(D+)>
(D-)-(D+)>
单终端“0”(SE0)
D+和D-<
Vil(max)
数据J态:
高速
低速
数据K态:
差分的“0
空闲状态:
N.A.
Vihz(min)
唤醒状态
数据K状态
包开始(SOP)
数据线从空闲态转到K态
包结束(EOP)
SE0近似的为2位时
其后仅接着1位时的J
SE0≥1位时其后仅接着一位时的J态
SE0≥1位时其后仅接着J态
SE0近似地为2位时
断开(在下行端口处)
SE0持续时间大于等于2.5微秒
连接(在上行端口处)
空闲态持续时间大于等于2毫秒
空闲态持续时间大于等于2.5微秒
复位
D+和D-小于Vol(max)的持续时间大于等于10毫秒
D+和D-小于Vil(max)的持续时间大于等于10毫秒
D+和D-小于Vil(max)的持续时间大于等于2.5微秒
2、电压分布
所有USB设备的缺省电压为低电压,当设备要从低电压变化到高电压时,则是由软件来控制的。
在允许设备达到高电压之前,软件必须保证有足够的电压可供使用。
USB支持一定范围的外设来提供电压来源和电压消耗,包括如下的部分。
·
根端口集线器:
它是直接与USB主机控制器相连的,并与其有相同的电源来源。
从外部获得操作电压(AC或DC)的系统,在每个端口至少支持五个单位负载,这些端口称为高电压端口。
由电池组提供电压的系统可以支持一个或五个单位负载。
哪些只能支持一个单位负载的端口称为低电压端口。
从总线获得电压的集线器:
它的所有内部功能设备和下形端口都从它的上形端口的Vbus上获得电压。
在电压升高时,它可以接一个单位负载,经过初始设置后,它可以接五个单位负载。
初始设置电压被分配给了集线器,任一固定功能设备和外部端口。
它的外部端口只能接一个单位负载,当集线器处于活动或挂起态时,它必须为这个端口提供电流。
·
自给电压集线器:
它的任一内部功能设备和下形端口不再从Vbus上获得电压,但当它的其余部分电压下降时,它的USB接口可接一个单位负载并从Vbus处获得电压,以允许该接口能工作。
从外部(从USB)获得操作电压的集线器,可在每个端口接五个单位负载。
由电池组提供电压的集线器,每端口可接一个或五个单位负载。
从总线获得电压的低电压功能设备,该种设备上的所有电压均来自Vbus,在任一时刻,它们最多只能接一个单位负载。
从总线获得电压的高电压设备。
该种设备上的所需电压均来自Vbus。
在电压升高时,它们至多只能接一个单位负载,但当初始设置后,可接五个单位负载。
自给电压功能设备,如图17,当它的其余设备电压下降时,它可以接一个单位负载,并从Vbus上获取所需电压,以使USB接口处于活动状态。
2.2USB的数据包格式
USB外设施不管是实现什么功能,它总是传输的是数据,数据位被发送到总线的时候,首先最低有效位(LSb),跟着是下一个最低有效位,最后是最高有效位(MSb)。
所有的数据包都从同步字段开始的,同步字段为空闲状态出现在总线上,后面跟着以NRZI编码的二进制串“KJKJKJKK”。
同步字段里的最后的2位是同步字段结束的记号,并且标志了包标识符(PID)的开始。
所有USB包的同步字段后都紧跟着包标识符(PID),如图2-3所示:
主机和所有功能部件都必须对得到全部PID字段实行完整的译码。
任何收到包标识符,如果含有失败的校验字段,或者经译码得到未定义的值,则该包标识符被认为是错误的,而且包的余项将被忽略。
图2-3PID格式
表2-2PID类型
PID类型
PID名
PID[3:
0]
描述
标记
(Token)
输出(OUT)
输入(IN)
帧开始(SOF)
建立(SETUP)
0001B
1001B
0101B
1101B
在主机到功能部件的事务中有地址+端口号
在功能部件到主机的事务中有地址+端口号
帧开始标记和帧号
在主机到功能部件建立一个控制管道的事务中有地址+端口号
数据
(DATA)
数据0(DATA0)
数据1(DATA1)
0011B
1011B
偶数据包PID
奇数据包PID
握手(Handshake)
确认(ACK)
不确认(NAK)
停止(STALL)
0010B
1010B
1110B
接收器收到无措数据包;
接收设备部不能接收数据,或发送设备不能发送数据;
端口挂起,或一个控制管道请求不被支持。
专用
(Special)
前同步(PRE)
1100B
主机发送的前同步字。
打开到低速设备的下行总线通信。
地址字段
地址字段通过其地址指定函数,至于是数据包的发出地还是目的地,则取决于标记PID的值。
如图2-4所示,ADDR[0..6]指定了总共128个地址。
地址字段用于输入,建立和输出标记。
由定义可知,每个ADDR值都定义了单一的功能。
图2-4地址字段
端口字段
如图2-5所示,当功能部件需要一个以上的端口时,附加的4位的端口(ENDP)字段提供了更灵活的寻址方式。
除了端口地址0之外,端口个数是由功能部件决定的。
端口字段只对输入,建立和输出标记PID有定义。
图2-5端口字段
数据字段
数据字段可以在0到1,023字节之间变动,但必须是整数个字节。
图2-6为多字节显示格式,每个字节的范围内的数据位移出时都是最低位(LSb)在前。
图2-6数据字段
数据包大小随着传送类型而变化。
循环冗余校验(CRC)被用来在标记和数据包中保护所有的非PID字段。
在上下文中,这些字段被认为是保护字段。
PID不在含有CRC的包的CRC校验范围内。
数据包格式
如图2-7所示,数据包由PID,包括至少0个字节数据的数据区和CRC构成。
有2种类型的数据包,根据不同的PID:
DATA0和DATA1来识别。
2种数据包PID是为了支持数据切换同步而定义的。
图2-7数据包格式
数据必须以整数的字节数发出。
数据CRC仅通过对包中的数据字段计算而得到,而不包括PID,它有自己的校验字段。
2.3USB的传输类型
USB通过通道在主机缓冲区与设备端点间传送数据。
在消息通道中传递的数据具有USB定义的格式,它的数据包中包含的数据允许具有设备指定的格式。
USB要求任何在通道上传送的数据均被打包,数据的解释工作由客户软件和应用层软件负责。
USB提供了多种数据格式,使之尽可能满足客户软件和应用软件的要求。
Usb有四种传输方式:
控制传输,批量传输,中断传输和同步传输。
每个传输类型在以下的几个传输特征上会有不同:
可用性,数据包大小、信息流的方向、数据传输的速度、错误处理。
下面分别介绍:
1、控制传输
控制传输允许访问一个设备的不同部分。
控制传输用于传送控制命令(如客户软件和它的应用之间的设置信息、命令信息、状态信息)。
控制传输由以下几个事务组成:
(1)建立联系,把请求信息从主机传到它的应用设备;
(2)零个或多个数据传送事务,按照
(1)事务中指明的方向传送数据;
(3)状态信息回传。
将状态信息从应用设备传到主机。
当端点成功地完成了被要求的操作时,回传的状态信息为“SUCCESS”。
可用性每个设备必须在终端0的默认流程中支持控制传输。
一个设备也可以有被配置为控制传输的其他流程,但在现实中没有必要有多个流程。
即使如果一个设备需要发送许多控制请求,主机是根据请求的数量和大小来分配带宽的,而不是根据控制流程的数量,因此拥有多个控制终端是没有必要的。
USB规定的数据包大小在全速设备中,数据包的最大值可以是8,16,32或者64B。
在低速设备中,最大值是8B。
这只包括了数据包中的信息,不包括检验位和起始位。
一个包含了少于数据字节数最大值的事务表明这是传输中最后一个事务。
信息流的方向控制传输使用的是消息通道上的双向信息流。
所以,一旦一个控制通道被确认之后,这个通道就使用了具有某个端点号的两个端点,一个输入,一个输出。
数据传输的速度
控制传输不是用来传输数据的最有效的方法。
全速传输除了要传输的数据外,还有一个45B的数据头。
低速传输可能传输不超过8B的数据,它被限制为每帧最多三个事务。
一个8B的单个低速控制传输使用一个帧的带宽的29%,如果总线很忙,则所有的控制传输可能不得不共享保留的10%的带宽。
这样就限制了速度。
出错处理
如果一个设备在一个控制传输中没有返回一个预期的交换包,那么一个pc主机控制器将重试两次。
如果主机在重试三次后没有接收到相应,那么它通知需要这个传输的软件,停止与终端的通信,知道问题得到解决。
如果一个SETUPB包在上一个传输到达之前到达,则外设就丢弃上一个传输并开始新的一个传输。
2、批量传输
批量传输对传输时间不严格的数据传输来说是很有用的。
一个批量传输可以发送大量的数据而不会阻塞总线,因为这个传输会为其他类型的传输而延迟,并且会等到总线可用的时候再传输。
批量传输可用于从主机发送数据到一个打印机,从一个扫描仪发送数据到主机,对一个磁盘的读和写等等。
可用性只有全速设备可以使用批量传输。
设备不需要支持批量传输,但一个特定设备类可能需要它。
USB规定的数据包的大小USB没有规定批量传输通道上数据包的格式。
一个批量传输能有一个最大的包的大小值为8,16,32或64B。
在列举过程中,主机从设备处读取每一个批量传输的最大包的大小,一次传输过程中,数据的大小可以是小于或者等于这个最大值。
如果一个数据包单个包不能发送,那么主机控制器会把这个传输分成多个事务。
信息流的方向这种通道总是单方向的,如果要进行双向传送,必须用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB技术及其驱动程序开发 学士论文 USB 技术 及其 驱动程序 开发 学士 论文