老古开发网首页
导航:老古开发网首页文章索引文章分类通信网络→[便携式连接:USB能否通过网络工作?]
| -文章搜索 - 最新文章 - |

便携式连接:USB能否通过网络工作?

发布时间:2006年2月18日 点击次数:407
来源:EDN电子设计技术   作者:Robert Cravotta,EDN技术编辑
 

  USB是一种成功的点对点连接接口,但通过IP实现USB则是项挑战性的工作。
要 点
  ●设计师成功地将 USB(通用串行总线)用于连接其它通信技术;
  ●在任何项目中,不明确的含义都是造成错误和损失时间的根源;
  ●一些 USBOIP(互联网协议上工作的 USB)实现可以使多台主控计算机串行共享一台设备。


  2005年的 USBOIP(互联网协议上工作的通用串行总线)亲自动手项目探索的是 USB 设备能在网络上工作需要什么条件。该项目试图激发对拓展 USB 设备功能新方法的兴趣与考虑。与其他所有亲自动手项目一样,本项目花了数月时间进行研究、规划和实现。最新推出的无线 USB 规范在项目进行的大部分时间中尚未可行,因此对我们的工作没有实质影响。

  一个由七家计算机与电信公司组成的联盟在 1995 年正式开发并推出了 USB 规范。尽管USB 最初的设计目标是连接计算机与电信设备,但它最终却成了台式机、外设与很多消费电子产品的通用总线。根据USB 工具论坛的数据,今天,全世界有超过 20 亿个有线 USB 连接。USB 已经成为非常成功的即插即用工具,现在亦有通过USB将计算机与实现其他通信技术的设备相连接的,如 USB 转串行口 、USB 转以太网,以及 USB 转 802.11 适配器。

  我们曾经在 EDN 的一个亲自动手项目中,在带 USB 接口的任天堂 Gameboy Color 之间建立了专有的游戏链接接口(参考文献 1)。该项目的目标是证明设计师可以用新奇的方法使用普通市售装置,在本例中,将为游戏设计的手持设备用作一个重要的商务与工程平台。对于将 Gameboy 用作便携平台(包括低成本医疗设备)的设计,读者们给出了很多反馈信息。

  本次亲自动手项目的最初概念是让一个 USB 主机通过一个无线网络连接,访问一个既有的 USB 设备,该 USB 设备可以正常工作,甚至觉察不到有网络连接的存在(见附文“USB 术语”)。为了让 USB 设备能通过网络进行连接,用户可以将 USB 设备插入到一个小盒子中,该小盒子作为本地主控端和网络适配器,管理网络上与主控计算机的交互(图 1)。在主控计算机上,可以对 USB 系统软件进行扩展,使它通过网络发送和接收 USB 事项,而不是通过缺省的 PCI 总线。扩展系统软件时,要让 USB 的类驱动程序察觉不到变化,这是可以做到的。最后一点很关键,即仍具备支持现有 USB 设备的能力。


  这种安排与适配器不同(如 USB 转 802.11 的适配器),它是通过 USB 设备提供与主系统的无线连网能力。在这种情况下,适配器是仅连到主控制器上的一个 USB 设备(图 2)。因此,这些设备用 USB 端口增加了对主控制器的连接能力,而不是对其他 USB 设备。


  EDN 认为,无线 USB 的亲自动手项目过于雄心勃勃了,因此我们将项目范围减小,使其能在有线网络连接上建立一个 USB 连接。我们打算先在有线连接上完成一个 USB 连接,然后再对付无线连接增加的复杂性。因此这个改变是可以接受的。

  为减少项目的复杂性,项目的目标被定为演示通过网络进行的一次成功的 USB 会话。项目的时间表还是相当紧张的(毕竟这不是一个全职工作。)因此,我们并不打算制造一个可以量产的演示方案,或期待有最高的性能。为节省时间,我们决定避免为项目制作物理元件,而使用可以支持该项目的市售处理器与电路板。

  所需电路板要有能支持至少一个 USB 2.0 设备连接的软、硬件,还要求能与我们办公室的网络建立连接和共同工作。这样,我们能把注意力集中在为主控计算机和 USB 服务器上的 USB 系统软件开发新的总线驱动程序,以验证该项目概念(图 3)。最后,Atmel公司 为我们提供了一块 AT91RM9200-EK 评估板,上面有本项目使用的 ARM9 处理器,但收到它以前我们已经选择了原用的处理器和电路板,而且损失了项目不少时间。

  不明确的含义

  与许多工程项目一样,这次的亲自动手项目也受制于许多模棱两可的含义所造成的错误假设。出现的第一个“冷不防”问题起因于 USB 连接的电气接口与逻辑接口是非对称的。在向 USB 芯片供应商采购为完成本项目所用芯片时,我们只讨论了项目在功能级上实现验证的问题。

  在这种情况下,目标电路板不仅要支持至网络的以太网连接,而且还要作为连接到 USB 设备的一个主机。暗含的假设就是目标电路板会带有一个 USB 主控端口。经过与多家芯片供应商讨论之后,我们确定了一个目标处理器和开发电路板,它们既支持 USB,也支持以太网,但芯片与电路板都处于发布前的最后开发阶段。这个延迟看来对项目进度没有明显的风险,而且也无

