|
USB 兼容性测试概述 |
【作者: Steve Kolokowski】2004年11月04日 星期四
|
|
浏览人次:【15480】
USB得以成功的其中一项秘诀,在于完善的兼容性测试程序。这道程序能检测装置是否符合规范并能否与其他USB装置共同运作,唯有通过兼容性测试的装置才能贴上USB的认可卷标。目前兼容性测试有两种途径,可分别透过USB Compliance Workshop(Plugfests)或透过个别的测试实验室进行测试。以上两种方式都能将通过检测的装置列入符合规范USB装置的整合厂商名单中。
![《图二 USB全速模式(Full-speed)的卷标》](/art/2004/11/041046380984/p2.gif)
《图二 USB全速模式(Full-speed)的卷标》 |
|
|
测试目的
USB IF所进行的兼容性测试是为了确保所有用户能使用正常运作的USB装置,由于所有USB厂商间彼此互相依赖以建立商誉,因此这套测试过程亦显得格外重要。若是有任何一位用户不满意其使用的USB装置,那么很可能就会连带影响用户后续使用其他USB装置的意愿。
测试内容简述
兼容性测试的目的是确认装置是否能在不同的层级中运作。而透过gold tree测试模式可检验出驱动程序于Windows环境下的表现,同时可检测装置在「真实情况」下是否能不受其他装置的干扰并继续正常运作。而USB Command Verifier则是根据USB规格书第9章中所要求的SETUP commands来检测装置。另外,电气套件(electrical suites)则负责检测USB信号(signaling)是否与电源相符合。
所谓的gold tree包含了一部正常运作的个人计算机、一组EHCI与UHCI主控端的控制器、一组五层深的集线器堆栈、一部USB摄影机、一部USB大量储存装置以及HID人性化接口(Human Interface)装置。利用gold tree测试能提供装置检测以确保USB在热插入(hot-plugging)的动作下,仍可正常运作于环境中的许多节点。此外,gold tree测试也可确认USB装置能在S3待机时(此处VBUS仍正常运作)、在休眠(Hibernate)状态下(此时VBUS已被移除)或是在主控端热开机与冷启动时仍以高速(high-speed)与全速(full-speed)模式下运作。
USB Command Verifier(USBCV)是Windows的应用程序,目前的版本能够在Windows 2000或XP操作系统上执行。USBCV特别装设一个主控端堆栈,以方便直接存取主控端的控制器。在这个程序下所执行SETUP指令不会在一般的操作系统上看到。如果装置是利用韧体的控制方式处理SETUP指令,那么这个程序可能会导致一些错误产生。
此外,electrical suites可检测装置是否符合信号与电源方面的规范。目前的电流消耗测试可检查待机电流、未设定电流及设定电流在高速与全速模式下的耗电量。而讯号质量测试目的是测量USB装置传输讯号的眼图(eye diagram);同时,接收器灵敏度测试能验证在高速模式下的失真度以及规范边界值处的接收端灵敏度。
目前多数的设计都会采用经过认可的收发器,因此主要在Plugfest所发现的电气问题都是最大电流(current draw)所致。装置上一些浮接的脚位极有可能使待机电流超过在严格规范下的500uA;另外,供电装置通常无法符合100mA未设定电流或500mA已设定电流的限制。因此,自行供电的装置通常无法在pull-ups联机到D+或D-之前侦测到VBUS。
需要通过那些验证?
为了通过兼容性测试,装置本身必须要能符合所有的USB电气、Gold Tree全套测试以及通过80%的共容测试。同时,也需提出完整的兼容性检查列表。这份列表主要是由设计人员填写,列出一些可能导致测试失败的常见USB错误设计;同时,也要详列出产品使用的连接器、缆线与半导体组件等受到认可的零件测试识别号(Test Ids,TIDs)。这些识别号可至USB.org网站的会员区查询,或直接由厂商提供。
如何检测装置?
一些独立的实验室提供收费测试装置,可以在任何时间依客户所需提供迅速的兼容性测试,而无须等待Plugfest的作业。这样的检测过程能善用研发资源以便执行其他工作。此外,某些独立实验室亦提供额外付费的除错服务。
Plugfests每年于两至三个月举办一次,一般是从周二下午一直到周五早上为止,让大多数的人有足够的时间往返。Plugfests提供现场测试的机会以检验错误的原因,许多人可立即修正错误并当场进行重新测试。
在Plugfest中,每个系统与集线器厂商都有固定的测试范围,称为测试套件(test suite)。装置与集线器会在不同的测试套件之间进行兼容性的测试,由于集线器厂商既为系统厂,同时也是设备厂;因此它们必须当成测试套件进行测试,并且也要像装置一样完成许多不同的测试。
测试实验室
Plugfest
无须送测人员
工程师或技术人员需花费3~4天的时间配合测试。集线器需要两位人员:其中一位进行系统测试套件,另一位则进行装置的测试
每项物品需花费2000~5000美元
USB I/F会员免费,不包含时间与旅费支出等花费。
需付费但享有无限咨询服务
现场有USB的专业人员协助除错,但必须与其他也想通过测试的50位会员共享这项资源
随时可测试
每年举办4~5次
暴露最少的原型硬件
会暴露主控端、集线器与驱动程序的原型
隐密性较高
隐密性较低
送测相关程序
加入USB IF或注册USB的卷标
装置需要厂商识别号(Vendor ID)以进行识别,常见的识别号取得方法有两种,可选择加入USB IF并每年支付2500美元的会费或者注册USB卷标但不加入USB IF,所需费用为每两年1500美元。USB I/F所提供的优势为::
- ●免费的设备兼容性研讨会(Plugfests);
- ●免无须卷标使用权管理费;
- ●免提供免费的厂商识别号(若参加厂商尚未申请);
- ●免参加发展厂商研讨会(Developer Conferences)或在电子商店消费等均有折扣 ;
- ●免提供参加USB IF的产业活动的机会,例如IDF和WinHEC booths等 ;
- ●免提供参加USB IF的市场计划的机会,例如零售讯息报导、商店讯息及未来的产品等;
- ●免提供参与USB IF的会议的机会,例如DWG、市场会议与规范会议
- 免五份免费的规格书 。(数据源为usb.org网站)
选择测试工作室或Plugfest
若选择参加plugfest,由于其经常于开放注册后短时间内就额满了,因此必须留意网页讯息,并事先注册登入Plugfest的网页;同时,需成为USB IF的会员方能参加Plugfest进行测试。
完成兼容性测试列表
如果在产品设计时间曾参阅兼容性测试列表,可以事先避免许多USB装置中常见的设计问题。倘若尚未完成列表,那么请务必填妥这份文件。
预先测试装置
在测试的过程中,预先测试装置将是能否成功通过测试的最大关键,毕竟多倏人不会希望在尚未确定装置是否能完整运作时就进行展示。相容性测试其实就是展示装置是否能够在一般使用者的环境下进行正常运作。读者可至http://www.usb.org/developers/docs#comp_test_procedures下载适合装置使用的测试程序以进行预先测试,并且利用现有的设备,彻底执行可事先进行的检测。在Plugfest中约有三分之一的装置无法通过测试,多半是因为在一些简单的测试中即出现像是D+的回馈讯号或是不正常的电流等问题。
相关产品的认可
当产品之间的设计十分类似时,一但其中的一项产品通过测试,那么其他的产品也可以相继加至整合厂商的名单内。由于许多OEM厂商会购买整合厂商列表中的USB接口板,如此一来相关产品也会因有极高的类似性而获得厂商认可。
然而,如果该产品之间有「明显差异」,那么仍需个别进行测试。对于「明显差异」的定义仍有待商榷,而最后将由兼容性审查委员会负责判定,并且会于USB IF的理事会中提出报告。一旦订定出「明显差异」的规则后,其内容将会公布于 http://www.usb.org/developers/compliance/上以提供参考,能确保送测的产品与每家厂商间没有「明显差异」的存在。而USB IF的稽查则将判定该出货产品与送测样品间是否存在差异性,若有,就必须重新将产品送测。关于使用USB-IF卷标的相关权利影响都规范在标准的卷标许可协议书之内。(数据源:USB.org网站)
需重新测试的状况
- ●微控制器(microcontroller)的设计改变,如新的架构或新的产品家族发表 ;
- ●印刷电路板上的连接器线路 。
无需重新测试的状况
- ●产品封装改变,如颜色与形状等变化;
- ●微控制器厂商变更,如非电路板布线改变或无任何韧体变更。除非有新的微控制器列于整合厂商名单中才需重新送测 ;
- ●微控制器韧体变更,且其模块的变更与USB功能无关;
- ●连接器的颜色与图案。
重新测试的需求
一旦装置列于整合厂商名单内,就必须要维持原有的USB电路设计。对于是否须针对修改过的装置进行重新测试,其规则就如同上述其他类似的装置测试的规范。
宽松认可(Waivers)
当装置仅轻微地超出规范的范围时,宽松认可(waivers)的规则可允许这些装置列入整合厂商名单中。举例来说,在现行高速模式测试程序中,如果装置仅无法通过第五层集线器的测试时,仍核准该装置通过高速模式的电气测试。然而宽松认可只是装置制造商与USB IF间的暂时协议。一旦该USB设计获得改善,则该产品就不再属于宽松认可。宽松认可的核定是由兼容性审查委员会(crb@usb.org)所做的决定。(作者任职于Cypress)
color="#FFFFFF" text="#000000">
|