USB设备的调试与测试技巧
来源:电子工程专辑 作者: 时间:2003-04-29 20:45
摘要:USB是一种灵活的高速接口技术,可以替代计算机中原来的串行口和并行口,但灵活性高也意味着更加复杂,使得USB设计调试以及设计完成后的验证都比较困难。本文首先对USB规范作一简要介绍,然后详细讨论USB产品在调试与规范验证方面的一些实用技巧。
通用串行总线(USB)是一种很流行的接口,可用于那些与个人计算机进行通信的设备。近年来,所有新PC机和Mac机都支持USB技术,这种接口有足够的灵活性,既可用于驱动器和键盘之类的普通外围设备,也可用于定制按特殊用途设计的外设。此外USB还有一些对用户和开发人员都很有吸引力的特性,如从总线向设备提供电源、易于通过集线器进行总线扩展,以及主计算机对设备能自动识别等等。
但USB的超强性能也意味着它的接口要比它所替代的老式串行和并行接口都复杂,每个USB设备必须响应总线上的一系列标准请求和各种事件。大多数总线交流需要双向通信,而且延迟必须很小,总线上的数据都经过编码,单单只用示波器或逻辑分析仪观察不是很容易。工程技术人员可以选择不同的工具与技术或采用不同设计,简化并加快USB的开发和故障排除。
USB规范
USB规范是由英特尔、微软和另外几个PC及外设公司共同提出的,在USB应用者论坛(USB-IF)的网站上提供了供开发人员使用的规范文本、相关信息及工具(详情可访问http://www、usb、org)。
每个总线上有一个主控制器,用来控制与总线上面设备的通信。为了给设备提供更大带宽,一台计算机可以有多个主控制器,分别控制其自己的总线。
USB支持三种总线速度:低速1.5Mbps、全速12Mbps和高速480Mbps。高速模式是2000年发布的规范2.0版本新增加的,Windows XP是支持USB 2.0的第一个Windows系统,微软公司允诺在Windows 2000和Windows ME中对USB 2.0提供更新支持,而其它操作系统以后也将逐渐支持USB 2.0。
对于嵌入式PC操作系统,Windows CE也支持 USB。大多数Windows CE计算机作为USB主机使用,Windows CE 3.0中还包括用于Cypress/ScanLogic公司SL11主/从控制器的驱动程序。有了这些驱动程序(或者用于其它控制器的类似驱动程序),一个Windows CE计算机还可以作为USB外设使用。
USB的多功能性主要归功于它的4种传输类型,每一种类型适用于不同的用途。其中控制传输模式用于传输枚举过程中的请求,也用于发送请求至设备和接收答复(可选);中断传输模式用于键盘鼠标之类由主机定期发出请求和发送数据的设备;批传输模式用在诸如打印机和扫描仪之类的设备中,这类设备要求传输速度快,但在总线忙碌时传输数据可以等待;同步传输用于实时伴音和其他应用,这类应用对时序要求很高,但允许有偶尔的错误。
在自举或者当某个设备连接到总线上时,设备集线器就向主机报告连接情况,在一个称为枚举的过程中,主机发送系列请求以了解连接的设备并与之建立通信,设备则以所谓描述符数据结构返回应答信息。Windows的设备管理器将描述符内的信息与PC内部INF文档进行比较,从中找出最佳匹配,然后指定一个设备驱动程序,这样应用程序就能够访问该设备了。
所有设备必需遵循USB对功率管理的要求,包括限制设备吸收的总线电流和检测什么时候进入低功耗挂起状态,允许的电流量取决于器件描述符中的信息。
目前市面上有很多带USB功能的设备控制器芯片可供选用,有的是带一个USB口的微控制器,有的是非CPU控制器,上面带有一个USB口和一个用于与普通微控制器通信的串口或并口。大多数具有USB功能的微控制器都有C语言编译器,如果你熟悉某个微控制器系列,那么它提供的USB功能变量将非常有用。测试USB设备的通信功能包括几个阶段,第一个目标是成功枚举,如果设备不能枚举,那么接口什么事也做不了。其它测试包括让设备执行预定的任务(例如读出或写入文档至一个USB设备),以及验证该设备是否遵循功率管理规则。
USB通信调试可在三个位置进行,即在PC主机、设备和线缆等处,每个方案都有其自己的优点。
![]() |
在主机上进行调试
在主机处,可以验证一个设备是否枚举成功并能执行预定的功能。在主机检测到问题后,要找到问题根源常常还需要检查设备本身硬件或线缆中的总线通信流量情况。
当USB设备连接到主机后,Windows的设备管理器(图1)会进行快速检查,看设备枚举是否有问题。图标列表上的惊叹号表示与该设备通信或寻找驱动程序时有问题,而图标上的X号则表示设备存在但己不起作用。
为精确地看到主机在枚举时收到什么信息,可以使用USBCheck应用软件包或者新的USB指令验证器工具,USB-IF网站上免费提供了这两种工具。USBCheck能观察描述符、发送控制请求、观察结果以及在集线器和HID(拟人接口设备)上对设备做进一步测试。
![]() |
当出现错误时,Windows返回的错误信息通常提供不了太多帮助。例如向HID类设备发送WriteFile()函数失效时,返回的错误一般是“CRC Error”,而造成传输失效的任何固件问题都会得到这个错误信息。通常排查错误要是从CRC计算着手基本上是找不到什么的,跟踪这类问题出现的原因常常需要在设备或总线上进行调试。
认证测试USB应用者论坛和微软公司可为USB设备和主机软件开发人员提供测试,通过测试的产品可以在上面使用USB标识或者Microsoft Windows标识。
为了能在多种条件下彻底测试产品,USB-IF成员可以将自己的设备在USB-IF指定的认证程序中进行登记,一年登记费用为2,500美元,其中包括程序运行费用,以及其它支持USB产品开发和在市场上推广USB活动的费用。当某个设备符合认证程序的标准时,USB-IF将认为该设备“测量结果可以接受”,然后会把它加到认证设备总表中。在收到签署的许可协议和付款后,USB-IF将授权这一设备可以使用USB标识。
认证程序有两项评判标准,分别是检查对照表和认证测试。检查对照表包括一些与产品及其功能有关的问题,检查表可以提供给供应商,外围设备、集线器、带USB主机系统和线缆等不同供应商有不同的对照表,有些产品还需要多个检查表。外围设备检查表覆盖了机械设计、设备状态与信号以及工作电压和功耗,每个问题都相应附有标准规范中的对应页面作为参考,可以从中找到更多信息。从USB-IF的网站上可得到这些检查表。
为帮助通过电气测试,USB-IF还提供了一个USBHSET工具,其中含有软件和测试步骤。另外也可以使用专业测试服务咨询机构VI Engineering的USB预认证测试仪,这是一个硬件单元,能执行测试文件中的所有电气测试,其中包括在LabView下运行的软件,可以观察到眼图、上升与下降次数、截面电压、浪涌电流及其它更多内容。
为帮助验证USB规范第八章中所讨论协议的响应情况,位于比利时的PIMC公司提供了一个名为Ch8ck的工具。Ch8ck执行的测试包括向并不支持的方向或者传输类型发送一个信息包ID,然后检查中断端点的响应,以及要求CRC值时的位填充情况。当认为产品能通过检查表上各项内容时,就可以准备进行认证测试了。USB-IF对一些机构提供资助,可以用不同类型的硬件测试设备,每个机构都有很多供应商和产品。你可以与主机硬件供应商一起安排专门测试,也可以参与USB-IF的“plugfests”测试,这个测试将有尽可能多的供应商把他们的设备连到一台主机上,观察所有设备是否可以相互和平共处。USB-IF也授权一些私人实验室进行认证测试。
认证测试程序文件对测试有详细描述,包括对标准请求的响应、功率的消耗和分配、信号质量和协同性等。其中协同性测试将你的产品与其它多个USB外围设备连在一个系统中并使用多种软件,以模拟用户使用情况。
设备应该工作正常,不会出现任何设备检测不到错误或者系统崩溃、死机或重新自举等错误。设备不仅要在一条只连接一个设备的总线上通过测试,而且也应该在一条连有多种集线器和其它通用外围设备的总线上通过测试。
如果设备通过认证测试,就有资格使用USB标识,为取得标识使用权,高速设备还必须在全速模式下测试所有功能。此外非USB-IF成员还须支付额外一项管理费,数额为每两年1,500美元。
对于连接在PC上的设备,微软公司鼓励采用Windows硬件质量实验室(WHQL)的测试方案,通过这些测试的设备可以使用Microsoft Windows标识,并将列入到微软公司的硬件兼容表中,同时微软公司也会将设备的驱动程序加入到Windows驱动程序库中。
微软公司提供了用于硬件和设备驱动程序的测试组件,你可以下载所需组件并对你的设备进行测试。当你相信你的设备能够通过所有测试时,就可以提交一份材料给授权的测试机构,材料中应包括设备、驱动程序和相关文档、测试记录以及相应的费用。
在http://www、microsoft、com/hwtest网站中可以找到有关WHQL的更多信息。
在设备上进行调试
在设备上的调试与任何嵌入式系统调试类似,提供带USB功能微控制器的供应商同时也提供了带监控程序的开发系统,监控程序可以设置断点、单步运行、跟踪模式和其它自诊断工具。
USB通信所需的固件支持数量取决于控制器芯片的结构,从芯片供应商
上一篇:通过有效的故障管理提高系统可靠性
下一篇:元件竖立问题的解答