1、摘要:USB由于其速度快、支持热插拔、稳定性好、用户使用方便、支持即插即用等优点,现已成为PC机的标准总线接口。本文介绍了一种利用USB总线接口来实现的双PC机互联的技术方案。随着个人计算机对USB标准的支持,USB的各种应用应运而生。从手持设备、桌面设备、家用设备甚至到工业、通讯、测控等领域,都出现了USB的便捷设备。如常用的U盘、USB摄像头和USB鼠标键盘等。它们的出现,极大的丰富了人们的生活,也渐渐的改变着人们的生活工作方式。同时,随着计算机的普及和信息化进程的加快,家庭内出现两台电脑己不少见了。对大多数家庭用户来说,利用计算机网卡的RJ45接口就能满足基本的数据传输和网络共享了。但是
2、要进行Internet连接共享就不行了,因为一台电脑一般只有一个网卡。为了方便快捷高速的实现Internet连接共享,可以利用USB双机互联线进行连接。基于此,本文就针对USB双机互联展开,逐步地讨论了USB双机互联的原理及其实现过程。本文首先从USBI.1协议和TCP/IP着手,分析了互联所需的协议及WindowsXP系统对其的支持情况,得出主机侧需要一个微端口USB虚拟网卡驱动支持。随后,以系统的观点,把USB互联设备分成软件部分和硬件部分,并对它们分别进行可行性分析,并给出基本的实现细节和过程。再者,在介绍S3C44BOX开发板的基础上,扩展了一USB口作为USB机互联设备。最后,专门对
3、软件设计给出了编程见解和遇到的常见问题,并结合软硬件的编程、调试和运行分析,总结了USB双机互联实现的所需的知识和方法。关键字:USB接口 双机通信1引言总体现状随着PC的普及和信息网络的大发展,上网的人越来越多,也越来越依賴网络给自己工作生活带来便捷。同时无线网络进一步的发展,我们几乎不受限制的随时随地接入互联网浏览信息、电子邮件、下载文件和听音乐等等网络活动。有了网络,我们的地球小了,生活也得变丰富多彩了。我们已经离不开网络了。于是我们会时常碰到这种情况,当两人同时上网时,富常用一个账号共享上网了。于是电脑组建成小型网络互访就成为必要了,便出现了多种互联方式。早期的串并口互联、网卡互联、红
4、外互联,WIFI互联和蓝牙互联等。由于各自使用条件速度等原因,相对较早的联机速度慢,己经不用了。目前主流使用网卡联机,这种网卡采用PCI插槽,用RJ45水晶头连接,传输距离远。但是当PC没有网卡时,当笔记本互联时,当互联共享上网时,当小设备需要联网时,总会出现不方便安装网卡,或成本较大,或空间受限的原因不适合用网卡互联。此时,我们可以考虑选用USB网卡联机,以满足需求。USB是目前计算机与外设上普遍采用的标准,其具有传输速率高、连接灵活、使用方便和可独立供电等特性。所以,利用USB新型接口联机无疑是一个全新开始,以其USB的优点必将受人们欢迎。随着计算机技术的发展和计算机应用的普及,在实际工作
5、中,经常需要在两台微机之间临时性连接进行数据通信、实现资源共享。实现双机互联进行通信的方法有多种,例如采用串行接口、并行接口、红外线接口和网卡来实现。但这几种方式都必须进行安装和设置,通信速率也不同程度地受到限制,各有其特点和局限性。随着USB技术的发展和应用的普及,利用USB接口实现微机之间互联通信,方法简单,速度快,是一种方便快捷的双机通信技术。国内外现状目前,做USB互联研究己是不少,市场上也出现了各种USB双机互联设备供选购。但多数研究或采用现成的USB通讯协议芯片只设计硬件田或利用己有的USB互联设备来做上层应用,或根据USB互联原理做些简单理论研究,或只是把普通互联与USB互联做个
6、简单比较等。只有少数研究可以参考借鉴从某种程度来考虑,这样的研究不够深入。面对USB技术的发展,从低层着手,做到软硬件综合设计,才能有效进行USB互联设计。USB总线拓扑USB的总线结构采用了阶梯式星形的拓扑。每一个星形的中心节点是一个集线器,而USB设备就是通过集线器连接在电脑上的。USB设备包含两种类型:USB集线器和USB功能设备。位于最顶端的就是Host(主机端)。每一个主机端都连接了一个根集线器,再由根集线器按阶梯式以一层或一阶的方式往下扩展出去,连接在下一层的设备或另一个集线器上。这种阶梯式星形的连接方式,最大可以连接6层设备,最多可同时连接到127个外设设备。USB总线的阶梯式星
7、形结构USB系统的组成USB系统有USB主机和USB设备组成。USB主机就是前面所说的Host主机,包含USB主控制器,能控制完成主机和USB设备之间数据传输。USB系统的数据和命令的传输都是有USB主机来启动的。广义上来说,USB主机包括计算机和具有USB主控芯片的设备。在同一时刻USB系统中只允许存在一个USB主机。USB设备按照功能可分为两类:USB集线器和USB功能设备。USB集线器是在USB规范中定义的一种外围设备,除了扩展系统的连接点外,还具有中继以及控制下端端口的电源管理的功能。USB功能设备是用户常见的外围设备,包括键盘或鼠标等设备。在USB数据传输过程中,指向USB主机的数据
8、传输称为上行通信,指向USB设备的数据传输成为下行通信。USB的分层结构从终端用户角度看USB系统,可简单的分为USB主机和USB设备两个部分。它们之间是通过特定USB接口进行通信的。但实际上,具体的系统比较复杂,针对不同的层次有着不同的要求,使得我们必须从不同的层次来观察USB系统。由于划分了层次结构使得不同的层次只需要关心自己对应相关层次的特性功能。整个USB系统可以划分为功能层,USB设备层和USB总线接口层。如下图所示。1、功能层功能层由USB设备侧的功能单元和对应USB主机侧的程序组成,主要负责数据传输操作。按照双方通信的类型,数据传输可以分为如下4种控制传输:主要用于传输少量的对时
9、间和速率都没有要求的控制信息,一般用于USB主机读取或设置USB设备的配置信息。块传输:主要用于传输大量的对传输时间和速率没有严格要求的数据。特别适合于打印机、扫描仪类设备。中断传输:主要用于传输少量的对传输时间具有周期性要求的数据,例如用于传输设备反馈给计算机的字符和坐标信息。特别是键盘、鼠标类设备。同步传输:主要用于大量的,传输时间具有周期性,且速率恒定的实时数据传输。特别适用于音频、视频类设备。2、USB设备层USB设备层由主机侧USB系统软件和设备侧的USB逻辑设备组成。USB系统软件将设备端的USB逻辑设备视为一组可构成一个功能接口的端点集合。而它与USB逻辑设备的通信就像是USB设
10、备连接在根集线器上一样。该层主要用于管理USB设备,分配USB地址,读取设备描述符。它可以使USB主机能够了解该USB设备的能力。3、USB总线接口层USB总线接口层位于通信体系的最低层,主要用于实现USB主机和USB设备之间的数据传输。主机侧由USB主机控制器和根集线器组成,而设备侧则是由设备中所内含的USB接口组成。在USB协议中,USB总线接口使用NRZI编码(反向非归零码)来进行数据传输,USB主控制器和USB集线器将数据接收或发送,并自动进行解码或编码,这部分一般是由USB系统硬件来完成的。在USB总线接口层中,主机认为USB设备是以层次星型的拓扌卜结构连接,USB主控制器的根集线器
11、上的。这些设备最终都是通过同一个USB主控制器和机进行通信。也就是说,USB总线上的所有设备共享一条通往主机的数掘通道因此同一时刻只可能有一个USB设备和主机进行通信。USB的传输层次和传输运动USB通信协议建立在令牌包基础上,pc机负责启动一切的沟通而掌握总线的主控权,严谨的协议保证了USB不占用任何PC的中断向量或输入/输出的资源在USB线上执行一个或多个事务处理,都是基于一系列的信息包的传输。传输过程从USB设备驱动程序要求执行一次传输开始,到通过USB数据线传送结果信息包结束。如下图所示,B传输涉及到以下层次,(1)数据域;(2)封包;(3)数据交易;(4)IO请求包。PC主机和设备之
12、间执行通信协议示意图操作系统把传输请求传给合适的设备驱动,设备驱动依次把请求传递给其他系统级驱动(即USB系统软件USB驱动程序USBD和主机控制器驱动程序HCD)。主机控制器然后在USB总线上启动这个传输。USB的两根差分数据信号线D+与D负责与总线上的设备交换数据,当然,总线上的每一次数据传输使用控制、中断、批量和实时等传输类型的一种进行传输,每一种传输又有特别的格式和约定。USB是一种传输率可达12Mbps的串行接口并由不同类型的PC外设共享这个串行接口总线。12Mbps的总线带宽被分割成1ms的帧,所有位于此总线的设备以时间分割的多任务传输(TMD)方式来分享它每个传输被分配到每一帧中
13、。每一个数据交易(transactions,也称为事务)一般包含二个数据包,即令牌包数据包和握手包。每个数据封包,或者说信息包,又包含若干个数据域,而数据域又分为SYNC数据域(同步序列)、PID数据域、ADDR数据域、ENDP数掘域、CRC数据域、DATA数据域、FrameNumber数据域(帧号)等7种。USB的数据传输USB上的数据传输有四种类型,控制传输(controltransfer)、中断传输(Interrupttransfer)、批量传输(bulktransfer),实时传输(isochronous),不同的传输类型就会执行不同的数据交易。控制传输控制传输是一种双向传输,用来发送
14、与没备的能力和配置有关的请求和数据,也可以传输任何其它用途的信息块。每个设备必须在端点0的缺省管道中支持控制传输。控制传输包含2至3个阶段设置阶段、数据阶段(也可能没有)和状态阶段。每一个阶段对应一个数据交易(即事务),每个数据交易由令牌包、数据包和握手包组成。主机控制器为了尽最大努力确保所有的控制传输尽可能快地进行而为控制传输保留了10的USB带宽,若大部分时间不需要这些带宽,批量传输可使用剩下的部分,批量传输可以发送大量的数据而不会阻塞总线,它可以为其他的传输而延迟,并且等到总线可用时再传,因此刈传输时间不严格的数据传输很有用。只有全速设备可以使用批量传输,打印机和扫描仪使用这种传输。一个
15、批量传输由一个或多个IN或OUT事务组成每一个事务由令牌包、数据包和握手包组成。中断传输中断传输是一种单向传输,从设备输入到PC机,作IN的传送。注意,USB不支持通常意义上的硬件中断,而靠主机周期性地“轮询”来知悉设备是否要传送数据给主机。为了保证数据不被丢失,必须要有一个合适的轮询速度,或者说要有一个最大的潜伏期,以确保主机控制器在事务之间不超过规定的时间间隔。中断传输用来支持那些偶然需要少量数据通信,但服务时间受限制的人机接口设备(HID),中断传输的事务组成同批量传输,事务的结构也是=种。实时传输实时传输是一种保证大块数据迅速从繁忙的总线上通过的方法,它和中断传输组合可以最多使用90的
16、USB带宽。实时传输对数据必须以一个恒定的速率或在规定的时间内传输,每帧传输规定数量的字节数。山于传输必须遵循时间表,接收者在其很忙或者检测到一八错误时不能要求重发。实时传输通过一个或多个连续的帧来实现,每帧山一个IN或OUT事务组成,因为实时传输不支持对总线上的差错作出数据重传响应,所以每个事务不具有握手包。买时传输也是单向的,欲在两不方向上传输数据,每个方向要有独立的管道和端点网。USB的事务处理USB事务处理是主机和USB设备间数据传输的基本单位,由一系列具有特定格式的信息包组成根据所含信息包的种类,可将一个事务处理分为三个阶段:(1)令牌阶段:负责事务处理的开始并定义事务类型。(2)数
17、据阶段:负责传输相关的数据,长度最大1024字节。(3)握手阶段:用于报告事务处理的状态,以表明数据接收是否成功。并不是所有的事务处理都必须具有这二个阶段,其中数据包和握手包是可选但是所有事务处理都必须以令牌包开始。2总体方案2.1设计思路2.1.1USB接口特点USB是一种主从结构。主机叫做Host,从机叫做Device(也叫做设备),集线器也被当作一种特殊的设备处理。USB的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。USB接口协议2.1.2USB双机互联原理由于USB模型是一种Host-Slave(主机-外设)主从式结构,没有办法使两台主机不通过外设而直接通过U
18、SB总线通信。然而可通过增加外设控制器的方法使两台主机利用它们的USB端口通信。每个外设控制器连接到不同的主机,利用共享的缓冲器交换数据。2.2总体框架3硬件设计接口芯片PDIUSBD12芯片特点和内部结构PDIUSBD12是一个性能优化的USB器件通常用于基于微控制器的系统并与微控制器通过高速通用并行接口进行通信,也支持本地DMA传输该器件采用模块化的方法实现一个USB接囗,允许在众多可用的微控制器中选择最合适的作为系统微控制器允许使用现存的体系结构并使固件投资减到最小,这种灵活性减少了开发时间,风险和成本是开发低成本且高效的USB外围设备解决方案的一种最快途径。PDIUSBD12完全符合U
19、SB1.1规范,也能适应大多数设备类规范的设计,如成像类、人容量存储类、通信类、打印类和人工输人设备等,因此,PDIUSBD12非常适合做很多外围1殳备,如打印机、扫描仪、外部大容量存储器(ZIP驱动器)和数码相机等。现在用SCSI实现的很多设备如果用USB来实现可以直接降低成本。PDIUSBD12挂起时的低功耗以及LazyClock输出符合ACPI、OnNOW和USB电源管理设备的要求。低功耗工作允许实现总线伊电的外围设备PDIUSBD12还集成了像SoftConnect、GoodLink可编程时钟输出、低频晶振和终端电附等特性。所有这些特性都能在系统实现时节省成本,同时在外围设备很容易实现
20、更高级的USB功能。主要特性符合USB1.1协议规范;集成了SIE、FIFO存储器、收发器和电压调整器的高性能USB接口芯片;适应大多数设备类规范的设计;与任何微控制器、微处理器有高速(2MB/s)的并行接口;完全自动DMA操作;集成了320B的多配置FIFO存器;主端点有双缓存配置,增加夻吐量,容易实现实时数据传输;在块传输模式下有IMB/s的数据传输率,在同步传输模式下有1MB/s的数据传输率;具有总线供电能力,有非常好的EMI性能,在挂起时有可控制的LazyClock输出;可通过软件控制USB总线连接SoftConnect;时钟频率输出可编程;片内8kV静电保护;双电压工作(3.30.3
21、)v或扩大的5v电压范围(3.6、5.5v);多中断模式,方便块传输和同步传输。PDIUSBD12内部结构内部框图如图所示:引脚图:PDIUSBD12的连接PDIUSBD1与80C51的连接电路如图所小。ALE始终接低电平,说明采用单独地址和数据总线配置。AO接80C5,的任何I/O引脚控制是命令还是数据输人到PDIUSBD12。80C51的P0囗直接与pD1UsBD12的数据总线相连接CLKOUT时钟输出为80C51提供时钟输人。PDIUSBD12的连接图3.1主控制板S3C44BOX处理器简介S3C4OX处理器是二星公司生产的一款低端通用的基于ARM7TDMI核的处理器它有以下特点:1.低
22、功耗的32位RISC处理器,有8K片上Cache2.最高时钟频率可达64MHz3.内有硬件乘法器4.片上外设丰富5.灵活的内存管理6.具有嵌入式ICERT逻辑,调试开发方便7.支持uClinux操作系统等由于它的高带宽和丰富的片上外设等为开发高速、小型、低成本产品提供了保证。在内存管理方面更是为进一步使用和扩展外设带来了方便。上图就是本系统开发板,中间是S3C44BOX处理器和存储器(FLASH ROM:16Mb;SDRAM:64Mb),其余功能外设己经做好接口了。从图的左上角开始分别是RJ45网络接口、COMI和COM2两串口、LCD显示器接口、电源、音频输出口、JATG口、4个按钮输入、I
23、DE接口和USB接口。另外还有些次要设备供用户配合学习开发,如IIC、系统时钟、跳线和蜂鸭器。电子系统中常用的接口和总线开发该开发板都具有了,而且该板己经引出了处理器的所有引脚供用户扩展使用,符合要求。 IDE借口扩展USB接口我们知道IDE接口常采用40线并口引脚,而且其读写时序与PDIUSBD12的读写时序是兼容。所以,只需通过简单的连接和组合逻辑译码,即可实现USB接口的扩展了。虽然IDE接口能解决速度和读写时序的问题,但有个缺点;它没有扩展电源接口。所以,在电气特性上还要考虑接线和电平标准。采用从开发板上引线到IDE接口的话,就可以只使用一个IDE电缆了。对于电源,开发板上有三种等级可
24、用,分别是5v、3.3V和2.5v。通过查PDIUSBD12芯片资料,知道它可以使用双电源等级。而且可以使用3.3V电源,所以就决定采用3.3V电压等级来驱动PDIUSBD12芯片。为了不影响IDE硬盘的使用,就把32脚接入3.3V电源,其他引脚保持不变。如下图是变动后的提供给PDIUSBD12芯片的IDE接口图:到此,将从板上扩展了并口,把PDIUSBD12接入并口中,就可以扩展USB设备接口。3.2USB芯片图:2:芯片引脚图PDIUSBD12是一款性价比很高的USB器件,它集成了SIE(SerialInterfaceEngine)、320字节的FIFO存储器,发送器和电压调整器,通常用作
25、微控制器系统中实现与微控制器进行通信的高速通用并行接口(速度高达2Mbps),它还支持本地的DMA传输。PDIUSBD12符合大多数器件的分类规格并理想地适用于许多外设。PDIUSBD12所具有的低挂起功耗连同LazyClock输出可以满足使用ACPI、OnNOW和USB电源管理的要求。低的操作功耗可以应用于使用总线供电的外设。此外它还集成了许多特性,包括SoftConnetTM、GoodLinkTM、可编程时钟输出、低频晶振和终止寄存器集合。所有这些特性都为系统显著节约了成本,同时使USB功能在外设上的应用变得容易。PDIUSBD12主端点配置有双缓冲,因而可提高数据的吞吐量、减小数据传输时
26、间,轻松实现数据的实时传输。当采用同步传输方式时,数据的传输速度为1Mbps;而采用批量传输方式的速度为8Mbps。在使用上述方式进行数据传输时,可方便地使用多种中断方式。4软件设计4.1主控程序模块分析ARM内核是基于RISC(精简指令集)技术开发的,它使用32位ARM指令和16位Thumb指令两种指令系统,并支持汇编、高级语言编程技术,利用汇编语言编程时往往是顾及执行效率和底层硬件代码移植,而高级语言则不同,尤其C语言编程,它不仅可以用于底层的编程(通过指针直接访问硬件),通过函数可以访问操作系统,此外,还有大量的C库供调用,极大地加快了ARM开发进程,目前,C语言成为嵌入式A皿软件开发中
27、亻吏用最广泛的语言。ARM处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。软件改变运行模式分为两种:设置CPSR寄存器运行模式位和SWI软件中断。前者用于非用户模式下模式指令改变。后者用于用户模式下改变到管理模式。处理器复位后,处于管理模式,而大多数的应用程序运行在用户模式下,所以中间有个模式切换过程。当处理器在用户模式下运行时,某些被保护的系统资源是不能被访问的。S3C44BOX中断与异常ARM编程特别是系统初始化代码的编写中通常需要实现中断的响应、解析跳转和返回等操作,以便支持上层应用程序的开发。在ARM系统而言,中断就是指硬件中断,而除次以外的非正常运行,就是异常,不
28、过,对中和异常的处理,ARM完全统一成异常的处理模式来处理它们。异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1、将连接寄存器LR的值减去相应的偏移量后送到PC中。2、将SPSR复制回CPSR中。3、若在进入异常处理时设置了中断禁止位,要在此清除。可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。异常的处理过程当系统运行时,异常可能会随时发生。为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中首先要进行异常处理,采用的方式是在异常向量表中的特定位置放一条跳转指令跳转到异常处理程序。当ARM处理器发生异常时,程序计数器PC会被强制
29、设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成后,返回到驻程序继续执行。收发数据根据USB协议,任何传输都是由主机(host)开始的。由于使用了两个PDISUBDI2接口芯片,且都采用查询方式进行数据读写。所以,数据的收发只能采用轮询的方式进行。其中USB_A是编号为A的USB接口,USB_B是编号为B的USB接口;OUT_A和IN_A分别是A口的输出和输入端点,OUT_B和IN_B分别是B口的输出和输入端点。通过框架图,可以看出整个数据收发流程:(1) 当A/B口收到主机B/A发来的数据时,就暂存于缓冲区AB/BA中;(2) 当主机A/B接收数据时,首先要检查缓冲区AB/BA中
30、是否有数据;(3) 若有数据,则从缓冲区取出数据,送往各自的主机的缓冲区;(4) 继续(1)的操作。在整个数据收发过程中,对共享缓冲区反复操作,所以,对缓冲区的共享读写必须进行同步,一般只要设置一个标志位就可以了.5可行性分析(1)硬件设备可行性:通过实验室支持或网上购买,具备PDIUSBD12(芯片),S3C44BOX设备,能够方便地准备和架设,能够为软件系统提供设备上的支持;(2)软件系统可行性:软件资源获取较为方便。 (3)程序理论可行性:相关的关键程序理论,已通过前期的项目调研,并且有了一定的积累。(4)技术方面的可行性:根据系统需要,能够制定出合理的技术路线。(5) 社会支持:前面项
31、目背景和意义可知,本项目在互联通讯领域中,有极大的需求,具有较高的社会利用价值。通过对上述各方面条件的考虑,本项目方案具有较高的可行性。6总结USB总线中只允许存在一个控制主机,不支持点对点传输,普通PC机之间并不能通过现有的USB插口直接进行相连;因此,两台主机之间必须具有一个能够进行数据转接的设备,才能进行通信。本设计方案遵循USB总线协议,将两台PC机都看作是USB主机,所有的工作都在外接的P89V51RD2单片机与PDIUSBD12芯片相结合的数据转接设备上实现,充分利用目前普通PC机预留的USB接口,实现双机互联通信。其USB接口具有即插即用、CPU占用率低、传输速率高、安装简单且通
32、用性强等特点。目前,USB互联应用有有线到无线发展,低速到高速,大型到小型等层出不穷。每样应用都在某种程度上需要理论创新和技术创新。需要人们不断研究。参考文献【1】 王朔. USB接口器件PDIUSBD12的接口应用设计.新器件新技术.2002.4【2】 陈红波.基于USB接口的双机互联实现.西南交通大学.2009.6【3】 付佳.基于USB和单片机的双机文件传输系统实现.成都工程信息学院学报.2005.12.【4】 万婷婷.USB接口开发及功能实现.西安电子科技大学.2011.1.【5】 杨书涛. USB接口技术与应用研究.山东大学.2008.6【6】 朱翠涛.USB双机通信系统中固件程序的设计与实现.中南民族大学.2004.4