其他的候选部件,因此,我们决定选用这种很有前途的目标处理器与电路板。

  目标处理器是一个基于 ARM7 的器件。这种有希望的器件与电路板有一个好处,即它们已经有了小型实时操作系统的端口,我们可以使用一个简单的操作系统架构,简化项目的工作。虽然对多项目的应用开发者来说,操作系统可以对其下的硬件作抽象处理来提高生产率。但这一抽象对本项目没有帮助,因为我们是一次性的工作,并且工作层面要低于应用开发者日常所进行的。实际在本例中,若采用庞大的操作系统会增加项目的复杂性,因为我们需要花费时间来学习它的界面和架构。

  芯片与电路板的进度均按部就班地进行,但是当我们在电路板交货前查看新器件的数据表时却冷不防地发现了问题。虽然新芯片能在同一个器件上同时支持以太网和 USB,但它有 USB 设备端口,而没有 USB 主控端口。这会造成通信错误,因为 USB 设备端口可以连接到 USB 主控端口,但不能连接到其他的 USB 设备端口。于是我们飞快地确定了一个新的目标: Atmel公司的 AT91RM9200EK 评估套件所含有的基于 ARM9 处理器。

  这次改变不仅花费了我们几周时间,而且也增加了项目的复杂性。操作系统只有  WindowsCE 或 Linux 可供选择,因此操作系统架构比原先预计的更大、更复杂。我们选择了 Windows CE,因为它是更集成的工具套件,也因为我们要在项目的台式机部分使用 Windows 对 USB 的支持。这一决定也导致了一个不利的结果,即由于我们加州办公室与法国技术支持供应商之间存在时区的差异,拖长了我们的调试过程。

  采用 ARM9 处理器内核的评估套件到货后,项目重新开始。但是,让这块电路板运行起来的过程又印证了一个道理,即不确定性会产生错误的假设。这个过程要求我们安装 Windows CE Platform Builder 5.0、ActiveSync 3.7、Embedded Visual C++ 4.0 sp4,以及用于台式工作站上 Platform Builder 的 AT91RM9200EK BSP。为 AT91RM9200EK 目标建立一个 CE 图像是一个简单但却要经过很多步骤的过程。

  评估板采用一个三步过程装载 Windows CE,因为它太大了,不能常驻板上。第一步是将来自串行数据闪存的引导装入程序装入 SRAM,并执行它。在通过串行连接建立并配置好引导装入程序以后,引导装入程序将 Windows CE 图像通过一个以太网连接装入 SDRAM,并起动它。最后,在 SDRAM 中执行 Windows CE 图像。

  在安装带有引导装入程序的串行数据闪存卡时,出现了让我们困惑的事情。我们按照电路板的说明将卡插入评估板底部的槽中,然后引导电路板。但这样做了以后,串行口却出现了意外的情况。此时,我们并没有看到装入程序,而是没完没了地重复一个字符 C。问题的原因在于 “电路板底部” 这句话,更糟的是说明书没有电路板示意图。我们最终在电路板背面发现了另一个插槽,它与电路板前面的插槽位置相同。将数据卡插到电路板背面的槽内,我们就能够建立正常的串行调试会话了。

  我们可以配置装入程序,通过以太网初始化 Windows CE 图像的下载工作,但是,下载看来并不正常。最终,我们确认随评估板提供的以太网电缆是交叉式连接的,我们是将评估板连接到路由器上,而不是直接连接到工作站。如果我们能早点注意到电缆头上的红色标记就好了,当然工具包能提供两种以太网电缆也可以避免这个困境。如果工作站专门与目标电路板沟通,交叉连接的电缆就没有任何问题。但在本项目中,一台工作站要作很多事情,因此要将其连接到网络上。

  碰到麻烦和损失一些项目时间的另一原因,涉及到要在 Windows CE 下通过 USB 端口建立一个 ActiveSync 连接。但是,这已经不是第一个在 ActiveSync 连接上遇到麻烦的项目了(参考文献 2)。

  USBoIP

  项目进入正轨后,我们发现了一家提供 USB 服务器的公司 Keyspan 有一款产品(型号是 US-4A),它可以通过以太局域网将 USB 设备接入 Mac 或 PC。Keyspan 的产品是以一个嵌入式微控制器和 Cypress 的 USB EZ 主控芯片为基础的。USB 服务器的方法与我们的项目目标相当一致。Keyspan 公司的副总裁与首席技术官 Eric Welch 为我们提供技术支持,帮助我们了解项目的底层详情。我们也找到了其他一些公司,如 Icron,它提供一个采用 Freescale 处理器的 USB 电缆替代方案(见附文“替换电缆”)。

  要在台式机与 USB 服务器之间通过网络传输 USB 数据,主控系统和 USB 服务器上的软件必须按普通 USB 连接进行修改。USB 服务器转过来起到 USB 设备的主控制器作用。为避免混淆,我们用 Keyspan 的术语“主客户机”来表示台式机上的主控制器,因为它实际上是与 USB 服务器通信,而不是与 USB 设备通信。另外,我们采纳了 Keyspan 的术语“NHCI”(网络主控制器接口),用它代替 USB 规范中定义的 OHCI(开放式主控制器接口)或 EHCI(增强型主控制器接口)。

  在主客户机一端,软件会遍查连接到 USB 服务器上的各个设备,看它们是否已在本地插入,这样设备管理器会装入相应的类或供应商为该设备提供的驱动程序。这些驱动程序将与微软的 USB 栈进行交互,因此 NHCI 主控软件也必须仿真这个接口。于是,客户端的软件有两个任务:当设备被连接时通知设备管理器;仿真微软的 USB 栈通信 API。

  当类或供应商驱动程序请求远程连接的 USB 设备时,NHCI 协议将请求打包后,通过 TCP/IP 发送。主客户机软件的最终段在网络上探测 USB 服务器,使之对用户可见。这里有一个实现细则,即网络部分是否应该与 USB 栈的仿真隔离开来,如双总线仿真器驱动程序。举例来说,微软的驱动程序开发工具包中有一个“烤面包”实例,它演示了如何编写一个内核总线仿真器驱动程序,它向设备管理器报告子设备的情况,并管理所有即插即用电源请求。NHCI主客户机端软件仿真本地 USB,与微软 USB 栈没有任何关系,而是代替它来工作。除了主客户机上的 USB 栈以外,USB 服务器也含有部分的 USB 主控栈,因为对其本地连接的设备来说,它是一个主控制器。本地 USB 栈允许服务器完成普通的轮询工作,否则主控系统会通过网络进行发送。USB 服务器提供集线器支持,因而可以管理本地带宽,独立处理集线器下游的设备,即它可以将这些下游设备连接到不同的主客户机 ,以支持串行共享。 

  主客户机上的 NHCI 软件需要对 USB 系统软件的其他部分作修改。由于一个 USB 上的所有设备都共享总线带宽,主控制器要做传输管理,并为每个设备分配带宽。但是,来自 USB 服务器的数据不会与任何本地 USB 共享带宽,因为数据与信息是通过网络传送的。网络传输的延迟要高于本地 USB。因此,底层驱动程序需要有比较宽松的时序要求。只要类驱动器不需要严格的时间限制,这种方法也是可以用的。有些情况下,通过网络控制 USB 设备可能无法完成,或者与用户期望的方式不相符。对无线连接的传输延迟问题来说,对底层时序宽松的要求起着至关重要的作用。

  共享

  本项目的概念与各种无线 USB 规格和产品有类似之处,目的是为了替换 USB 主控与设备之间的点对点连线。但有一点这些方案都没有涉及,即让多个主控制器连续地在网络上共享 USB 设备。

  用 USB 服务器模型在一个网络连接上扩展 USB 可提供这种能力,这是 USB 所没有的。Keyspan公司 的 Welch 说:“我们把串行共享模型看作 USB 在网络上的抑制器应用。它可以实现所有功能的多方共享,例如一台多功能打印机上的传真、扫描仪和内存卡接口。你可以用市场上既有的 USB 设备获得这种功能,而不必等待重新设计一款产品。”

  最近推出的无线 USB 规范也解决了用无线网络功能替代 USB 设备与主控之间连接的问题(参考文献 3)。在这一点上,该规范只关注连线的替换,而没有考虑通过网络连接时多设备串行共享的扩展问题。该规范表示,USB 会话将能够与主控计算机上的其他设备共享超宽带射频频段,而规范把支持这种带宽共享的任务放在了无线 USB 主控端上。如果主控端必须考虑与其他设备共享带宽,那么为什么不利用无线网络连接这个很好的机会,在同一网络上与其他主控计算机共享设备和带宽呢?

  USB 接口已证明自己是一个有用且成功的电气与逻辑协议。设计师也用它增加了很多接口功能,如与主控计算机的无线连网,无需用户打开计算机外壳或者关闭计算机。本亲自动手项目验证了 USB 设备连接与共享的扩展能力,并且无需重新设计制造,无需等待未来的 USB 设备就可直接发挥连接性功能。

