




已阅读5页,还剩52页未读, 继续免费阅读
(测试计量技术及仪器专业论文)usb总线接口技术及应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京航空航天大学坝i 二学位论文 摘要 ( 通用串行总线( u s b ) 是目前p c 外设接1 :3 的主流标准,并迅速 o、 在自动化测试中得到应用,以满足对数据通信更高的要求。悔课题研 究了一种具有通用性的u s b 数据传输接口卡的设计方法,该接口卡提 供存储器接口,可以容易地连接第三方的设备,从而使该设备获得 u s b 功能。 本文围绕设计目标,在简要叙述u s b 总线协议的基础上,主要论 述了两个方面的内容:主机驱动程序和设备开发。主机驱动程序采用 d d k 开发,符合w d m 驱动程序模型,同时还开发了上层客户应用 程序进行控制操作;设备以8 0 5 1 单片机作为控制器,p h i l i p s 公司的 p d i u s b d l 2 作u s b 收发器,采用批量传输方式实现数据传输。 v 关键词:u s b 数据传输、w d mp d i u s b d l 2 u s b 总线接口技术及应用研究 a b s t r a c t u s b ( u n i v e r s a ls e r i a lb u s ) i sam a i n s t r e a mt e c h n o l o g yt op r o v i d ec o n n e c t i v i t y b e t w e e np ca n dp cp e r i p h e r a l s ,w h i c he x t e n d si t s a p p l i c a t i o n s t oa u t o m a t i c m e a s u r e m e n tf i e l dt os a t i s f yh i g h e rr e q u i r e m e n tf o rd a t at r a n s f e r t h ep a p e rd i s c u s s e s d e v e l o p m e n to fu s bi n t e r f j a c e c a r dw h i c hc a nc o n n e c tc o m p u t e rw i t ht h i r dp a r t y a p p l i c a t i o nt h r o u g hu s bp o r t t h ei n t e n t i o no f t h ed e v e l o p m e n ti st oh e l pt h o s ew h o w a n tt og e tu s bf u n c t i o nb u td o n tk n o wh o w t od e v e l o pi t b e c a u s et h ei n t e r f a c ec a r d c a nd e a la n y t h i n ga b o u t u s b ,j u s t l e a v em e m o r yi n t e r f a c et ot h i r dp a r t y d e v e l o p e r s t h e d e v e l o p m e n t w o r kf o rt h ec a r dc o n s i s t so ft w o p a r t s :h o s td r i v e ra n d d e v i c e d e s i g n t h eh o s td r i v e ri sd e v e l o p e du s i n gd d k ,a n dc o m p l i e sw i t hw d m a c l i e n t p r o g r a m i n t e r f e c ei s d e v e l o p e dt o c o n t r o lt h ed r i v e rt h ed e v i c ei sb a s e do n p d i u s b d l 2 ,a n di s u n d e rt h ec o n t r o lo f8 0 5 1 m c u t h ef i r m w a r ef o rm c ui s d e v e l o p e d t op e r f o r mu s bd a t at r a n s f e rt h r o u g hb u l ki r a n s f e rt y p e k e y w o r d s :u s bd a t at r a n s f e rw d mp d i u s b d l 2 h 南京航空航天大学硕士学位论文 第一章绪论 1 1u s b 发展情况 u s b 全称为u n i v e r s a ls e r i a lb u s ( 通用串行总线) ,是1 9 9 4 年底由i b m 、i n t e l 、 c o m p a q 、d e c 、m i c r o s o f t 、n e c 和n o r t h t e l e c o m 共同开发的p c 外设接口标准 川,由于其具有使用方便及成本低廉等优点,迅速得到业界的强力支持,目前已 经成为主流的总线标准,2 0 0 1 年u s b 设备出货量已超过3 亿台。u s b 广泛应用 于传统p c 外设,如鼠标、键盘、显示器等,移动存储设备如移动硬盘、闪存盘 等,以及新兴的消费类电子,如m p 3 播放器、数码相机、移动电话等。同时其 应用范围也在不断扩大,工业自动化仪器仪表正在成为u s b 应用的热点之一。 u s b 最初推出的是1 x 版本,其总线传输速度较低,为1 2 m b p s 【l j ,1 9 9 8 年 推出了u s b 2 0 ,将数据传输速度提高到了4 8 0 m b p s ,在保持了u s b l 1 的优点 的前提下,保证了向下兼容性,可以完全支持各种u s b1 x 的产品。u s b 2 0 满 足了高端应用对总线带宽的需求,从2 0 0 2 年下半年起,采用u s b 2 0 的设备开 始大规模出现,预计2 0 0 4 年u s b 2 0 整体出货量将超过3 亿台,超过u s b l 1 的 出货量。 随着u s b 设备的迅速增加,设备与设备之间的直接数据传输变得越来越迫 切,u s bo r i b ( 0 nt h eg o ) 技术应运而生了,它于2 0 0 1 年1 2 月底制定,赋 予了设备双重身份,即既可以作为主机,又可以作为设备,其实质是在设备中增 加了一个嵌入式计算机来执行主机任务。这一技术使u s b 设备摆脱了对p c 的 依赖,大大扩展了u s b 的应用范围,并结合u s b 2 0 高速传输技术,严重威胁 到i e e e l 3 9 4 的传统市场。 1 2 u s b 的设计目标 u s b 的设计有三大目标: ( 1 ) 计算机与电话之间的连接:对声音音频和压缩视频等实时数据给予充分 支持,可以广泛地连接计算机和电话,这一应用目标到目前为止是不成功的。 ( 2 ) 易用性:强调即插即用、总线供电等特性,以方便用户使用。 ( 3 ) 端口扩充:提供快速、双向、统一且价格低廉的串行接口,可以满足p c 机发展的现在和未来的需要。 从中我们可以看出,u s b 标准的制定从市场出发,立足于满足用户的实际 应用需求,尽管它的性能指标并不突出,但正是这一点使得它获得了极大的成功。 u s b 总线接口技术及应用研究 1 3u s b 的性能特点 ( 1 ) 终端用户的易用性: 为连接电缆和连接头提供了单一模型; 电气特性与用户无关; 自我检测外设,自动地进行设备驱动设置: 可动态连接,动态重置外设。 ( 2 ) 广泛的应用性: 适应不同设备,提供低速传输( 1 s m b l s ) 和全速传输( 1 2 m b p s ) : 支持对多个设备的同时操作; 可同时操作1 2 7 个物理设备; 在主机和设备之问可以传输多个数据和信息流: 支持多功能的设备: 利用低层协议,提高了总线利用率。 ( 3 ) 同步传输带宽: 确定的带宽和低延迟适合电话系统和音频的应用: 同步工作可以利用整个总线带宽。 ( 4 ) 灵活性: 可以选择一系列大小的数据包,允许对设备缓冲器大小进行选择; 通过指定数据缓冲区大小和执行时间,支持各种数据传输率; 通过协议对数据流进行缓冲处理。 ( 5 ) 健壮性: 出错处理,差错恢复机制在协议中使用; 对用户感觉而言,热插拔是完全实时的; 可以对有缺陷设备进行认定。 ( 6 ) 与p c 产业的一致性: 协议的易实现性和完整性; 与p c 机的即插即用的体系结构的一致: 对现存操作系统接口的良好衔接。 ( 7 ) 成本低廉 以低廉的价格提供1 5 兆比特率的子通道设施; 将外设和主机硬件进行了最优化的集成: 促进了低价格的外设的发展; 廉价的电缆和连接头: 运用了商业技术 2 南京航空航天大学硕上学位论文 i 4u s b 系统组成 一个u s b 系统被定义为三个部分:u s b 的互连、u s b 设备和u s b 主机。 1 4 1u s b 的互连 u s b 的互连是指u s b 设备与主机之间进行连接和通信的操作,主要包括以 下几方面: 总线的拓扑结构:指明了u s b 设备与主机之间的连接方式; 数据流模式:描述了数据在系统中通过u s b 从产生方到使用方的流动方 式: u s b 的调度:u s b 提供多个设备共享的连接,对u s b 设备必须进行调度 以分配带宽。 图i - i ( a ) u s b 物理连接 3 t b r 4 图i - l ( b ) u s b 逻辑连接 u s b 物理互连方式如图1 1 ( a ) ”j 所示,是一种星形级连结构。集线器( h u b ) 位于每级星形的中心。这种集线器级连的方式使得外设的扩展很容易( u s b 协 议规定最多允许5 级集线器进行级连) ;u s b 逻辑互连方式如图1 1 ( b ) 所示,各 个设备好象是与主机直接相连的,它们之间的通信不用关心物理连接方式。 数据流模式对于u s b 设备的实现是最关键的,我们将在下一章对其单独进 行描述。u s b 的调度是针对多个设备的互连的,不属于功能设备开发者需要关 心的内容,在此不作描述。 u s b 总线接l 】技术及应用研究 1 4 2u s b 设备 u s b 设备包括u s b 集线器和功能设备( f u n c t i o n ) 两大类。它们都必须有 标准的u s b 接口,理解u s b 协议,支持标准的u s b 操作( 如配置,复位等) 。 它们的描述信息也必须具有u s b 协议定义的标准格式。集线器为u s b 总线提供 扩展和连接:功能设备是具有一定特殊应用功能的设备,它能发送数据到主机, 也可以接收来自主机的数据和控制信息。 1 4 3u s b 主机 u s b 主机是u s b 系统的核心。在一个u s b 系统中只有一台主机。主机的 u s b 接口称为u s b 控制器,通过它主机和外围u s b 设备进行通信。在主机中还 集成了一个根集线器( r o o th u b ) 用于直接与外设相连或与一般u s bh u b 级连。 主机所具有的功能包括:检测u s b 设备的插入和拔出:管理主机与设备之间的 数据流,对设备进行必要的控制;收集各种状态信息:对插入的设备供电。 1 5 本文研究的主要内容 正如前面所说,u s b 总线在自动化测试中的迅速得到应用,以取代老式的 r s 2 3 2 以及e p p 并口等总线,但是,大量采用老式总线的设备不可能因为接口 的更改而全部重新设计,这迫使我们应用u s b 总线技术的时候,必须考虑到尽 可能小地对设备进行改动。 我们的目标是设计一个采用u s b 总线实现的数据传输接口卡,为了使设计 有通用性,我们将不针对某个具体应用,而是要实现一个接口卡自带通用存储器 与计算机的数据通信。这样做的好处是最终的成果将是一个通用的开发平台,任 何可以对存储器进行操作的设备都可以非常容易地挂接到这一平台上来,它可以 使希望获得u s b 接口功能的设备开发者将精力放在其具体的应用上,而不是在 u s b 接口开发上消耗大量的人力物力。由于u s b 是开放式的接口标准,因而所 开发出来的设备可保证在任何符合u s b 规范的p c 机上使用。 我们注意到,大多数情况下,设备向主机传输数据是最重要的任务,而主机 向设备传输的数据通常是控制性的,数据量较小。因而我们确定设备向主机传输 数据是接口卡最主要的功能,同时应最大可能地提高传输速度。 4 南京航空航天大学硕士学位论文 第二章u s b 数据传输协议 2 1u s b 电气特征及电平信号 u s b 采用四线电缆,由电源线( v b u s ) 、地线( g n d ) 和两根数据线( d + 和d ) 组成,如图2 - 1 【l l 所示。数据线传输差模信号,以降低噪声干扰。可以看 出,任何时刻u s b 总线上最多只能有一位数据在传输,所以u s b 是一种完全按 照时序进行控制和数据传输的总线。 v n l s d + d g n d v b l l s d + d g n d 图2 - 1 u s b 电缆结构 u s b 具有差分n r z i ( 不归零倒置) 代码格式。在这种n r z i 波形中,d ( n 一1 ) 位和d ( n ) 位之间如果有状态变化( 称为过渡) ,就被解码为一个二进制b ( n ) = 0 的数据位,没有过渡就被解码为一个二进制b ( n ) = l 的数据位,如 图2 2 所示。表2 1 给出了n r z i 编码中可能有的所有组合 olloi0lo 0 0l0 oil0 咖一i n 厂1 j _ l _ l 厂l 几 n 陋司厂 r 广 厂 图2 2n r z i 数据编码 表2 1n r z i 与二进制对比 二进制差分砌 b ( n 1 )b ( n )d ( n 1 )d ( n )d ( n 一1 ) d ( n ) ool 001 01o o11 10o llo l11 10o 为了确保信号发送的准确性,当在u s b 上发送一个包时,传输设备就要进 行位插入操作。所谓位插入操作是指在数据被编码前在数据流中每六个连续的 l 后插入一个0 ,从而强迫n r z i 码发生变化,位插入操作由传输端强制 执行,任何数据都将被执行位插入操作,如图2 3 所示。接收端必须能对n r z i 数据进行解码,识别插入位并去掉它们。 u s b 总线接口技术及应用研究 在全速传输中,数据k 态表示差分1 ,数据j 态表示差分0 ,而在低速传输 中则正好相反。 原始i 二百忑淼= 兰冲| _ p a c k e td a t a 习 卜卜一3 y r - ch n m ,叶一叫 竺厂二仁= 尚!厂 丁 厂 位插入数据 一8 y n c p a t t e r n 卜+ 一p e c k e r d m 叫 卜s “o r 一 n r z l1 研厂| r r 厂 厂 e n d e dd a t a k s y n c p a t t e r n - | + 一p a c k e t h n r z i 蝙码后的数 图2 3 位插入 2 2u s b 数据流模型 本数据流模型完全引自参考文献【1 】,以下不再标注。 2 2 1u s b 主机,设备分层模型 数据流发生在主机和u s b 设备之间,我们以常用的分层模型介绍u s b 系统 的数据流,如图2 4 所示。它能使不同层次的实现者只关心u s b 相关层次的特 定功能细节,而不必掌握从硬件结构到软件系统的所有细节,因此,不同层次的 实现者其开发工作量将会有极大的不同。 主机分客户软件层,u s b 系统软件层和u s b 主机控制器。设备分u s b 总线 接口层,u s b 设备层和功能层。u s b 系统软件是指在某一操作系统上支持u s b 的软件,它独立于u s b 设备和客户软件;u s b 主机控制器是主机方的u s b 接口, 它是软硬件的总和。从图2 4 上我们可以看出,u s b 总线接口层提供主机和设 备之间物理的连接,而从逻辑上看,u s b 设备层与u s b 系统软件层对应,它们 完成u s b 设备一些基本的、共有的工作;功能层和客户软件层通信,它们实现 单个u s b 设备特有的功能。在编程时,客户软件通过u s b 系统软件提供的编程 接口操作对应的设备,而不是直接通过操作内存或i o 口来实现,这一点是u s b 和p c i 总线的显著差异。所有u s b 设备只有在被主机承认并配置后才可进入系 统工作,它们实现的功能不同,但对主机都提供一个同样的接口。 在系统软件层和u s b 设备层之间有一条缺省管道,主机与设备的端点0 通 信,用于实现一些u s b 设备的基本控制功能。在客户软件层和功能层有多组通 信管道,它们实现u s b 设备的特定通信功能我们所述的这些通信都是从逻辑 上分析的,实际的信号的物理流程图2 4 也表示了,以信号从主机流向设备为 例:客户软件经u s b d 传输给系统软件的数据是不具有u s b 通信格式的数据。 6 南京航空航天大学硕士学位论文 系统软件对这些数据分帧,实现带宽分配策略,然后交给u s b 主机控制器。主 机控制器对数据按u s b 格式打包,实现传输事务。再经串行接口引擎( s i e ) 后 将数据最终转化为符合u s b 电气特征的差分码从u s b 电缆发往设备。数据到达 设备后是一个逆过程,在设备层中将数据解码,发往不同端点的数据包被分开并 正确排列,帧结构被拆除,数据成为非u s b 格式的,最后数据送往各端点,完 成通讯。 图2 4u s b 主机,设备数据流通信模型 在主机方我们还发现有h c d 和u s b d 两个接口层。h c d 的全称为主机控 制驱动( h o s tc o n t r o ld r i v e r ) ,它是对主机控制器硬件的一个抽象,提供和u s b 系统软件之间的软件接口。不同种p c 的主机控制器硬件实现并不一样,但有了 h c d ,u s b 系统软件就可以不必理会各种h c d 具有何种资源,数据如何打包等 问题。尤其是h c d 隐藏了怎样实现根集线器的细节,这有利于u s b d 的简化。 u s b 总线接口技术及应用研究 2 2 2 端点 端点在硬件上就是一个有一定深度的先入先出堆栈( f i f o ) 。主机和设备的 通信最终作用于设备上的各个端点。每一个u s b 设备都有一组互相独立的端点。 每一个设备都有一个由主机分配的唯一的地址,而各个设备上的端点都有由 设备确定的端点号( e n d p o i n tn u m b e r ) 和通信方向。每个端点只支持单向通信: 它要么是输入( i n p u t ) 端点,数据流方向从设备到主机;要么是输出( o u t p u t ) 端点,数据流方向从主机到设备。设备地址、端点号和通信方向三者结合起来就 唯一确定了一个端点。 在设备配置时。它必须报告主机它的各个端点的特性,包括端点号,通信方 向,端点支持的最大包大小,带宽要求以及支持的通信方式等。其中端点支持的 最大包大小称为数据有效负载,是个重要的概念。端点0 比较特殊。它实际是由 输入和输出两个端点组成。每个设备都必须有端点0 ,主机和它建立缺省控制管 道,用于设备枚举和对实现对设备的一些基本的控制功能。除了端点0 ,其余的 端点在设备配置之前是不能和主机通信的。只有设备在它的配置描述符中向主机 报告了这些端点及其特性,并由主机确认后,这些端点才被激活。 2 2 3 管道 管道( p i p e ) 是设备上端点和主机上客户软件的连接。因此,每条管道和端 点的特性有直接关系,它只能支持一种通信方式客户软件通常通过向主机的操 作系统发i o 请求包( i i 心) 来要求和某一条管道进行数据传输,而后它进行等 待,直到系统通知它传输成功或失败。u s b 协议规定了流管道( s t r e a mp i p e ) 和 消息管道( m e s s a g ep i p e ) 两种管道,其中消息管道有定义的结构。缺省控制管 道属于消息管道。 1 ) 流管道 流管道中的数据是流的形式,也就是该数据的内容不具有u s b 要求的结构。 数据从流管道一端流进的顺序与它们从流管道另一端流出时的顺序是一样的,流 管道中的信息流总是单方向的,或者流进,或者流出。流管道支持同步传输,中 断传输和批传输,这些在稍后做进一步解释。 2 ) 消息管道 消息管道与端点的关系同流管道不同,它的数据格式由u s b 协议规定。首 先,主机向u s b 设备发出一个请求:接着,就是数据的传输;最后,是一个状 态阶段。为了能够容纳请求,数据,状态的变化,消息管道要求数据有一个格式( 该 格式将在2 3 节中详细介绍) ,此格式保证了命令能够被可靠地传输和确认。消 息管道需要双方向的信息流,所以有两个相同号码的端点,一个用于输入,一个 用于输出。两个号码必须相同。缺省控制管道就是一个消息管道。消息管道仅支 持控制传输。 南京航空航天大学硕士学位论文 2 2 4 传输类型 u s b 定义了4 种传输类型:控制传输、批传输、等时传输和中断传输。由 于我们的应用只涉及控制和批量传输,故只对这两种传输类型作进一步描述。 1 ) 控制传输 控制传输用于支持在客户软件和它的应用之间传输设置信息、命令信息、状 态信息等。它由以下三个事务组成: ( 1 ) 建立事务:建立联系,把请求信息从主机传到它的应用设备; ( 2 ) 零个或多个数据传输事务:按照上一事务中指明的方向传输数据; ( 3 ) 状态事务:将传输状态信息从应用设备回传到主机。 u s b 设备必须实现缺省控制管道,并将它设置成一个消息管道。这个管道 由u s b 系统软件使用。u s b 设备的确认信息、状态信息以及控制信息由该管道 传输。 u s b 设备框架定义了标准的,设备级的或由销售商提供的请求,这些请求 可操作设备的状态。u s b 设备框架又定义了一些描述符( d e s c r i p t o r ) ,用于存放 u s b 设备的各种信息。控制机制提供访问设备描述器和请求操作设备的机制, 所以使用控制传输的数据必须具有u s b 定义的数据格式。 应用层和相应的客户软件不能为控制传输指定总线访问频率和带宽。这由 u s b 系统软件从全局优化角度加以决定。但不管有没有控制传输发生,系统软 件至少需要将l o 的带宽留给控制传输。 控制传输使用的是消息管道上的双向信息流。所以,一旦一个控制管道被建 立之后,这个管道就使用具有某个端点号的两个端点,一个输入,一个输出。控 制传输的数据格式将在2 3 节中作详细描述。 u s b 规定了控制传输所能接收或发送的最大数据净负荷区长度。高速设备 定义的最大数据净负荷区长度为8 、1 6 、3 2 或6 4 字节,控制传输端点必须支持 规定的最大长度中的一个,设备在自己的设置信息中报告该端点允许的最大净负 荷区长度;低速设备的数据净负荷区的长度只能是8 字节。这个规定是针对这些 数据包中的数据净负荷区的,不包括包中的协议要求的额外信息。 当端点做了以下两件事时,控制传输的数据阶段可被认为结束: 已传了由建立阶段指定的数据量。 传了一个数据包,它的长度为0 或它的数据区长度小于最大长度。 2 ) 批量传输 为了支持某些在不确定的时间进行的大数据量传输,u s b 设计了批量传输 类型。它可以利用任何可获得的带宽。批传输有以下几点特性: 可以获得带宽访问总线。 如果总线出现错误,传输失败,可进行重发。 可以保证数据必被传输,但不保证传输的带宽和延迟。 9 u s b 总线接口技术及应用研究 批量传输管道为流管道,设备可以自定义管道上数据的格式,这对于提高 数据传输效率很有意义。 批量传输管道总是单方向,如果要进行双向传输,必须用两个管道。 只有全速设备才可以使用批量传输。 批量传输的最大数据净负荷区长度规定与控制传输相同。如果主机要求传输 的数据大于端点的最大净负荷区长度,那么要分几个数据净负荷区来传,除最后 一个区外,前几个都必须达到最大长度。而最后一个包含剩下的数据。如果出现 以下情况,则认为批传输结束: 已传的数据量恰好等于期望传输的量。 传了一个不到最大净负荷区长度的包或传了一个长度为0 的包。 2 3u s b 协议层 u s b 协议层描述了u s b 主机与u s b 设备交互时的语法和协议,从中定义了 字段、包、事务和传输的结构,以及由字段到包、由包到事务、由事务到传输所 组成的组织层次关系。本节中我们将从底向上展示u s b 的数据结构。 2 3 1 字段格式 数据位被发送到总线的时候,首先是最低有效位( l s b ) ,跟着是下一个最 低有效位,最后是最高有效位( m s b ) 。在本文以下描述中,数据均以下列形式 给出:包中单个的位和字段从左到右的顺序就是它们通过总线的顺序。 ( 1 ) 同步字段 任何包都从同步( s y n c ) 字段开始的,同步字段是产生最大的过渡密度的 编码序列。同步字段作为空闲状态出现在总线上,后面跟着以n r z i 编码的二进 制串“k j k j k j k k ”。通过被定义为8 位长的二进制串,输入电路以本地时钟对 齐输入数据。同步字段里的最后两位是同步字段结束的记号,并且标志了包标识 符( p i d ) 的开始。 ( 2 ) 包标识符字段 所有包的同步字段后都紧跟着包标识符( p i d ) 。如图2 5 所示,包标识符 由4 位的包类型字段和其后的4 位的校验字段构成。包标识符指出了包的类型。 包标识符的4 位的校验字段可以保证包标识符译码的可靠性,这样包的余项也就 能被正确地解释。包标识符的校验字段是通过对包类型字段的二进制的求反码产 生的,如果4 个p i d 检验位不是它们的各自的包标识符位的补,则说明存在p i d 错。 图2 5 包标识符格式 1 0 南京航空航天大学硕士学位论文 包标识符被分为4 个编码组:标记,数据,握手和专用。如表2 2 所示, 包标识符传输的前2 位( p i d ) 指出了其属于哪个组。设备通过对包标 识符译码来确定包的类型。 表2 2 p i d 类型 p i d 类型p i d 名p i d 3 :0 1描述 标记输出( o u t )0 0 0 l b主机到设备的事务,带 ( t o k e n )有地址+ 端口号: 输入( i n )1 0 0 l b设备到主机的事务,带 有地址+ 端口号; 帧开始( s o f ) 0 1 0 l b 帧开始标记和帧号; 建立( s e t u p ) l i o l b 主机到设备建立一个 控制管道的事务,带有地址 + 端口号; 数据数据00 0 1 l b偶数据包p i d ; ( d a t a )( d a t a o ) 数据l l o l l b 奇数据包p i d ; ( d a t a l ) 握手确认( a c k ) 0 0 1 0 b 接收器接收到无错数 ( h a n d s h a k e )据包: 不确认1 0 l o b接收( 发送) 设备不能 ( n a k )接收数据; 停止 1 l l o b 端口挂起,或一个控制 ( s t a l l )管道请求不被支持。 专用前同步( p r e )1 1 0 0 b主机发送的前同步字。 ( s p e c i a l )打开到低速设备的下行总 线通信。 ( 3 ) 地址字段 设备端口使用2 个字段:设备地址字段和端口字段。设备对地址和端口字段 都需要进行译码。任何一个字段不匹配。此标记都必须被忽略。另外,对末初始 化的端口的访问将使得标记被忽略。 设备地址( a d d r ) 字段通过其地址指定设备,如图2 6 所示,a d d r 指定了总共1 2 8 个地址。由定义可知,每个a d d r 值都定义了单一的设备。 设备在刚一复位( r e s e t ) 和加电( p o w e r - u p ) 的时候,其地址默认值为零,并且 必须由主机在枚举过程( e n u m e r a t i o np r o c e s s ) 中编程。设备地址零被用作为缺 省地址,不可被分配作任何别的用途。 u s b 总线接口技术及应用研究 图2 6 地址字段 如图2 7 所示,在设备拥有多个端口的时候通过附加的4 位端口( e n d p ) 字段对端口进行寻址。除了端口地址0 之外,端口个数是由设备决定的。所有的 设备都必须在端d0 提供一个控制管道( 缺省控制管道) 。对于低速设备,每个设 备最多提供3 个管道:在端1 3 0 的控制管道加上2 个附加管道( 或是2 个控制管道, 或是1 个控制管道和1 个中断端口,或是2 个中断端口) 。全速设备可以支持最多可 达1 6 - 1 的任何类型的端口。 图2 7 端口字段 ( 4 ) 帧号字段 帧号字段是一个1 1 位的字段,主机每过一帧就将其内容加一。帧号字段达 到其最大值7 f f h 时归零,且它仅每个帧最初时刻在s o f 标记中被发送,可以 用来统计数据传输情况。 ( 5 ) 数据字段 包含数据字段的数据包大小随着传输类型而变化,但所包含的数据必须是整 数个字节。图2 8 为多字节显示格式。每个字节的范围内的数据位移出时都是最 低位( l s b ) 在前。 曲 id 1 d , d ,ld ,i d i o 。0 d , 曲 哪l 悼1b饵n籼怕n+1 图2 8 数据字段格式 ( 6 ) 循环冗余校验 循环冗余校验( c r c ) 被用来在标记和数据包中保护所有的非p i d 字段。 2 3 2 包格式 ( 1 ) 标记包 图2 9 显示了标记包的字段格式。标记由p i d ,a d d r 和e n d p 构成,其中p i d 指定了包是输入,输出还是建立类型,输入p i d 定义了从设备到主机的数据事务, 输出和建立p i d 定义了从主机到设备的数据事务;对于输出和建立事务,地址和 端口字段唯一地确定了按下来将收到数据包的端口,对于输入事务的,这些字段 唯一地确定了哪个端口应该传输数据包。只有主机能发出标记包。 1 2 南京航空航天大学硕士学位论文 匕i 图2 9 标记包格式 如图2 9 所示,标记包包括了覆盖地址和端口字段的5 位c r c 。c r c 并不 覆盖p i d 因为它有自己的校验字段。标记和帧开始( s o f ) 包是由3 个字节的包字 段数据后面的包结束( e o p ,e n do f p a c k e t ) 界定的。如果包被译码为合法标记 或s o f ,但却没有在3 个字节之后以e o p 终止,则它被认为是无效的,并被接 收器忽略。 ( 2 ) 帧开始( s o f ) 包 主机以每毫秒一次的额定速率发出帧开始( s o f ) 包。如图2 一l o 中所示, s o f 包是由指示包类型的p i d 和其后的1 1 位的帧号字段构成。 l 晰 1 b b5 嚏 二i 图2 一1 0 帧开始包 ( 3 ) 数据包 如图2 一1 1 所示,数据包由p 1 d ,包括至少0 个字节数据的数据区和c r c 构成。 有2 种类型的数据包,根据不同的p i d :d a t a 0 和d a t a l 来识别。2 种数据包p i d 是为了支持数据切换同步而定义的。数据必须以整数的字节数发出。数据c r c 仅通过对包中的数据字段计算而得到,而不包括p i d ,它有自己的校验字段。 8 醵 o - 1 0 2 3 坤b 6 b h 匕二二二i 。i:一 图2 1 1 数据包格式 ( 4 ) 握手包 如图2 一1 2 所示,握手包仅由p i d 构成,用来报告数据事务的状态,以及在 数据事务中表示数据成功接收,命令的接收或拒绝,流控制和停止条件。只有支 持流控制的事务类型才能返回握手信号。握手总是在事务的握手阶段中被返回, 也可在数据阶段代替数据被返回。握手包由1 个字节的包字段后的e o p 确定界 限。 2 3 3 事务格式 图2 一1 2 握手包 u s b 总线接口技术及应用研究 事务格式根据端口类型而变化。有4 种端c i 类型:批处理( b u l k ) 、控制 ( c o n t r 0 1 ) 、中断( i n t e r r u p t ) 和同步( i s o c h r o n o u s ) 。本文仅描述应用所涉及到 的前两种端口类型。 ( 1 ) 批处理事务 批处理事务类型的特点是以错误检测和重试的方式保证主机和设备之间的 数据的无错发送。如图2 一1 3 所示,批处理事务是由标记,数据和握手包构成的 三阶段的事务。在某些流控制和挂起条件下,数据阶段被握手信号替换,从而产 生了没有数据传输的两阶段的事务。 空稠 圈圭机il 设备 图2 1 3 批处理事务格式 我们以数据接收为例,说明批处理事务的格式。当主机准备好了接收批处理 数据的时候,它发出输入标记。设备端口通过返回数据包,其格式如图2 一1 4 所 示,数据包同步经数据时序切换位和d a t a 0 d a t a ip i d 的使用完成。如果不能 返回数据,则返回n a k 或s t a l l 握手作为应答。n a k 表示功能部件暂时不能返 回数据,而s t a l l 表示端口永久地被停止,需要u s b 系统软件干涉。如果主机收 到合法的的数据包,则它用a c k 握手来应答。如果收到数据时主机检测到错误, 它不返回握手包给设备。 批处理写 二i ! ! i i 夏! ! i i : j 亘! j i 三 n wo a t a io a t a i 图2 1 4 批处理数据包序列 l 南京航空航天大学硕士学位论文 ( 2 ) 控制传输事务 一个典型的控制传输需要3 种不同的事务:建立、数据和状态事务。图2 一1 5 显示了三种不同的控制传输事务序列,控制读和写相似,由建立、数据和状态事 务组成。在某些情况下,也可以有无数据事务阶段的控制传输,它仅由建立和状 态阶段构成。 建立阶段 数据阶段 状态阶段 广、_ j k ,1 ,、_ - 、厂j - 1 控制写巳五五口巳蚤五 臣匠互 匠蚤五习 置五 控制馕压固 互口亡互口臣画 巳西口_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 蹦,酗h fo i ,尉a l n “m , 建立阶段状态阶段 r 。k 。- 1r 、, 无嚣利曲印 图2 1 5 控制传输事务序列 建立事务用于向功能部件的控制端口传输信息。图2 一1 6 说明了建立事务的 格式。建立包总是在建立事务的数据阶段上使用d a t a 0p i d 。收到建立包的设备 必须接收建立数据并用a c k 应答,如果数据被损坏,则丢弃数据且不返回握手。 空闲 s e t u p l d a t a i a c kl 口主机品 空闲 设备 图2 一1 6 建立事务结构 控制传输的数据事务发生在建立事务阶段之后,由一个以上的输入或输出事 务构成,遵守和批处理传输相同的协议规则所有的数据事务阶段里的事务都必 须有相同的方向( 即全部输入或者全部输出) 。在数据阶段中要发送的数据的数 量和其方向在建立事务里被指定。如果数据的数量超过了先前确定的数据包大 小,数据在支持最大的包大小的多个事务中被发送( 输入或者输出) 。任何剩下 的数据都作为剩余在最后的事务中被发送 状态事务是控制传输的最后一个事务阶段,报告整个控制传输的结果是成功 u s b 总线接口技术及应用研究 还是失败。如果成功,则状态事务中返回零长度数据包( 即只有p i d 和c r c 校验 位) ;如果失败,则对于控制写,设备在数据包阶段就返回n a k 或者s t a l l ,此 时主机不再返回交换包;对于控制读,主机依然发送一个零长度数据包,设备返 回n a k 或者s t a l l 。状态事务的方向是以相对前面的事务阶段的数据流方向来 确定的,并且总是使用d a t a ip i d 。 t 6 南京航空航天大学硕士学位论文 第三章u s b 驱动程序 本章首先简要介绍了u s b 驱动程序的w i n 3 2 程序模型( w d m ) ,然后介绍 了u s b 主机体系结构,最后详细介绍了本设计的驱动程序及应用程序的编写。 1w d m 驱动程序模型简介 随着w i n d o w s 9 8 和w i n d o w s 2 0 0 0 成为主流操作系统,w i n d o w s 驱动程序模 型( w d m ) 取代了原先的v x d 技术,成为设备驱动程序的主流模式。w d m 提供灵活的方式,简化了驱动程序的开发,并能够对u s b 、i e e e1 3 9 4 、p c i 等 新硬件标准提供充分支持,并增强了驱动程序的可靠性和可维护性p j 。 w d m 有两种运行模式,即内核( k e r n e l ) 模式和$ p ( u s e r ) 模式【l ”。在内 核模式下,程序的运行不受操作系统的任何限制,对i o 设备有完全的访问权, 能够访问任何虚地址和控制虚拟内存硬件;在用户模式下。操作系统提供某种机 制,可以限制程序的各种i o 操作,硬件也可以防止特权指令的执行,并进行内 存和i o 空间检查( 关于这两种模式的运行过程涉及到操作系统核心和微处理器 构架,是一个大得多的话题,在此不作讨论) 。 w d m 驱动程序模型分两个方面,除了核心模式描述设备驱动程序的标准结 构外,w d m 还为常见类型的设备实现了一个模块化的、分层次类型的总线驱动 程序和类驱动程序。总线驱动程序实现了支持u s b 、i e e e l 3 9 4 协议等。类驱动 程序是为实现标准w i n d o w s 功能提供条件、舳m 对标准类接口的支持减少了 w i n d o w s9 8 和g r m d o w sn t 所需的设备驱动程序的数量和复杂性。 以往在w i n d o w s9 8 和w i n d o w sn t 两个平台上分别运行时需要为同一个设 备编写两个截然不同的驱动程序,但w d m 是跨平台的,因而只需要编写一个 w d m 驱动程序就可以了。 w d m 驱动程序是分层的,即不同层上的驱动程序有着不同的优先级,这使 得i o 请求进程更加明了,而w i n d o w $ 9 x 下的v x d 则没有此结构( 如图3 一l 所示) 。 w d m 引入了功能设备对象f d o ( f u n c t i o n a ld e v i c eo b j e c t 与物理设备对 象p d o ( p h 3 ,s i c a ld e v i c eo b j e c t ) 两个新类来描述硬件,一个p d o 对应一个实 际硬件。一个硬件只允许有一个p d o ,却可以拥有多个f d o ,在驱动程序中直 接操作的不是硬件而是相应的p d o 与f d o 。在用户态和内核态通信方面,系统 为每一个用户请求打包形成一个i r p 结构,将其发送至驱动程序,并通过识别 i r p 中的p d o 来区别是发送给哪一个设备的。另外,在驱动程序的加载方面, w d m 不通过驱动程序名称识别,而是通过一个1 2 8 位的全局唯一标识符g u i d 来实现驱动程序的识别i i “。 u s b 总线接口技术及应用研究 图3 一lw d m 中设备对象和驱动程序的层次结构 在w d m 驱动程序的工作方式和其他模式的驱动程序模型有很多差别。在 w d m 驱动程序中,即插即用( p i l p ) 管理器告知何时向操作系统添加或删除一 个设备。它使用操作系统安装的i n f 文件查找新设备的正确驱动程序,并按照驱 动程序的要求创建设备对象堆栈,而其它模式驱动程序必须发现它自己的设备, 使用专门的安装程序安装;另外在细节上也存在很多区别。其它模式驱动程序参 数一般由注册表提供,在d r i v e r e n t r y 里调用读注册表的函数,然后根据注册表 再调用c r e a t e d e v i c e 创建设备,但是w d m 一般不是这样,在加载的时候p n p 管理器调用a d d d e v i c e 入口点创建设备,一般在d r i v e r e n t r y 里创建的是一个与 设备或者对象毫无关系的虚拟设备,用于管理与w i n 3 2 的通讯;另外整个设备 驱动树也发生了改变,从而使安装程序发生了很大的改变。w d m 本身的p n p 管 理器被抽象地提升到了r o o t 的地位,负责所有的总线驱动程序的加载。总线 驱动程序则负责遍历所有位于总线上的设备,并且为每个设备创建相应的设备对 象i s 。 一个完整的驱动程序要完成以下工作:初始化;创建与删除设备:处理应用 层程序的打开和关闭句柄的请求;处理应用层程序的输入聿自出请求:串行化对 设备的访问;访问硬件:调用其他驱动程序:取消y o 请求;超时i o 请求:处 理可热插拔设备的加入和删除事件;电源管理和w m i 。 3 2u s b 主机驱动程序体系结构 作为一种符合w d m 的驱动程序,u s b 总线驱动程序软件堆栈内的层问通 信也使用i r p ( i o 请求包) 的机制。但实际的u s b 驱动程序使用u r b ( u s b i l 南京航空航天大学硕士学位论文 请求块) 结构向其硬件设备发送请求。u s b 驱动程序高度依赖其总线驱动程序 ( u s b d s y s ) ,而不直接使用硬件抽象层( h a l ) 函数与硬件通信,这是u s b 驱 动程序的显著特点,它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论