usb设备的从动端分析与应用设计—固件程序设计_第1页
usb设备的从动端分析与应用设计—固件程序设计_第2页
usb设备的从动端分析与应用设计—固件程序设计_第3页
usb设备的从动端分析与应用设计—固件程序设计_第4页
usb设备的从动端分析与应用设计—固件程序设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业论文论文题目: USB设备的从动端分析与应用设计 固件程序设计 学 院: 计算机科学技术学院 最新 精品 Word 欢送下载 可修改摘 要 USBUniversal Serial Bus通用串行总线)是计算机领域中一种全新的工业标准,其技术和产品正在迅猛的开展中。因此,研究USB总线的体系架构和开发技术很有必要。本文在实验室现有硬件和软件根底上,研究了USB的接口标准和软硬件开发方法,并应用于实际,设计出了用USB实现的温度采集系统。 本文围绕设计目标,在简要表达USB1.1总线协议的根底上,主要论述了两个方面的内容:固件程序的开发和DS1620的使用方法。设备以AT89S52单片机作为控

2、制器,Philips公司的PDIUSBD12作USB收发器,用DALLAS公司的DS1620进行温度采集,采用中断数据传输方式实现数据传输。关 键 词USB;WDM; PDIUSBD12;温度采集; DS1620 ABSTRACTUSBUniversal Serial Bus) is a completely new industry standard in the field of computer. Its technology and product are tremendously developing. Therefore, It is necessary to research t

3、he frame and developing technology of USB. Based on the hardware and software that our laboratory is having, this paper researches the interface standard and software-hardware developing methods of USB, apply it into the actual environment, and designed the temperature collection system.Centering on

4、 the designing object, outlining the USB 1.1 protocol, this paper mainly expound two aspects of content: the developing of firmware program and employment of DS1620. Using AT89S52 as control appliance, PDIUSBD12 of Philips Corp. as USB receiving-transmitting appliance, the device collect temperature

5、 with DS1620 of DALLAS Corp., and adopt interrupt data transmitting to realize data transition. Key wordsUSB;WDM; PDIUSBD12;temperature collection; DS1620USB设备的从动端分析与应用设计固件程序设计目 录摘 要iABSTRACTii前 言1一、 本文研究的主要内容1二、 USB开展情况1三、 USB的设计目标2四、 USB的性能特点2四、 USB系统组成3一 USB的互连3二 USB设备4三 USB主机5第一章 USB数据传输协议6一、 US

6、B电气特征及电平信号6二、 USB数据流模型7一 USB主机/设备分层模型7二 端点8三 管道9三 传输类型9三、 USB协议层11一 字段格式11二 包格式14三 事务格式15第二章 USB驱动程序概述17一、 WDM驱动程序模型简介17二、 USB主机驱动程序体系结构19一 主机控制器驱动程序HCD19二 USB总线驱动程序USBD20第三章 USB设备简介22一、 硬件结构22一 带USB接口的单片机23二、 PDIUSBD12通用USB收发器24一 PDIUSBD12的性能特点24二 PDIUSBD12的功能框图24三 D12引脚配置及说明26三、 D12 USB固件编程概要26一 各

7、端点在固件中的使用26二 USB设备枚举的数据传输过程28第四章 DS1620数字式温度传感器30一、 特性30二、 DS1620的3线通信模式30第五章 固件程序设计32一、 设计思路32二、 固件编程的实现概括和流程图34一 硬件提取层EPPHAL.C35二PDIUSBD12命令接口D12CI.C35三 中断效劳程序ISR.C35四 协议层CHAP_9.C,PROTODMA.C39五 标准设备请求处理CHAP_9.C39六 厂商请求处理PROTODMA.C41七 主循环MAINLOOP.C42结 论43致 谢44参考文献45 USB从动端分析与设计固件程序设计前 言一、 本文研究的主要内容

8、 USB总线在各个领域中迅速得到应用,以取代老式的RS-232以及EPP并口等总线,研究USB总线有重要的实用价值。 然而,接口的简单意味着协议的复杂,怎样在现有的实验条件下快速的使用USB总线开发应用设备便成了我们的研究目标。 在仔细分析了现有设备和源代码的根底上,我们设计实现了一个采用USB总线实现的温度采集设备, 在下位机我们使用了DS1620数字式温度传感器,并在上位机设计了客户效劳程序,DS1620定时对室温进行采集,可以实时监视室内温度。关键的一点是,其接口使用了USB进行实现,可以适应未来机器多使用USB总线的需求。 由于本系统对数据传输的速度没有太过苛刻的要求,因此我们使用了U