参考文献
1. Cravotta, Robert, "Gaming as serious business," EDN, Feb 7, 2002, pg 48.
2. Cravotta, Robert, "Forge ahead?," EDN, March 6, 2003, pg 50.
3. USB Implementers Forum, Wireless Universal Serial Bus Specification, Revision 1.0, 2005, www.USB.org. 


  USB 术语

  要开发和支持 USB(通用串行总线)设备,就需要理解 USB 2.0 规范以及与之相关的 OHCI(开放式主控制器接口)规范的内容(参考文献 A 与 B)。我们亦参考了 Jan Axelson 关于该项目的著作(参考文献 C)。下面就是出自这些参考书的术语解释,它们可能会帮助读者熟悉 USB 术语。

  USB 是一种轮询式电缆总线,它支持主控计算机与同时接入多个外设之间的数据交换。任何 USB 系统只有一个主控端。主计算机系统上的 USB 接口是主控制器,或 USB 主控端。主控制器的实现可以是硬件、固件或软件的组合。它初始化所有数据传输,因而所连接的外设可以通过一个由主控端安排、基于令牌的协议来共享 USB 带宽。总线支持热插拔外设,用户可以在主控端和其它外设处于工作状态时插入、配置、使用和拔下外设。USB 2.0 支持三种总线传输速度:高速 480 Mbps、全速 12 Mbps 和低速 1.5 Mbps。

  USB 设备的一个功能是为系统提供一种能力,一个物理设备能拥有一个以上的功能。USB设备可分为多个设备类,如集线器、人机接口、打印机、扫描仪或海量存储设备。USB 设备必须保维自标识和一般配置的信息,还必须经常显示与所定义的 USB 设备状态相一致的状态。集线器设备类是一种可提供 USB 设备接入点的 USB 设备。

  USB设备与 USB 主控端连接成一种多层星状拓扑结构。总线的每个线段都是主控端与一个集线器或一个功能,或者是连接到其他集线器或功能的一个点对点连接。各个集线器均位于每个星状结构的中心。主控系统整合有一个根集线器,提供一个或多个接入点。集线器保维状态位,报告每个端口上 USB 设备的连接与否情况。主控端通过查询集线器恢复这些状态位。在插入时,主控端会起动该端口,并在默认地址上通过设备的控制流水线寻址该 USB 设备。用于主控端和设备端的 USB 电缆连接器各不相同,并有密钥保护,使用户不会插入错误的设备。这种限制很重要,因为 USB 主控端必须满足的要求要多于 USB 设备,包括为每台设备提供电源和地线,即一个额定 5V电压和最高500 mA 电流。每个电缆段可以长达 5m,并且在主控端和设备之间最多可以级联五个集线器,这样外设距主控端最远可达 30m。如果要将外设距离扩展到 30m 以上,则必须用其它接口的长距电缆,例如本动手项目就使用了以太网连接。

  在主机和设备端点上,源与目标之间的 USB 数据传输模型是一个管线。数据流管线没有 USB 定义的结构,而消息数据管线则有。管线有相应的数据带宽、传输服务类型,以及端点特性,如定向和缓冲区大小。大多数管线在用户配置好 USB 设备后就存在了。一旦用户为设备供电,就存在一个消息管线,即默认控制管线,它提供对设备的配置、状态和控制信息的访问。

  总线枚举(Bus enumeration)功能是识别连接到总线上的设备,并为该设备分配独特的地址。由于 USB 允许在任何时候接入、拔出 USB 设备,因此总线枚举对 USB 系统软件是一个不间断的活动。总线枚举也包括对设备更换的检测与处理。

