USB总线五篇

2024-05-25

USB总线 篇1

ISA总线是工业标准总线架构,在工控领域中历史悠久,是最早的系统级总线。ISA总线有时也称作I/O设备总线,可用来连接低速I/O设备。ISA总线作为工业总线的标准架构虽然如今在商业机中被后来的PCI总线挤出了历史舞台,但是由于利用ISA总线可以很方便地扩展中低速的I/O端口,因此在工业控制计算机中都保留了ISA总线。

USB总线协议从1995年11月由Intel和Microsoft公司倡导发起后,得到了迅速的发展,从最初的0.7到现在普遍使用的2.0版本,USB以其优越的热插拔特性得到了广泛的应用,USB总线取代传统的老式接口必将成为一种趋势。

市场上虽然出现了很多USB总线到其它总线转接的转换板,但是还没有出现USB总线到ISA总线转接的转接板,这正是本文研究的重点。

2. USB总线介绍

一个基于计算机的USB系统可以在系统层次上分为三个部分:USB主机、USB设备、USB互联。通用串行总线通常被称作USB总线,USB是Universal Serial Bus的简称。USB总线是连接外部设备的一个串口总线标准,它可以同时处理计算机与具有USB接口的多种外设之间的通信。

USB总线是通过总线枚举来识别设备的接入和移除的。一般而言总线枚举是指对总线上接入的USB设备进行识别和寻址操作。对许多总线而言,这一工作都是在启动时完成的,并且所搜集的信息都是静态的,而USB技术则允许在任何时候从USB总线上接入或拔除USB设备,因此USB总线的总线枚举操作是一种持续执行的工作。而且,USB总线枚举还包括发现和处理设备的移出。这是USB与以往一些总线技术的区别。

USB外设普及之后,将会使得PC机箱后面的各式各样繁杂的连接线变得简单,大多数老式的接口将被淘汰,如ISA接口、PS/2接口、串并行接口等,取而代之的是各种USB接口的外设。

3. I SA总线介绍

ISA总线最早是作为一种系统总线的,用在IBM-PC、IBM-PC/XT系列计算机当中,后来被标准化为工业总线标准,并且产生了深远的影响。由于技术的发展,ISA总线的传输速率跟不上处理器的速度,从而被其它总线所取代。然而由于ISA总线的低速使得其与现在的外设速率十分匹配,适合作为一种外围设备总线,用于扩展设备接口。并且ISA总线的地址线是非常多的,可以连接数量庞大的设备。综合这两点原因,ISA总线在工业控制领域仍然占有一席之地,并且ISA总线工业领域中的应用还会持续一段很长的时间。

ISA总线的引线分为:地址线、数据线、控制线、状态线和辅助与电源线五类。

(1)地址线:8位ISA的地址线是A0~A19,16位ISA在原来的基础上增加了LA17~LA23七根地址线。

(2)数据线:8位ISA的数据线是D0~D7,16位ISA在原来的基础上增加了D8~D15八根数据线,变成了16位的数据总线。

(3)控制线:包括中断请求线IRQ2~IRQ7;请求输入线DRQ1~DRQ3;DMA响应信号输出线;地址允许信号输出线AEN;地址锁存允许输出信号线ALE;I/O口读写输出信号线;存储器读写输出信号线;系统复位信号线等。

(4)状态线:I/O通道就绪输入信号线(I/O CH RDY),通道奇偶校验信号输入线。

(5)辅助与电源线:为总线设备提供电源。

ISA总线的这种结构使得其非常容易与单片机等控制器相连。

4. USB总线和I SA总线转接的实现

4.1 转接卡的设计原理

该转接卡利用CH375芯片完成USB设备端的设计,由CH375接收上位机传送过来的数据,再经过单片机处理后发送到ISA总线。单片机替代工控机总线控制器产生ISA总线的控制信号,并且CH375芯片屏蔽了Windows操作系统下的底层驱动;提供了上位机和下位机的接口函数以及与单片机等MCU的硬件接口。

4.2 CH375芯片介绍

