在线工博会

USB端口找到新居,落户嵌入式系统
ECN资深技术编辑 Jon Titus
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
安装过PC的人员都知道,通用串行接口(USB)具有与即插即用相似的性能。因而,将USB端口移植到嵌入式系统是一种方便的控制外部设备的办法。毕竟USB只有两条信号线和两条电源连接线,设计一个USB端口不会有什么困难吧。这一任务说起来简单,对设计者却有不少困难。不过,供应商可以提供从板卡到软件的一切帮助。
在一个嵌入式系统上添加USB端口的最简单的办法是采用基于Windows的计算机。很多单板机(图1)提供了内置的USB端口,并且运行Windows 软件。许多USB外设都装有现成可用的Windows驱动器。当你需要采用实时操作系统(RTOS)时,任务就会变得困难起来。若干家公司提供了能够简化USB端口设计的芯片和软件,还可以获得在片上系统添加端口的知识产权(IP)许可证。

(图片)

图1 EBC-C3Plus等单板机提供了内置的USB主控端口

USB设备可以扮演主控或外设的双重角色。外设无需太高的智能度,但主USB端口却要求具备处理能力和控制软件。USB(OTG)规范考虑到让某些外设可以具备有限的主控功能,这样USB设备能在没有PC基主控器的情况下实现通信。
最新标准(USB 2.0)提供的总线速率是1.5Mbit/s(低速)、12Mbit/s(全速)和480Mbit/s(高速)。可惜,很多用户认为标有“USB 2.0”字样的设备一直在480Mbit/s的速率工作。但很多遵循USB 2.0的设备是在较慢的传输速率下工作。
在规划一个嵌入式应用时,你要确切知道使用什么USB设备——打印机、海量存储单元还是I/O控制器。然后,决定你需要多少端口,是否需要主控、外设还是两种端口都要。大多数嵌入式应用并不需要外设端口。
你在评估端口配置时,应该决定你的数据率需求。例如,虽然一个应用可以平均10Mbit/s的速率进行数据传输,但也可能需要以更高的速率传输突发性数据。请记住,要实现更高的数据传输,就需要在USB连接的两端采用更大的缓冲区。你可能需要将性能要求稍微降低一些以减少设计所需的昂贵缓冲。
如果你对数据率没有把握,可以从USB主控芯片厂商那里购买开发板,然后在PC上对你的应用进行模拟。主控芯片供应厂商包括TransDimensions,Cypress半导体,NEC和Philips半导体公司。以TransDimension为例,它提供2端口和3端口的主控芯片和软件。另外,很多公司也出售作为USB外设控制器的芯片。
主控制器芯片的支持软件有多种,从支持Philips ISP1561的基于Windows的驱动器,到支持TransDimension器件的多种RTOS软件。Cypress提供用于EZ主控IC的Linux和VxWorks驱动器。所有的USB主控端口都需要一个“堆栈”,它的简单含义是软件的分层布置,如图2所示。各层形成从底部物理层(连线和芯片)一直到顶部应用软件层的结构。

(图片)

图2 USB堆栈

在物理层,芯片和IP厂商已经采用了标准的软件-接口连接,它们可以简化嵌入式设计中主控器的运用。这样,堆栈往往遵循如下标准:开放式主控制器接口(OHCI)、通用主控制器接口(UHCI),或者更新的为USB2.0规范开发的增强型主控制器接口EHCI。这些规范描述了主控制器所用的寄存器级操作。通过这些标准的采用,芯片制造商提供了驱动器软件的通用接口。OHCI、UHCI和EHCI规范明确了主控制器寄存器和驱动器软件之间的互操作。
通常,硬件抽象层,或者包装层将堆栈和驱动器与特定微处理器的具体实现细节屏蔽开来。设计者可以获得包装层的源代码,因此能对它进行修改,以便适应所选定的具体微处理器和RTOS。如果你不想深入了解这一层的软件细节,可以由供应商对包装层进行定制开发。你可能会发现,启动项目时即采用兼容的微处理器、堆栈、RTOS和USB主控制器将使开发变得更为容易。
除了堆栈,开发者还将需要控制外设的驱动器。虽然Windows、Windows CE和Linux可以调用用于多种外设的、种类极为丰富的驱动程序,但你还是会发现其他操作系统没有提供同样的多种选择。IC厂商们提供了USB级驱动器,它们可以提供控制同类器件所需的一组最小的函数集。各类器件包括打印机、照相机、人机接口、海量存储设备、通信器件等等。例如,打印机类的驱动可以获知打印机的状态、打印机初始化、发出并接收打印机数据、以及打印机复位。
这样一来,你就很可能找出一种与特定RTOS和处理器一起工作的打印机类驱动器。不过,打印机制造商可以在该类驱动器的基础上获得功能更强的驱动器,这些驱动器通常称为同类软件库。但是,如果你计划控制一个定制的I/O设备,还要准备编写自己的驱动器。
虽然,一台PC无论用户需要与否都可以存储成百上千的USB设备驱动器,但嵌入式系统却不具备此般灵活性。所以,你可能只采用那些能确保与你的系统一起工作的外设。由于很多嵌入式应用的磁盘空间有限,而只配备几种常用器件的驱动器。记住,如果你不能确定与嵌入式系统相连的器件的话,得到的就不是一个好设计。在你考虑软件和驱动器时,请详细规定与USB端口通信的设备的具体情况。
在某些情况下,对小尺寸、高可靠性或者大批量生产的器件的需求会将一个嵌入式系统从电路板 “挤压”成为一块芯片。因此,工程师们必须获得知识产权的许可证,将其集成到ASIC或者FPGA中。若干公司以IP形式提供USB主控控制器。Mentor Graphics公司提供一种全速USB控制器Inventra,它可以用作一个主控或者外设。Synopsys公司提供DesignWare核,它有多种类型的USB端口。最后,ARC公司提供若干种USB设计的许可证。各家公司以VHDL或Verilog代码的形式提供其USB核。
幸运的是,USB核带有标准的硬件接口,如ARC公司为其微处理器开发先进高速总线(AHB),它可以用于多种其它的处理器核。IP厂商还可以支持由虚拟插座接口联盟(Virtual Socket Interface Alliance)制定的外围虚拟部件接口(PVCI)标准。如果你决定去获取USB IP的许可证,务必确保它适合所选定的RTOS。IP许可证厂商可提供一系列兼容的软件产品和开发工具。另外,IP厂商自己可在软件方面提供帮助。 10/14/2005


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站