9、SB总线的控制传输方式。二、 USB开展情况 USB全称为Universal Serial Bus通用串行总线),是1994年底由IBM、Intel、Compaq、DEC、Microsoft、NEC和Northern Telecom共同开发的PC外设接口标准,由于其具有使用方便及本钱低廉等优点,迅速得到业界的强力支持,目前己经成为主流的总线标准,2022年USB设备出货量已超过3亿台。 USB广泛应用于传统PC外设,如鼠标、键盘、显示器等,移动存储设备如移动硬盘、闪存盘等,以及新兴的消费类电子,如MP3播放器、数码相机、移动 等。同时其应用范围也在不断扩大,工业自动化仪器仪表正在成为USB应用

10、的热点之一。 USB最初推出的是1.X版本,其总线传输速度较低,为12Mbps,1998年推出了USB2.0,将数据传输速度提高到了480Mbps,在保持了USBI .1的优点的根底上,保证了向下兼容性,可以完全支持各种USB 1.x的产品。USB2.O满足了高端应用对总线带宽的需求,从2021年下半年起,采用USB2.O的设备开始大规模出现,预计2021年USB2.O整体出货量将超过3亿台,超过USB1.1的出货量。 随着USB设备的迅速增加,设备与设备之间的直接数据传输变得越来越迫切,USB OTGON THE GO)技术应运而生了,它于2022年12月底制定,赋予了设备双重身份,即既可以

11、作为主机,又可以作为设备,其实质是在设备中增加了一个嵌入式计算机来执行主机任务。这一技术使USB设备摆脱了对PC的依赖,大大扩展了USB的应用范围,并结合USB2.0高速传输技术,严重威胁到IEEE1394的市场。三、 USB的设计目标 USB的设计有三大目标: 1计算机与 之间的连接:对声音音频和压缩视频等实时数据给予充分支持,可以广泛地连接计算机和 ,这一应用目标到目前为完全实现。 2)易用性:强调即插即用、总线供电等特性,以方便用户使用。 3端口扩充:提供快速、双向、统一且价格低廉的串行接口,可以满足PC机开展的现在和未来的需要。 从中我们可以看出,USB标准的制定从市场出发,立足于满足

12、用户的实际应用需求,尽管它的性能指标并不突出,但正是这一点使得它获得了极大的成功。四、 USB的性能特点1 终端用户的易用性: ·为连接电缆和连接头提供了单一模型; ·电气特性与用户无关; ·自我检测外设,自动地进行设备驱动设置; ·可动态连接,动态重置外设。 2 广泛的应用性: ·适应不同设备,提供低速传输1.5Mbps和全速传输12Mbps ; ·支持对多个设备的同时操作; ·可同时操作127个物理设备; ·在主机和设备之间可以传输多个数据和信息流; ·支持多功能的设备; ·利用低层协议,提

13、高了总线利用率。 3 同步传输带宽: ·确定的带宽和低延迟适合 系统和音频的应用; ·同步工作可以利用整个总线带宽。 4 灵活性: ·可以选择一系列大小的数据包,允许对设备缓冲器大小进行选择; ·通过指定数据缓冲区大小和执行时间,支持各种数据传输率; ·通过协议对数据流进行缓冲处理。 5 健壮性: ·出错处理/过失恢复机制在协议中使用; ·对用户的感觉而言,热插拔是完全实时的; ·可以对有缺陷设备进行认定。 6 与PC产业的一致性: ·协议的易实现性和完整性; ·与PC机的即插即用的体系结构的一

14、致; ·对现存操作系统接口的良好衔接。 7 本钱低廉 ·以低廉的价格提供1.5兆比特率的子通道设施; ·将外设和主机硬件进行了最优化的集成; ·促进了低价格的外设的开展; ·廉价的电缆和连接头; ·运用了商业技术。四、 USB系统组成一个USB系统被定义为三个局部:USB的互连、USB设备和USB主机。一 USB的互连 USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面: · 总线的拓扑结构:指明了USB设备与主机之间的连接方式; · 数据流模式:描述了数据在系统中通过USB从产生到使用方

15、的流动方式; · USB的调度:USB提供多个设备共享的连接,对USB设备必须进行调度以分配带宽。图1(a) USB物理连接逻辑设备 主机逻辑设备 逻辑设备逻辑设备 逻辑设备图1b USB逻辑连接USB物理互连方式如图1a 所示,是一种星形级连结构。集线器Hub位于每级星形的中心。这种集线器级连的方式使得外设的扩展很容易USB协议规定最多允许5级集线器进行级连;USB逻辑互连方式如图1b所示,各个设备好象是与主机直接相连的,它们之间的通信不用关心物理连接方式。 数据流模式对于USB设备的实现是最关键的,我们将在下一章对其单独进行描述。USB的调度是针对多个设备互连的,不属于功能设备开