参考文献
1. USB Implementers Forum, Universal Serial Bus Specification, Revision 2.0, April 27, 2000,
http://www.usb.org/developers/docs/usb_20_02212005.zip.
2. USB Implementers Forum, Open Host Controller Interface Specification for USB, Release 1.0a, 1999,
http://h18000.www1.hp.com/productinfo/development/openhci.html.
3. Axelson, Jan, USB Complete, Third Edition, Lakeview Research, 2005.


  替换电缆

  Icron 方案不仅使 USB(通用串行总线)设备能够在网络上运行,而且其目的还在于用专用无线接口替换 USB 电缆。Icron 的无线架构采用了本地与远程 ExtremeUSB 子系统加密卡(Lex 和 Rex dongle),将 USB 设备连接到主系统上(图 A)。主 USB 系统软件不用修改,因为 Lex 和 Rex 会处理时序的适应问题。


  Turnaround Timer(回转定时器)参数限制了主控端或设备端对请求或告知收到消息

的响应时间。采用无线方案时,这个时间限制可以受到多种因素的影响,如半双工无线电在发射和接收模式之间转换的时间、由于带宽限制和丢包造成的较长传输时间、较高的传输误码率,以及由于纠错和加密处理造成的延迟等。

  Lex 和 Rex 系统有适应这种时序限制的办法,即当 Lex 子系统发现一个数据包不能在预定时间内返回主控端时,它会给主控系统送一个 NAK(否认)(图 B)。与此同时,Lex 会将请求转发给 Rex。Rex 将请求转发至设备,并为设备生成一个本地响应。然后,Rex 将消息传回 Lex。当主控系统重新发出请求时,Lex 辨认它已经缓存了所需信息,并将其发送给主控端。