CH375芯片是一个USB总线的通用接口芯片,支持USB-DEVICE/SLAVE设备方式和USB-HOST主机方式。CH375芯片在本地端提供了通用的被动并行接口和点对点的串行接口,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。它内置了USB通讯中的底层协议,屏蔽了复杂的底层驱动。CH375芯片内置了电源上电复位电路,一般情况下不需要外部提供复位。

4.3 转接卡的硬件设计

该转接板卡通过USB接头和上位计算机连接,通过ISA接口插接在下位机的ISA插槽上。图1为其PCB图。

4.4 转接卡的软件设计

本设计中上位机用户界面程序是使用VB语言来编写的。VB语言是一种比较简单的面向对象的程序设计语言。图2是主程序界面,通过不同的按钮可以选择相应的程序进行操作。

上位机程序最主要的任务是将用户想要发送给I/O设备的数据准确地发送到设备,因此要解决的问题有:要发送到哪个设备、发送什么样的数据。这两个数据在实际应用中最终是要由主控制程序来决定的。例如音乐喷泉控制系统,哪个设备要喷水,哪个灯要亮,这些都是通过主控制程序发送数据给相应的设备来实现的。

为了便于以后的调试,本文调试程序设计成这两个数据均由用户手动输入。如图3和图4所示。

5. 转接卡的具体工程应用

以音乐喷泉控制系统为例,该系统从整体上说是由上位工控机、下位工控机和被控设备组成的。如图5所示,上位机和下位机通过专用的37针连接线连接,下位机和显示卡也是通过37针连接线连接的,显示卡通过控制柜再将控制信号接到被控设备,从而实现对实际被控设备的控制。

本转接卡在原来的控制系统中的应用,只要对上位机软件控制程序稍作修改就可以使用。并且提供了上位机的接口函数,这就使得本转接卡可以很方便地应用于音乐喷泉控制系统。

6. 结束语

本转接卡也可以很方便地应用于各种工控系统,但要注意,这块转接卡只接了读写控制信号,其它控制信号没做处理,因此只适用于简单的I/O口扩展。这是考虑到现在ISA总线的作用主要就是用来做I/O口扩展的。

参考文献

[1]易先威,刘伟,何方.基于ISA总线的USB协议栈的设计与实现[A].中国科学院,2005,11.

[2]边海龙,贾少华.USB2.0设备的设计与开发[M].北京:人民邮电出版社,2004.

[3]李肇庆,廖峰,刘建存.USB接口技术[M].北京:国防工业出版社,2004.

USB总线 篇2

首先介绍一下数据总线。总线在英文中表示为“BUS”即“公共汽车”的意思, 它也发挥着“公共汽车”的作用。电子信号将乘着这些“公共汽车”到达线路上的任意一个“站点” (计算机部件) , 所以总线的实质是一类信号线的集合。作为各个系统之间传输信息的公共通道, 总线使计算机系统内的各个部件之间能够进行信息的传输、交换、共享和控制等, 并且可以很方便地实现部件的更换, 只要拔掉原来的部件安装新的就可以了。

USB总线与IEEE1394总线是当今比较流行的两类外部总线标准, 均支持外设的热插拔, 还可以为外设提供电源并且支持同步数据传输。因此, 计算机主要采用USB和IEEE1394总线来处理外部数据的输入输出, 以简化计算机外设的连接。

1 串行总线 (接口) 与并行总线 (接口) 的区别

总线数据传输采用两种方式, 分别是串行传输和并行传输。USB总线与IEEE1394总线均采用串行数据传输方式。

串行数据传输方式, 用一条数据线将数据一位位地按顺序单向发送到目的地, 所以只要一对传输线就可以实现信号传输, 适用于远距离传输, 但速度较慢。该方式主要用于计算机主机与外设之间的数据传输。

并行数据传输方式, 数据以字或字节为单位, 各位数同时传输。并行传输方式速度快, 但对于远距离且数据位数多的情况, 会导致通信线路复杂且成本提高, 适合于短距离 (小于30米) 、高速率的数据传输。打印机等计算机外设常连接于计算机的并行口。