16、发者需要关心的内容,在此不作描述。二 USB设备 USB设备包括USB集线器和功能设备Function两大类。它们都必须有标准的USB接口,符合USB协议,支持标准的USB操作如配置,复位等。它们的描述信息也必须具有USB协议定义的标准格式。集线器为USB总线提供扩展和连接;功能设备是具有一定特殊应用功能的设备,它能发送数据到主机,也可以接收来自主机的数据和控制信息。三 USB主机USB主机是USB系统的核心。在一个USB系统中只有一台主机。主机的USB接口称为USB控制器,通过它主机和外围USB设备进行通信。在主机中还集成了一个根集线器Root Hub用于直接与外设相连或与一般USB Hub

17、级连。主机所具有的功能包括:检测USB设备的插入和拔出;管理主机与设备之间的数据流,对设备进行必要的控制;收集各种状态信息;对插入的设备供电。第一章 USB数据传输协议一、 USB电气特征及电平信号 USB采用四线电缆,由电源线Vbus 、地线GND和两根数据线D和D组成,如图1-1所示。数据线传输差模信号,以降低噪声干扰。可以看出,任何时刻USB总线上最多只能有一位数据在传输,所以USB是一种完全按照时序进行控制和数据传输的总线。图1-1 USB电缆结构USB具有差分NRZI不归零倒置代码格式。在这种NRZI波形中,d n-1位和d n位之间如果有状态变化称为过渡,就被解码为一个二进制bn

18、=0的数据位,没有过渡就被解码为一个二进制b n =1的数据位,如图1-2所示。图12 NRZI数据编码 为了确保信号发送的准确性,当在USB上发送一个包时,传输设备就要进行位插入操作。所谓位插入操作是指在数据被编码前,在数据流中每六个连续的 1后插入一个0,从而强迫NRZI码发生变化,位插入操作由传输端强制执行,任何数据都将被执行位插入操作,如图1-3所示。接收端必须能对NRZI数据进行解码,识别插入位并去掉它们。 图13 位插入数据编码序列 原始数据 位插入数据 同步块 数据包NRZI编码后的数据位插入 在全速传输中,数据K态表示差分1,数据J态表示差分O,而在低速传输中那么正好相反。二、

19、 USB数据流模型 本数据流模型完全引自参考文献,以下不再标注。一 USB主机/设备分层模型 数据流发生在主机和USB设备之间,我们以常用的分层模型介绍USB系统的数据流,如图14所示。它能使不同层次的实现者只关心USB相关层次的特定功能细节,而不必掌握从硬件结构到软件系统的所有细节,因此,不同层次的实现者其开发工作量将会有极大的不同。 主机分客户软件层,USB系统软件层和USB主机控制器。设备分USB总线接口层,USB设备层和功能层。USB系统软件是指在某一操作系统上支持USB的软件,它独立于USB设备和客户软件;USB主机控制器是主机方的USB接口,它是软硬件的总和。从图14上我们可以看出

20、,USB总线接口层提供主机和设备之间物理的连接,而从逻辑上看,USB设备层与USB系统软件层对应,它们完成USB设备一些根本的、共有的工作;功能层和客户软件层通信,它们实现单个USB设备特有的功能。在编程时,客户软件通过USB系统软件提供的编程接口操作对应的设备,而不是直接通过操作内存或I/O口来实现,这一点是USB和PCI总线的显著差异。所有USB设备只有在被主机成认并配置后才可进入系统工作,它们实现的功能不同,但对主机都提供一个同样的接口。 在系统软件层和USB设备层之间有一条缺省管道,主机与设备的端点O通信,用于实现一些USB设备的根本控制功能。在客户软件层和功能层有多组通信管道,它们实

21、现USB设备的特定通信功能。我们所述的这些通信都是从逻辑上分析的,实际的信号的物理流程如图14所示,以信号从主机流向设备为例:客户软件经USBD传输给系统软件的数据是不具有USB通信格式的数据。系统软件对这些数据分帧,实现带宽分配策略,然后交给USB主机控制器。主机控制器对数据按USB格式打包,实现传输事务,再经串行接口引擎SIE后将数据最终转化为符合USB电气特征的差分码从USB电缆发往设备。数据到达设备后是一个逆过程,在设备层中将数据解码,发往不同端点的数据包被分开并正确排列,帧结构被撤除,数据成为非USB格式的,最后数据送往各端点,完成通讯。在主机方我们还发现有HCD和USBD两个接口层

