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,也支持以太网,但芯片与电路板都处于发布前的最后开发阶段。这个延迟看来对项目进度没有明显的风险,而且也无其他的候选部件,因此,我们决定选用这种很有前途的