在实际应用中并行速度优于串行速度, 但由于并行传输比串行传输使用的导线多, 导线之间的相互干扰较重, 并且串行传输方式的速度越来越快, 现在高速传输中大部分都采用串行传输方式。

2 USB数据总线标准

2.1 USB介绍

USB即通用串行总线的英文简称, 是一种通用的串行接口外部总线标准, 是康柏、DEC、IBM和Intel、微软等公司为了简化计算机与外设之间的互连而共同研究开发的一种免费的标准化接口, 主要用于实现计算机与外部设备之间的连接及通信。该接口支持即插即用和热插拔, 可以作为多达127种外设的连接标准, 是迄今为止计算机与智能外设必配的接口标准之一。

USB总线采用四根线缆, 其中两根用来传送数据, 即数据串行通道;另外两根为下游设备提供电源, 所以现在很多外部设备既可以用USB线缆充电也可以用其传送数据。USB总线会根据外设情况在两种传输模式中进行动态切换, 例如USB1.1标准对于高速且需要高带宽的外设以12Mbps (位每秒) 的最快速率全速传输数据, 而对于低速外设则以1.5Mbps的速率传输数据。

2.2 USB的发展

USB作为一种成功的通用总线标准, 从1994年问世至今已经发展到3.0版本。

2.2.1 USB1.0

USB1.0出现在1996年, 速度只有1.5Mbps;1998年升级为USB1.1, 速度提升到12Mbps, 并且成为普遍的USB规范。

2.2.2 USB2.0

USB2.0将传输速率提高到了60MB/S (字节每秒) , 完全可以满足大多数外部设备的要求。USB2.0可以使用USB1.1中定义的同种规格的电缆, 因此兼容USB1.1架构, 可以保证所有支持USB1.1的外设都可以直接应用在USB2.0接口上。USB2.0的最大传输带宽为480Mbps。

2.2.3 USB3.0

USB3.0由Intel、微软等业界巨头组成的USB3.0Promoter Group宣布制定。该规范可实现5Gbps (500Mbps) 的最大传输带宽, 但计算机内只有安装了USB3.0相关硬件后才可以使用USB3.0相关功能。USB3.0可以在限定存储速率的前提下传输大容量文件, 如传输1GB的数据只需15秒, 而USB2.0则需43秒。

2.3 USB总线接口标准的优点

USB总线接口标准之所以会大量应用, 主要源于以下优点。

2.3.1 支持热插拔

即用户在使用相关设备时, 直接将USB电缆插上使用即可, 不需要关机重启等操作。

2.3.2 携带方便

“小、轻、薄”是其特点, 方便携带。

2.3.3 标准统一

大约有127种外部设备应用USB接口标准, 可以很方便地与计算机连接。

2.3.4 可以连接多个接口

计算机上通常都会有多个USB接口, 因此可以保证同时连接多个支持USB接口标准的外部设备。

3 IEEE1394数据总线标准

3.1 简介

IEEE1394数据总线接口标准是由美国电气和电子工程学会 (IEEE) 制定的一种与平台无关的串行通信协议。IEEE1394总线传输速度快, 适合传送数字图像信号, 传输速率一般为800Mbps;支持外设的热插拔, 并可为外设提供电源, 因此成为连接外设常用的另一种数据总线。IEEE1394最早应用于家电方面, 后来逐渐被USB取代, 但由于其拥有其他接口无法超越的优点, 部分设备仍需要靠其进行传输数据, 特别是一些图像、音视频处理设备。

IEEE1394接口有6针和4针两种类型。由苹果公司最早推出的“火线”为6针, 后来Sony公司将6针接口重新定义为4针并命名为“ilink”, 但要与6针导线连接的话需要使用转换器。

6针接口中的4针用于传输数据信号, 另外两针用于向连接设备供电。作为一种串行总线, 当数据从一台设备传至另一台设备时, 若某一设备突然断电或出现故障而关闭, 都会破坏整个数据通路。因此采用一对传送电源线路的设计, 在任何状态下都能保证信号传输的连续性。

4针接口的线路只有双绞线不含电源线, 用于不需要传送电源的设备。

3.2 IEEE1394总线标准的发展