22、。HCD的全称为主机控制驱动Host Control Driver,它是对主机控制器硬件的一个抽象,提供和USB系统软件之间的软件接口。不同种PC的主机控制器硬件实现并不一样,但有了HCD,USB系统软件就可以不必理会各种HCD具有何种资源,数据如何打包等问题。尤其是HCD隐藏了怎样实现根集线器的细节,这有利于USBD的简化。二 端点端点在硬件上就是一个有一定深度的先入先出堆栈FIFO。主机和设备的通信最终作用于设备上的各个端点。每一个USB设备都有一组互相独立的端点。每一个设备都有一个由主机分配的唯一的地址,而各个设备上的端点都有由设备确定的端点号Endpoint Number和通信方向。每

23、个端点只支持单向通信:它要么是输入Input端点,数据流方向从设备到主机;要么是输出Output端点,数据流方向从主机到设备。设备地址、端点号和通信方向三者结合起来就唯一确定了一个端点。在设备配置时,它必须报告主机它的各个端点的特性,包括端点号,通信方向,端点支持的最大包大小,带宽要求以及支持的通信方式等。其中端点支持的最大包大小称为数据有效负载,是个重要的概念。端点O比拟特殊,它实际是由输入和输出两个端点组成。每个设备都必须有端点0,主机和它建立缺省控制管道,用于设备枚举和实现对设备的一些根本的控制功能。除了端点0,其余的端点在设备配置之前是不能和主机通信的。只有设备在它的配置描述符中向主机

24、报告了这些端点及其特性,并由主机确认后,这些端点才被激活。三 管道 管道Pipe是设备上端点和主机上的客户软件的连接。因此,每条管道和端点的特性有直接关系,它只能支持一种通信方式。客户软件通常通过向主机的操作系统发I/O请求包IRP来要求和某一条管道进行数据传输,而后它进行等待,直到系统通知它传输成功或失败。USB协议规定了流管道Stream Pipe和消息管道Message Pipe两种管道,其中消息管道有定义的结构。缺省控制管道属于消息管道。1 流管道流管道中的数据是流的形式,也就是该数据的内容不具有USB要求的结构。数据从流管道一端流进的顺序与它们从流管道另一端流出时的顺序是一样的,流管

25、道中的信息流总是单方向的,或者流进,或者流出。流管道支持同步传输,中断传输和批传输,这些在稍后将作进一步解释。2 消息管道 消息管道与端点的关系同流管道不同,它的数据格式由USB协议规定。首先,主机向USB设备发出一个请求;接着,就是数据的传输;最后,是一个状态阶段。为了能够容纳请求/数据/状态的变化,消息管道要求数据有一个格式该格式将在第三节中详细介绍,此格式保证了命令能够被可靠地传输和确认。消息管道需要双方向的信息流,所以有两个相同号码的端点,一个用于输入,一个用于输出。两个号码必须相同。缺省控制管道就是一个消息管道。消息管道仅支持控制传输。三 传输类型 USB定义了4种传输类型:控制传输

26、、批传输、等时传输和中断传输。由于我们的应用只涉及控制传输,故只对这种传输类型作进一步的描述。 控制传输用于支持在客户软件和它的应用之间传输设置信息、命令信息、状态信息等。它由以下三个事务组成: ·建立事务:建立联系,把请求信息从主机传到它的应用设备; ·零个或多个数据传输事务:按照上一事务中指明的方向传输数据;·状态事务:将传输状态信息从应用设备传回到主机。图14 USB主机/设备数据流通信模型 USB设备必须实现缺省控制管道,并将它设置成一个消息管道。这个管道由USB系统软件使用。USB设备确实认信息、状态信息以及控制信息由该管道传输。 USB设备框架定义了标

27、准的,设备级的或由销售商提供的请求,这些请求可操作设备的状态。USB设备框架又定义了一些描述符Descriptor,用于存放USB设备的各种信息。控制机制提供访问设备描述器和请求操作设备的机制,所以使用控制传输的数据必须具有USB定义的数据格式。 应用层和相应的客户软件不能为控制传输指定总线访问频率和带宽。这由USB系统软件从全局优化角度加以决定。但不管有没有控制传输发生,系统软件至少需要将10%的带宽留给控制传输。 控制传输使用的是消息管道上的双向信息流。所以,一旦一个控制管道被建立之后,这个管道就使用具有某个端点号的两个端点,一个输入,一个输出。控制传输的数据格式将在第三节中作详细描述。

28、USB规定了控制传输所能接收或发送的最大数据净负荷区长度。高速设备定义的最大数据净负荷区长度为8、16、32或64字节,控制传输端点必须支持规定的最大长度中的一个,设备在自己的设置信息中报告该端点允许的最大净负荷区长度;低速设备的数据净负荷区的长度只能是8字节。这个规定是针对这些数据包中的数据净负荷区的,不包括包中的协议要求的额外信息。 当端点做了以下两件事时,控制传输的数据阶段可被认为结束: ·已传了由建立阶段指定的数据量。 ·传了一个数据包,它的长度为O或它的数据区长度小于最大长度。三、 USB协议层USB协议层描述了USB主机与USB设备交互时的语法和协议,从中定义了