欢迎进入老古论坛进行讨论
[通信网络] 相关文章:
基于TMS320C64x DSPs的MPEG-4实时编码器设计与实现
简介:
信息时代对于视频通讯的需求越来越广,从较低码率的可视电话、视频会议、实时监控到高码率的空中侦察、数字电视等,迫切要求将高效率、高质量的视频压缩算法实用化。MPEG-4于2000年正式成为国际标准并不断地扩展。它不仅支持码率低于64kbps的多媒体通信,还能支持广播级的视频应用。与以前的视频标准相比,MPEG-4可以提供更高的压缩效率、更好的交互性以及更强的抗误码能力。目前,MPEG-4已经成为视频压缩标准的主流。   MPEG-4算法非常复杂,其编解码的实时性难以保证,通常只能实现对中低分辩率视频的实时编码。本文基......

病毒防火墙解决方案
高通前高管淡看移动宽带应用需求,称Wi-Fi比3G更实用
阚凯力炮轰电信弊制 3G是否被利益集团俘获
AVS标准获信产部批准 国产IPTV标准大鸟先飞
新经济导刊:2006年三方激战IPTV
单刀、六位RF开关达到四频段GSM手机要求
网络处理器满足更高安全性需求
一种增强的LPC参数多级矢量量化技术
网络传送
 
下一个:[CPLD/FPGA]XILINX与TED推出面向数字显示器的可编程开发平台
简介:
  东京电子器件有限公司 (TED) 与赛灵思公司宣布推出一款可实现领先的显示器应用(如平板电视机监视器和显示器、背投电视机和数字投影仪)的高效设计和验证的开发平台。联合开发的 Spartan™-3E 显示器解决方案开发板利用Xilinx® Spartan-3E FPGA 的性能和低成本优势为面向丰富特性的显示器应用提供了第一个完全可编程的开发平台。该解决方案平台采用快速转换原型开发板的形式,提供开发全功能显示器产品所需的全套集成 IP,以及在一块电路板上集成连接显示板模块和视频/调谐器板所需的丰富 I/O。   由于价格不断下降和政府强令推广数字节目,平板显示器市......
 

上一个:[消费类电子]国内首台IPTV在质疑声中上市 售价近两万元

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