IEEE组织曾经定义了许多重要的标准, IEEE1394就是其中之一, 全称是IEEE1394 Interface。最早定义的传输速率峰值可达400MB/s, 2001年发布的IEEE1394b可达800MB/s, 如采用光纤可提高到32GB/s。由于标准的IEEE1394传输速率非常快, 可以同时传输数字视频信号及数字音频信号, 所以更多被用于视频采集卡等设备, 且在采集及回录过程中没有任何信号的损失。

3.3 IEEE1394总线的优点

IEEE1394作为计算机与视听设备相连的接口规范, 在技术方面有其独特的优点:

具有等时同步传输功能。该功能可以保证定期接收/发送一定数量的信息包, 避免数据传输过程中出现抖动, 适用于图像和音频数据流的传输。

能够实现一个信息源向多个设备的广播。每个IEEE1394总线可以支持64个节点, 一个节点可以连接63个外设。

任何一个节点都可以向其他节点进行同层对同层的异步传输, 不同速率的设备自由连接时, 传输速率将自动定位于低速设备所支持的最高速率上。

具有定时传输能力且同时支持同步传输和异步传输。同步传输适用于传送延时要求严格的视频信息流, 是最理想的多媒体设备数据传输线路;异步传输模式可在任何时候进行传输。

4 USB总线标准与IEEE1394总线标准的比较

USB总线接口标准在现阶段广泛流行, 这是由于其通用性强, 并且最新版本的USB3.0已达到500Mbps的传输速率。IEEE1394提供点对点传输, 同时支持同步和异步传输, 并且IEEE1394线缆内部采用的是比较特殊的纯净金属线材, 传输速率比其他线缆更强。

USB虽然获得普遍应用支持, 但从实际应用来看, 由于其采用菊花状结构, 带宽会平均应用到每个接口;而IEEE1394直接占用100%带宽, 实际速率超过USB2.0, 并且画面质量高。

由于计算机和主板芯片组几乎没有对IEEE1394提供支持, 因此缺少硬件厂商的支持, 普及率较低。但在某些领域, IEEE1394在未来将会取代USB总线接口的作用。

5 结语

介绍了这么多, USB和IEEE394的功能及优缺点我们也都了解了很多, 可以根据实际情况去选择合适的标准接口。USB标准的接口一般都集成在主板上, 而IEEE1394则有单独一块卡, 也有集成于主板。市面上支持IEEE1394的外设价格要比相应支持USB的贵一些, 所以一般用户可以选择集成USB接口的主板和USB外设。而需要做专业视频采集的用户, 可以单独选购IEEE1394卡, 因为集成的IEEE1394性能没有单独的好。

参考文献

[1]张大朴.IEEE1394协议及接口技术[M]西安:西安电子科技大学出版社, 2004.

USB总线 篇3

关键词:USB总线;嵌入式;虚拟仪器;设计

中图分类号:TP391.9文献标识码:A文章编号:1006-8937(2011)22-0081-01

虚拟仪器是以高性能的模块硬件为核心,以多功能的软件为辅助,共同完成测试、测量与自动化运用的工具。早期虚拟仪器缺少即插即用、热插拔功能,给用户操作带来了许多不便。经过长期研究后,专家推出了基于USB总线的嵌入式虚拟仪器,大大改变了早期仪器的功能缺陷。

1嵌入式虚拟仪器的优点

虚拟仪器有助于计算机信息的收集、处理、共享,为用户的实际操作创造了有利的条件。而基于USB总线的嵌入式虚拟仪器是传统虚拟仪器的升级产品,该仪器不仅内部结构简单,且用户操作起来更加便捷。通过性能检测后总结,嵌入式虚拟仪器具备以下优点:

①性能优。无论是哪一种虚拟仪器,其都是立足于PC技术研制出来的产品。因而,嵌入式虚拟仪器同样具备了处理器、文件I/O等功能特点,对于储存在磁盘里的数据可完成全面性的对比分析。而仪器系统更新之后,如图1,虚拟仪器技术能够测试、测量的范围更广。