29、字段、包、事务和传输的结构,以及由字段到包、由包到事务、由事务到传输所组成的组织层次关系。本节中我们将从底向上展示USB的数据结构。一 字段格式 数据位被发送到总线的时候,首先是最低有效位LSB,跟着是下一个最低有效位,最后是最高有效位MSB。在本文以下描述中,数据均以以下形式给出:包中单个的位和字段从左到右的顺序就是它们通过总线的顺序。1 . 同步字段任何包都是从同步SYNC字段开始的,同步字段是产生最大的过渡密度的编码序列。同步字段作为空闲状态出现在总线上,后面跟着以NRZI编码的二进制串“KJKJKJKK。通过被定义为8位长的二进制串,输入电路以本地时钟对齐输入数据。同步字段里的最后两位

30、是同步字段结束的记号,并且标志了包标识符PID的开始。2 包标识符字段 所有包的同步字段后都紧跟着包标识符PID。如图15所示,包标识符由4位的包类型字段和其后的4位的校验字段构成。包标识符指出了包的类型。包标识符的4位的校验字段可以保证包标识符译码的可靠性,这样包的余项也就能被正确地解释。包标识符的校验字段是通过对包类型字段的二进制的求反码产生的,如果4个PID检验位不是它们的各自的包标识符位的补,那么说明存在PID错。 图15 包标识符格式包标识符被分为4个编码组:标记,数据,握手和专用。如表11所示,包标识符传输的前2位PID<O:1>指出了其属于哪个组。设备通过对包标识符译

31、码来确定包的类型。3 地址字段 设备端口使用2个字段;设备地址字段和端口字段。设备对地址和端口字段都需要进行译码。任何一个字段不匹配,此标记都必须被忽略。另外,对未初始化的端口的访问将使得标记被忽略。设备地址ADDR字段通过其地址指定设备,如图16所示,ADDR<6:O>指定了总共128个地址。由定义可知,每个ADDR值都定义了单一的设备。设备在刚一复位Reset和加电Powerup的时候,其地址默认值为零,并且必须由主机在枚举过程Enumeration Process中编程。设备地址零被用作为缺省地址,不可被分配作任何别的用途。如图17所示,在设备拥有多个端口的时候通过附加的4位

32、端口ENDP字段对端口进行寻址。除了端口地址0之外,端口个数是由设备决定的。所有的设备都必须在端口O提供一个控制管道缺省控制管道。对于低速设备,每个设备最多提供3个管道:在端口0的控制管道加上2个附加管道或是2个控制管道,或是1个控制管道和1个中断端口,或是2个中断端口。全速设备可以支持最多可达16个的任何类型的端口。图16 地址字段图17 端口字段表1-1 PID 类型PID 类型PID 名PID3:0描述标记Token输出OUT输入IN帧开始SOF建立SETUP0001B1001B0101B1101B在主机到功能部件的事务中有地址+端口号在功能部件到主机的事务中有地址+端口号帧开始标记和帧

33、号在主机到功能部件建立一个控制管道的事务中有地址+端口号数据DATA数据0DATA0数据1DATA10011B1011B偶数据包PID奇数据包PID握手Handshake确认ACK不确认NAK停止STALL0010B1010B1110B接收器收到无措数据包;接收设备部不能接收数据,或发送设备不能发送数据;端口挂起,或一个控制管道请求不被支持。专用Special前同步PRE1100B主机发送的前同步字。翻开到低速设备的下行总线通信。4 帧号字段帧号字段是一个11位的字段,主机每过一帧就将其内容加一。帧号字段到达其最大值7FFH时归零,且它仅每个帧最初时刻在SOF标记中被发送,可以用来统计数据传输

34、情况。 5 数据字段 包含数据字段的数据包大小随着传输类型而变化,但所包含的数据必须是整数个字节。图18为多字节显示格式。每个字节的范围内的数据位移出时都是最低位LSB在前。图18 数据字段格式6 循环冗余校验循环冗余校验CRC被用来在标记和数据包中保护所有的非PID字段。二 包格式1 标记包 图19显示了标记包的字段格式。标记由PID,ADDR和ENDP构成,其中PID指定了包是输入,输出还是建立类型,输入PID定义了从设备到主机的数据事务,输出和建立PID定义了从主机到设备的数据事务;对于输出和建立事务,地址和端口字段唯一地确定了接下来将收到数据包的端口,对于输入事务的,这些字段唯一地确定

35、了哪个端口应该传输数据包。只有主机能发出标记包。图19 标记包格式 如图19所示,标记包包括了覆盖地址和端口字段的5位CRC。CRC并不覆盖PID,因为它有自己的校验字段。标记和帧开始SOF包是由3个字节的包字段数据后面的包结束EOP,End of Packet界定的。如果包被译码为合法标记或SOF,但却没有在3个字节之后以EOP终止,那么它被认为是无效的,并被接收器忽略。 2 帧开始SOF包主机以每毫秒一次的额定速率发出帧开始SOF包。如图110中所示,SOF包是由指示包类型的PID和其后的11位的帧号字段构成。图110 帧开始包 3 数据包 如图111所示,数据包由PID,包括至少O个字节

36、数据的数据区和CRC构成。有两种类型的数据包,根据不同的PID:DATA0和DATA1来识别。两种数据包PID是为了支持数据切换同步而定义的。数据必须以整数的字节数发出。数据CRC仅通过对包中的数据字段计算而得到,而不包括PID,它有自己的校验字段。图111 数据包格式4 握手包 如图112所示,握手包仅由PID构成,用来报告数据事务的状态,以及在数据事务中表示数据成功接收,命令的接收或拒绝,流控制和停止条件。只有支持流控制的事务类型才能返回握手信号。握手总是在事务的握手阶段中被返回,也可在数据阶段代替数据被返回。握手包由1个字节的包字段后的EOP确定界限。图112 握手包三 事务格式 事务格

37、式根据端口类型而变化。有4种端口类型:批处理Bulk、控制Control、中断Interrupt和同步Isochronous。本文仅描述应用所涉及到的控制端口类型。 一个典型的控制传输需要3种不同的事务:建立、数据和状态事务。图115显示了三种不同的控制传输事务序列,控制读和写相似,由建立、数据和状态事务组成。在某些情况下,也可以有无数据事务阶段的控制传输,它仅由建立和状态阶段构成。图115 控制传输事务序列 建立事务用于向功能部件的控制端口传输信息。图116说明了建立事务的格式。建立包总是在建立事务的数据阶段上使用DATA0 PID。收到建立包的设备必须接收建立数据并用ACK应答,如果数据被

38、损坏,那么丢弃数据且不返回握手。 控制传输的数据事务发生在建立事务阶段之后,由一个以上的输入或输出事务构成。所有的数据事务阶段里的事务都必须有相同的方向即全部输入或者全部输出。在数据阶段中要发送的数据的数量和其方向在建立事务里被指定。如果数据的数量超过了先前确定的数据包大小,数据在支持最大的包大小的多个事务中被发送输入或者输出。任何剩下的数据都作为剩余在最后的事务中被发送。状态事务是控制传输的最后一个事务阶段,报告整个控制传输的结果是成功还是失败。如果成功,那么状态事务中返回零长度数据包即只有PID和CRC校验位;如果失败,那么对于控制写,设备在数据包阶段就返回NAK或者STALL,此时主机不

39、再返回交换包;对于控制读,主机依然发送一个零长度数据包,设备返回NAK或者STALL。状态事务的方向是以相对前面的事务阶段的数据流方向来确定的,并且总是使用DATA1 PID。图116 建立事务结构第二章 USB驱动程序概述本章首先简要介绍了USB驱动程序的Win32程序模型WDM,然后介绍了USB主机体系结构,最后详细介绍了本设计的驱动程序及应用程序的编写。一、 WDM驱动程序模型简介 随着Windows98和Windows20OO成为主流操作系统,windows驱动程序模型WDM取代了原先的VxD技术,成为设备驱动程序的主流模式。WDM提供灵活的方式,简化了驱动程序的开发,并能够对USB、

40、IEEE 1394、PCI等新硬件标准提供充分支持,并增强了驱动程序的可靠性和可维护性。 WDM有两种运行模式,即内核Kernel模式和用户User模式。在内核模式下,程序的运行不受操作系统的任何限制,对I/O设备有完全的访问权,能够访问任何虚地址和控制虚拟内存硬件;在用户模式下,操作系统提供某种机制,可以限制程序的各种I/O操作,硬件也可以防止特权指令的执行,并进行内存和I/O空间检查关于这两种模式的运行过程涉及到操作系统核心和微处理器构架,是一个大得多的话题,在此不作讨论。 WDM驱动程序模型分两个方面,除了核心模式描述设备驱动程序的标准结构外,WDM还为常见类型的设备实现了一个模块化的、