②升级快。嵌入式虚拟仪器在技术运用上更加先进,用户需要优化虚拟仪器功能时,只要对计算机网络及测量硬件给予改进,则能促进虚拟仪器内部系统的升级,让仪器操控起来更加便捷。面对科学技术逐渐发展的今天,用户把嵌入式虚拟仪器结构改良则能增强测试功能。

③集成强。强大的集成性能是嵌入式虚拟仪器的另一大优势,其能够把软件、硬件集成起来,让用户的测量操作更加简单。传统虚拟仪器的集成功能弱,系统完成集成的时间较长。而嵌入式虚拟仪器的集成功能强大,配备了对应的接口后能把不同的设备集中到某一个系统中操控。

2基于USB总线的虚拟仪器设计

目前,设计计算机用户的数量大幅度增加,虚拟仪器测试的对象也更多。考虑到保证虚拟仪器功能的正常发挥,对传统虚拟仪器进行技术改造是不可缺少的。USB技术、虚拟仪器技术两者互相融合,推动了计算机仪表产品的更新。基于USB总线的嵌入式虚拟仪器具备操控简单、高效传输、连接方便等优点。根据笔者工作经验,此种虚拟仪器的设计内容包括:

①系统设计。测试系统是基于USB总线的嵌入式虚拟仪器的核心部分,测试系统设计方案决定了仪器功能的好坏。在嵌入式虚拟仪器设计中可创建分布式测试系统,并选择星型的拓扑结构。这种车而是系统包括:PC机、USB集线器、嵌入式虚拟仪器等,通过该类设计方案可以实现虚拟仪器的智能化操作。

②配置设计。由于结合了USB总线技术,嵌入式虚拟仪器的配置可在功能、结构等方面适当拓宽。若用户对虚拟仪器的功能有更多的要求时,则需要配备符合USB接口测试功能的嵌入式虚拟仪器模块便能达到预期的效果。嵌入式虚拟仪器内部配置设计应当符合测试功能的要求,防止出现仪器功能弱化等问题。

③接口设计。由于USB总线技术的运用,对嵌入式虚拟仪器的接口采用USB,这样可以与虚拟仪器相匹配。如:通过把嵌入式虚拟仪器的USB总线接口和逻辑设备整合,即可形成新的USB设备接口,从而创建了传送和接收数据包的总线接口,让嵌入式虚拟仪器的运用功能满足用户的实际运用需要。

④通信设计。通信设计的主要目的是为了方便虚拟仪器的通信操作,PC机的通信应用程序使用VisualC++调用API函数和HID驱动程序完成通信。完成嵌入式虚拟仪器插入之后时,主机检测该设备并通过自动加载相关的驱动程序来对该设备进行配置,这有助于计算机网络对虚拟仪器设备的综合操控。

参考文献:

USB总线上数据传输 篇4

为了满足不同设备的需要,即既要满足数据传输量大的设备,又要满足数据传输量小但要求反应快的设备,USB规范规定了四种传输类型,即控制传输、等时(Isochronous)传输、中断传输和数据块(Bulk)传输,

控制传输用于主机与设备之间的控制、状态、配置等信息的传输。为主机与设备之间提供一个控制通道。例如,设备接入时,主机将通过控制传输对设备进行配置。

等时传输用于有周期性和传输速率不变的数据传输。它要求在USB的带宽中预先分配一定的量。该类传输没有差错校验,因而不能保证传输的正确性。音频系统、计算机一电话集成系统等采用这种传输类型。

中断传输用于数据传输量小,无周期性,但对响应时间敏感且要求马上响应的数据传输。采用中断传输的典型的例子是鼠标、键盘、游戏棒等人机输入设备。

数据块传输支持像打印机、扫描仪、数码相机等设备。这些设备与主机问传输的数据量很大。这种传输具有采用硬件方法的错误检测,并能重试传输,以保证传输的可靠性。此外,块传输所占的带宽是可以变化的,取决于总线上其他传输的情况。

2.基于时间片的传输

在USB总线上数据的传送是以帧(Frame)为单位进行的,即发送方需要按照一定的格式对要传送的数据进行组织,加上一些附加信息组织成帧;接收方按照同样的格式来接收和理解帧,