41、分层次类型的总线驱动程序和类驱动程序。总线驱动程序实现了支持USB、IEEE1394协议等。类驱动程序是为实现标准Windows功能提供条件。WDM对标准类接口的支持减少了Windows 98和Windows NT所需的设备驱动程序的数量和复杂性。 以往在Windows98和Windows NT两个平台上分别运行时需要为同一个设备编写两个截然不同的驱动程序,但WDM是跨平台的,因而只需要编写一个WDM驱动程序就可以了。 WDM驱动程序是分层的,即不同层上的驱动程序有着不同的优先级,这使得I/0请求进程更加明了,而Windows 9x下的VxD那么没有此结构如图2l所示。 WDM引入了功能设备对

42、象FDOFunctional Device Object与物理设备对象PDOPhysical Device Object两个新类来描述硬件,一个PDO对应一个实际硬件。一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO与FDO。在用户态和内核态通信方面,系统为每一个用户请求打包形成一个IRP结构,将其发送至驱动程序,并通过识别IRP中的PDO来区别是发送给哪一个设备的。另外,在驱动程序的加载方面,WDM不通过驱动程序名称识别,而是通过一个128位的全局唯一标识符GUID来实现驱动程序的识别。FIDOFDOFIDOPDO上层过滤器驱动程序功能驱动程序

43、下层过滤器驱动程序总线驱动程序IRP图21 WDM中设备对象和驱动程序的层次结构 在WDM驱动程序的工作方式和其他模式的驱动程序模型有很多差异。在WDM驱动程序中,即插即用PnP管理器告知何时向操作系统添加或删除一个设备。它使用操作系统安装的INF文件查找新设备的正确驱动程序,并按照驱动程序的要求创立设备对象堆栈,而其它模式驱动程序必须发现它自己的设备,使用专门的安装程序安装;另外在细节上也存在很多区别,其它模式驱动程序参数一般由注册表提供,在DriverEntry里调用读注册表的函数,然后根据注册表再调用CreateDevice创立设备,但是WDM一般不是这样,在加载的时候PnP管理器调用A

44、ddDevice入口点创立设备,一般在DriverEntry里创立的是一个与设备或者对象毫无关系的虚拟设备,用于管理与Win32的通讯;另外整个设备驱动树也发生了改变,从而使安装程序发生了很大的改变。WDM本身的PnP管理器被抽象地提升到了ROOT的地位,负责所有的总线驱动程序的加载。总线驱动程序那么负责遍历所有位于总线上的设备,并且为每个设备创立相应的设备对象。 一个完整的驱动程序要完成以下工作:初始化、创立与删除设备、处理应用层程序的翻开和关闭句柄的请求、处理应用层程序的输入/输出请求、串行化对设备的访问、访问硬件、调用其他驱动程序、取消I/O请求、超时I/O请求、处理可热插拔设备的参加和

45、删除事件、电源管理和WMI。二、 USB主机驱动程序体系结构 作为一种符合WDM的驱动程序,USB总线驱动程序软件堆栈内的层间通信也使用IRPl/O请求包的机制。但实际的USB驱动程序使用URBUSB请求块结构向其硬件设备发送请求。USB驱动程序高度依赖其总线驱动程序USBD.SYS,而不直接使用硬件抽象层HAL函数与硬件通信,这是USB驱动程序的显著特点,它提高了系统的可靠性和可维护性。 USB总线主机通过主机控制器与USB设备进行交互。Windows对构成一个USB总线主机的不同软件局部进行了明确的划分,如图22所示,其中USB客户软件包含了不同总线设备的设各驱动程序,它通过Windows

46、提供的USB总线接口与根集线器驱动程序进行通信,而根集线器驱动程序那么要通过通用串行总线驱动程序接口USBDI来实现与通用串行总线驱动程序USBD的通信客户也可以通过USBDI直接同USBD交互。然后,USBD会选择两种主控制器驱动HCD方式之一来同其下方的主控制器通信。最后,主控制器会直接实现对USB物理层总线的访问。HCD与USBD提供了基于不同抽象层次的USB软件接口,它们协同工作,共同完成USB总线系统能够的功能。HCD提供抽象的主机控制器,对主机控制器所见到的USB总线系统的数据传输进行了抽象:USBD提供抽象的设备,对USB客户软件和总线外部设备之间的数据传输进行了抽象。USB总线

47、系统模型简化了USBD客户和与USB总线设备之间的数据传输过程,并且该模型可以看作是面向USB总线接口对USB总线设备进行控制的入口。它们均由操作系统提供并维护,对于客户软件是不透明的。一 主机控制器驱动程序HCD HCD提供软件界面HCDIHCD Interface对主机控制器实现必要的抽象,以隐藏主机控制器硬件的实现细节,为上层的USB驱动程序提供统一的接口。HCD是USB总线的最底层,USBD将客户的请求映射到相关的HCD,由HCD转交给主机控制器硬件执行。主机控制器提供一条高速的数据存取物理总线,它负责所有USB物理层的总线操作,主要有:状态控制、串行化和反串行化、帧产生、过失控制和数