帧的传送时间与选定的数据传输速率有关:对于全速和低速,一帧为1ms,而对于高速,一帧为125s(称为微帧)。

一帧中能实现的最大数据传输量,即所能传输的最大字节数称为带宽。USB采用共享带宽分配方案.

USB总线 篇5

本文提出一种适用于机载计算机领域的USB接口主机端设计,采用PowerPC系列处理器作为USB主机端的控制器,基于PCI总线与USB控制器连接,构成基于PCI总线的USB接口主机端嵌入式设备。 基于VxWorks操作系统完成USB接口主机端的驱动程序设计和开发,实现了一套完整的USB接口主机端软硬件产品。 利用U盘作为USB外设,对所设计的USB接口主机端进行了测试和验证。 结果表明,本文设计的USB接口主机端能够很好地支持与USB外设的USB通信访问和控制。

1 USB接口主机端分析

USB总线系统由USB主机、USB外设及USB互联总线三部分构成。 USB主机作为USB通信主控设备,主动发起对USB外设的访问、控制及通信操作。 USB总线作为一种标准通信协议,其主机端层次结构如图1 所示[2]。

如图1 所示,USB主机端采用分层结构, 其层次包括USB硬件层、USB主机控制器驱动层、USB主机协议驱动层和USB主机应用层, 其中USB硬件层功能由硬件USB控制器完成,之上3 层由软件完成。 USB硬件层主要由USB主机控制器实现, 负责完成USB总线的物理层和链路层协议, 并对软件提供配置和操作接口,由软件实现对USB控制器的通信控制和总线访问等功能。USB主机控制器驱动层实现USB主机控制器的驱动程序, 该部分驱动程序需针对不同的USB主机控制器芯片的操作接口进行开发, 一方面, 通过软件实现了USB硬件层的接口, 完成对USB控制器基本操作的控制;另一方面,向上层提供了一个统一的接口抽象,屏蔽了底层硬件控制器的差异。 USB主机协议驱动层提供USB协议的主机驱动程序, 通过USB主机控制器层的抽象,使该部分程序不依赖于具体硬件层,利用下层的封装接口,实现对USB总线的控制和管理,为上层软件提供USB总线的访问控制。 USB主机应用层利用USB主机协议层驱动, 实现对USB外设的访问, 实现独立的USB功能, 常见的USB主机应用层功能包括USB存储外设访问控制、USB鼠标键盘访问控制等。

2 基于PCI总线的USB接口设计

机载计算机中一般选用具有高可靠性的PowerPC系列处理器。 在PowerPC8270 处理器芯片中,集成了PCI桥功能,支持标准的PCI总线访问控制。 本文USB主机端硬件设计选用PowerPC8270 处理器, 通过PCI总线接口连接USB控制器,完成USB主机硬件功能。 USB主机核心硬件设计如图2 所示。

如图2 所示,主机端处理器PowerPC8270 芯片通过内部集成的PCI桥功能,经PCI总线连接USB控制器;USB控制器芯片选用ISP1562 芯片,该芯片具有标准的PCI总线接口,内部集成PCI核,可支持其作为PCI主设备或从设备工作, 内部支持2 个OHCI控制器核和1 个增强型EHCI控制器核,可支持低速1.5 Mb/s、全速12 Mb/s和高速480 Mb/s的通信速率。 在图2 设计中,PowerPC处理器作为PCI主设备,USB控制器作为PCI从设备,PCI总线位宽为32 bit , 总线频率为33 MHz , 处理器通过PCI总线实现对USB控制器的配置和对USB总线的访问控制等操作。 USB控制器通过I2C接口外接一片EEPROM , 用于支持系统信息的加载和读取。 USB控制器接出USB总线经过保护电路后,连接USB外设,保护电路用来防止USB总线信号因过流、 过压和ESD静电瞬态放电而导致的USB控制器损坏和通信故障。 处理器通过局部的60X总线, 挂载SDRAM和Flash存储器。SDRAM存储器用于支持主机程序运行,Flash存储器支持主机端操作系统固件及应用程序的固化存储。

采用图2 所示的设计结构和标准PCI接口对USB控制器的配置寄存器进行相应的设置,即可完成对控制器的初始化及访问控制操作, 大大简化了主处理器与USB控制器之间配置操作的复杂时序和流程控制, 为主机端USB驱动及协议软件设计和实现提供了便利。

3 VxWorks系统下USB主机端软件设计

VxWorks操作系统BSP中集成了对USB通信协议的支持,但在实际使用中,需要根据自身硬件的设计、地址空间的划分及中断分配等情况,对其通信协议进行修改。USB主机端程序的调试是一个复杂的流程, 而BSP中的程序不支持调试功能。因此,在驱动设计和修改中,单独将VxWorks操作系统BSP中USB相关的程序作为一个部件剥离出来,添加到主机应用程序的工程中,以支持对USB程序的调试,便于程序修改、功能调试和验证。

3.1 USB主机端软件设计

在VxWorks操作系统下,基于PCI总线的USB接口主机端驱动流程设计如图3 所示。

如图3 所示的USB主机端程序流程中,首先需要进行主机端PCI总线配置及初始化,主要进行PCI桥的寄存器设置、 主机端与USB控制器的PCI地址空间划分、控制器中断设置等工作。 设计的USB接口选用EHCI接口控制器实现高速的USB通信,USB主机协议栈初始化进行EHCI接口控制器的查找,通过PCI总线对EHCI接口的配置寄存器进行设置和初始化, 并对USB的主机协议层驱动USBD所需要的全局变量进行初始化操作。控制器初始化及EHCI接口挂接完成对EHCI主机控制器驱动HCD的初始化,并建立控制器驱动HCD与主机协议层驱动USBD的连接关系。 USB设备创建和挂载注册回调函数, 当有USB设备连接时, 创建USB存储设备,并将设备挂载到主机文件系统,支持主机对USB存储设备的读写访问。通过图3 所示流程,完成VxWorks操作系统下USB协议主机端软件设计, 支持USB协议主机端软件开发。

3.2 PCI桥配置

PCI总线具有性能高、 成本低、 开放性和兼容性好等优点,一般采用PCI专用芯片实现PCI总线设备的开发[3]。 PowerPC8270 处理器内部集成了PCI桥功能,通过该桥实现与USB控制器的访问控制, 在USB主机端软件开发中(如图3 所示),首先需要进行PCI桥的配置。在软件上, 首先需要进行PCI桥配置接口的设计。 Power-PC8270 处理器提供两个地址寄存器, 一个为PCI地址寄存器,另一个为PCI数据寄存器。 在PCI读操作时,首先将要读的PCI总线地址写入PCI地址寄存器,从PCI数据寄存器即可读到该地址的数据;在PCI写操作时,首先将要写入的PCI总线地址写入PCI地址寄存器,然后将数据写入PCI数据寄存器,可以完成一次写操作。 地址寄存器和数据寄存器的基址由处理器的配置字定义,偏移地址分别为0x10900 和0x10904。 USB控制器作为PCI从设备挂载在主机PCI桥下,根据USB控制器与主机的PCI总线上IDSEL信号的连接方式, 可以计算出主机访问USB控制器的基址。 通过该基址加上偏移地址对主机与USB控制器连接的PCI配置空间进行配置。

通过上述方法, 对PCI配置空间的基址BAR0 寄存器、命令状态寄存器、Cache Line长度、总线延迟寄存器进行配置,建立通过BAR0 寄存器的地址访问USB控制器配置寄存器的通路。 为了支持上层的USB软件,需要通过PCI总线建立处理器访问USB控制器及USB控制器访问处理器的双向地址映射关系。 处理器访问USB控制器的地址映射通过BAR0 地址的配置来完成,USB控制器访问处理器的地址映射需要通过主机PCI桥的InBound机制来配置完成, 通过配置InBound机制的寄存器, 提供一种外部设备通过PCI访问处理器地址空间的方法。 通过PCI桥配置,实现双向地址映射的示意图如图4 所示。