48、据传输等。图22 USB驱动程序体系结构 如图22所示,UHCD和OpenHCI是为不同的USB总线设备供给商提出的用于管理系统中的USB总线主控制器的两种接口,Windows提供了对这两种接口的支持,设备供给商可以根据情况选择实现其中的一种,Windows在USB总线和主机控制器之间放置了一个PCI总线枚举器,它负责在检测到系统中存在一个通用串行总线时,装载适当的USB总线系统软件。二 USB总线驱动程序USBD 正如我们前面介绍的,USBD是USB系统软件中最关键的一层,它负责控制全部USB协议的操作和中断处理控制。主要功能有:设备设置、资源管理、数据传输管道层次以及公共数据定义等。 US

49、BD为客户软件设备驱动程序提供了访问设备的一组接口,客户软件只能通过它来访问USB总线,对客户软件而言,它就是USB总线的底层。USBD的具体实现基于不同的操作系统会有所不同,图23给出了USBD的总体框架。 USBD的客户直接对设备发出命令或从管道直接输入输出数据流,USBD为客户提供两种机制:命令机制和管道机制。命令机制允许客户设置和控制USBD的操作以及USB总线设备,并提供对设备标准管道的所有访问。管道机制那么允许USBD客户管理特定设备的数据和控制数据的传输。1 USBD管道机制 管道是设备和主机之间的逻辑连接,一个管道属于且只属于一个客户,在USBD中,管道有两种:标准管道和客户管

50、道。标准管道用于完成一些客户通过命令接口所传递的请求,如设置设备的地址等,但USBD不允许客户直接访问设备的标准管道。客户管道那么由客户进行管理,并提供相应的数据缓冲区。可以看出,管道机制比命令机制所提供的数据传输效劳更直接,因而数据传输效率更高。 2 USBD命令机制USBD命令机制允许客户以读写的方式对设备的数据及其控制局部进行访问,客户所要做的,仅仅是向USBD提供设备的地址及相关的数据缓冲区的指针。命令机制所提供的功能主要是USB总线管理相关的内容,如设备设置管理、设备数据访问、总线设备管理以及电流分配等。第三章 USB设备简介 本章是整个USB设备开发中的核心局部,简要介绍了设备开发

51、所使用的PDIUSBD12接口芯片,对本设计的硬件实现和设备固件编写作了详细介绍。一、 硬件结构USB设备硬件设计的核心是USB控制器,在进行一个具体的USB设备开发之前,首先要根据具体使用要求选择适宜的USB控制器,设备的设计将围绕该控制器展开。目前,市场上供给的USB控制器主要分为两类:专用USB控制器和通用USB控制器。通用USB控制器实现根本的USB协议,并且为用户预留多个多功能端点,可以满足不同的应用要求,因此,我们选择了后一种。通用USB控制器按照结构又细分为带USB接口的单片机MCU和通用USB收发器两种。 效劳 通道接口 命令接口信息和流通道配置管理设备数据访问总线设备管理能量

52、控制主机控制器驱动主机控制器驱动主机控制器主机控制器图23 USBD结构 一 带USB接口的单片机主要有INTEL的8X930系列,CYPRESS公司的EZUSB,以及MOTOROLA公司的MC68HC908JB8系列等。这种方案的最大优点在于开发难度较小,因为大多数这样的单片机都是基于8051结构或者其他常见的结构,同时均有完备的开发辅助文档和代码实例,但是其开发一般需要专用的仿真器,并且对于简单或低本钱系统,价格高将会是最大的障碍。 二 通用USB收发器 通用USB收发器仅处理USB总线相关事务,必须有一个外部微处理器来进行协议处理和数据交换。这种方案的主要特点是本钱低、接口形式多样、可靠

53、性高,具有很高的灵活性,尤其适合于产品的改型设计,缺点是开发者需要非常熟悉USB的协议,以处理USB总线事务,同时要用微处理器控制收发器的工作。 考虑到实验室具体情况,我们选择了通用USB收发器。 USB硬件结构相当简单,如图31所示,它由以下三局部组成:USB收发器、微处理器和存储器。它们构成了一个USB数据传输的最小系统。其功能为:USB收发器负责处理所有与USB总线事务有关的任务,如总线唤醒、数据接收/发送、打包、CRC校验等,但该收发器不负责解释这些数据的意义;微处理器负责处理数据、响应主机请求、以及控制USB收发器的工作;存储器负责存储和提供数据。二、 PDIUSBD12通用USB收发器一 PDIUSBD12的性能特点 PDIUSBD12以下简称D12是PHILIPS公司推出的符合USB1.l标准的通用收发器,内部有6个端点,除了默认控制端点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论