图4 中虚线框代表虚拟地址,实线框代表实际的物理空间。 图4 给出了处理器空间和USB控制器空间通过PCI桥的地址映射关系,建立3 段地址空间。 处理器空间中,通过硬件连接方式确定基址ADDR2,作为处理器访问控制器的256 B的PCI配置空间; 通过向PCI配置中BAR0 寄存器写入ADDR3,建立处理器访问USB控制器自身配置寄存器空间的映射, 根据USB控制器手册描述,该段空间大小为116 B,处理器对USB控制器的初始化均通过该段空间完成; 通过处理器PCI桥的InBound机制, 设置InBound基址、 大小寄存器, 建立控制器访问处理器内存空间的映射关系。 在主机端USB协议栈调试时, 可以通过ADDR3 的映射来访问USB控制器的寄存器,判断其当前的工作状态,起到故障排查和定位的作用。

通过PCI桥配置,建立处理器与USB控制器的访问地址映射,实现两者的互相访问,为USB主机端协议功能的实现提供基础支持。

3.3 USB主机端软件实现

在PCI配置完成的基础上进行USB主机端软件设计。 按照图3 所示的流程实现对USB总线的管理和控制,进行初始化、应用程序注册、动态链接注册等功能。 USBD初始化相关的API包括usbdInitialize、usbdShutdown、usb-dHcdAttach和usbdHcdDetach共4 个, 完成usbdLib库的初始化、关闭usbdLib库、连接HCD和断开HCD功能;使用usbdClientRegister和usbdClientUnregister 2 个API实现应用程序注册和取消注册功能,USBD允许同时有多个应用程序模块使用USB总线, 因此对于要使用USB总线的应用程序模块, 需要先在USBD中进行注册,而不再使用USB的模块应当取消在USBD中的注册,以节省主机端资源;动态连接注册API接口函数usbdDynami-cAttachRegister和usbdDynamicAttachUnRegister用于注册回调函数, 当USB总线上有设备插入或设备拔出动作时,回调函数能够收到报告并进行相应处理,对于插入操作,回调函数进行设备类型判断、设备创建操作,对于拔出操作,回调函数进行设备类型确认、设备销毁操作。

4 测试验证

采用标准的U盘设备对本文设计的USB主机端进行了功能测试和读写速度性能测试,测试结果如表1 所示。

表1 针对主机设备未插入卡、插入卡和拔出卡3 种场景下USB主机端的串口输出进行了测试。 在未插入卡的情况下,USB主机端完成了协议栈初始化、USBD驱动初始化、EHCI控制器初始化并连接EHCI控制器与USBD驱动; 当有卡插入主机端时, 触发回调函数工作,首先查找到主机设备下的卡设备,然后创建/bd0 文件系统,完成卡设备到/bd0 文件系统的挂载;当拔出卡时,触发回调函数的移除设备操作,主机端移除/bd0 文件系统。

向主机端插入U盘设备,分别写入和读取1 MB~10 MB数据,测试主机端对U盘外设的读取速率,结果如图5所示。

图5 中,横轴为每次读或写的数据量大小,纵轴为所测量出来的读写速率。 从图可以看出,随着每次读写数据量的增大,读写的速率基本保持稳定,而读取的速率比写入的速率快4 Mb/s左右。 计算平均值可得,本文设计的USB主机端写入U盘的速率为5.92 Mb/s, 读取U盘的速率为9.77 Mb/s 。

本文基于PowerPC处理器设计并实现了一种基于PCI总线的USB主机端设备, 并在VxWorks操作系统下设计并实现了其PCI配置、USB主机端驱动及协议软件,能够稳定地支持对U盘等存储外设的访问,在工程上取得了良好的应用。

摘要:分析了USB主机端的层次结构,采用PowerPC8270处理器设计了一种基于PCI总线的USB主机端设备,简化了主处理器与USB控制器的交互。在VxWorks操作系统下进行了USB主机端驱动的设计和实现,并通过试验对USB主机端的功能和读写速率性能参数进行了测试验证。测试表明,能够稳定地支持对USB接口存储外设的读写访问。

上一篇:宗教功能下一篇:快递资源