一 前言
为了满足usb2.0一致性应用的需求,所有的usb2.0设计都必须满足usb if发布的usb2.0物理层一致性测试要求。相对于比较成熟的pc平台usb2.0 主机测试技术而言,基于通信类终端的嵌入式usb2.0 主机的测试面临更多的挑战。特别是进行二次开发的应用厂商而言,如何满足usb2.0物理层一致性测试要求很大程度上需要原厂在测试模式以及测试封包方面提供更多的支持。但应用需求的多样化导致了许多设计架构脱离了原厂的测试状态机控制范畴,问题接踵而来。
二 嵌入式usb2.0主机测试
1 产品usb部分原理及测试环境
产品usb控制原理
usb控制主机采用某大型通讯类方案提供商的iad解决方案,片内集成一个usb2.0控制器,然后通过一个usb hub中继对外提供2个高速主机接口。
测试设备:
dut_usb2.0功能框图
2 测试中出现的问题
本次测试将主要验证产品上两个usb高速主机接口的眼图。对于usb2.0物理层的眼图测试,usb if在usb2.0 spec中有着明确的眼图模板定义如下:
transmit waveform. template
关于usb高速主机眼图测试的测试方法,usb if在usb2.0 spec中也有清晰的定义,usb2.0主机控制器必须支持规定的测试模式。对于眼图的测试则必须支持test packet测试模式,连续发送规范的测试码流以测定眼图模板,上升下降时间,传输抖动以及其他的一些ac指标。也就是说测试是基于原厂对于测试模式的支持并提供相应的firmware。准备测试前工程师和原厂沟通后顺利拿到了测试firmware和测试命令。原厂提供的测试方法是在上电启动之后进入 cfe模式然后下载和运行测试专用image,这样就可以使用test_packet命令进行眼图的测试了。测试连接图示如下:
测试连接图
一切看起来都是那么的顺利,但是当我们通过串口进行test packet命令下发之后在两个主机接口却看不到信号波形出现。因为是第一次进行嵌入式usb的测试,所以对于出现的问题是没有任何经验可以参考和借鉴的。从串口信息来看是显示命令下发成功的,那问题到底出在哪里呢?只有从信号流向一步一步地查找了。工程师首先测试了usb hub与cpu之间的upstream接口,发现有相应的信号波形出现。也就是说usb主机控制器已经执行了test packet命令并发送了测试码流,问题出现在了usb hub这里,它并没有向两个down stream facing port转发码流。而且原厂提供的命令也很奇怪,根据有pc主板测试经验的工程师的意见,对于hub的测试应该需要指定测试端口才对。而在测试命令中我们并没有看到相应的指令而只有简单的test packet命令。在询问了原厂技术人员后问题有了答案:
(1)原来我们采用的方案只支持一个usb 主机接口,所以在片上只集成一个usb 主机 controller,测试命令也是基于主机控制器类型的。而我们的板级应用是采用了一个usb hub与主机 controller中继来实现多端口应用的扩展,根本无法进行hub down stream facing port的测试。
(2)并且原厂的测试是在cfe模式下通过下载运行特定的测试程式来进行测试,在这个阶段,并没有实现usb hub的初始化以及配置字的操作,也就是说usb hub是不可控的无法进入测试模式的设定。我们的多usb主机端口的应用设计使得系统架构中加入了usb hub进行中继,已经超出了原厂设计的usb测试状态机控制范畴,导致了无法通过原厂提供的测试命令进行测试。再次和原厂技术支持讨论新的测试程式的开发从时间说来看已经不实际了,客户非常关注并要求我们必须尽快给到usb 主机的测试报告。第一次进行嵌入式usb 主机测试就遇到如此棘手的问题,工程师们一时间束手无策。有没有另外的方法呢?
3 问题分析解决
在和客户方面的资深工程师分析和讨论之后,我们有了一个非常巧妙的解决方案,当然还需要实际的测试来验证。usb专业测试人员都知道,usb if针对usb一致性测试提供了一个专用测试工具 (usb-if hs electrical test tool)以方便开发者进行相关的usb测试。但这个工具只能运行在pc主机上,而我们的嵌入式系统其实也是通过相应的底层命令来实现这个工具相关的测试功能。从测试拓扑来看,我们目前的问题主要在于嵌入式控制主机无法实现对usb hub的控制和测试模式设定。从控制系统的角度来说,不管是嵌入式控制主机还是pc主机都实现的是usb主机控制器的作用,也就是说我们可以使用pc主机替代嵌入式控制主机,在一台装有usb-if hs electrical test tool的pc上对产品板级usb hub进行down stream facing port的test packet测试了。当然,我们首先要断开嵌入式控制主机与usb hub之间的up stream facing port并飞线与pc主机的usb接口连接。因为测试单扳本身提供5v供电,所以我们只需要飞出d+/d-/gnd三线即可。完成后的图示如下:
usb hub up stream port飞线图
我们使用了一台装有usb-if hs electrical test tool的thinkpad r51作为控制平台,在按照上面的图示进行测试连接并将产品上电之后我们在测试工具中选择了hub类测试并发现了板级的usb hub。我们已经初步实现了之前关于控制系统的设想,图示如下:
控制工具设置界面
在图示中的port control栏中选择test packet命令,在相应的port栏中选择我们需要测试的端口如1,示波器上出现了我们期待已久的信号波形(如下)。按照lecroy示波器usb2.0测试软件中的step by step,示波器很快就完成了测试并输出了分析报告。有专业的分析工具就是不一样,我们根据测试报告中的关键测试数据,优化了我们的电路设计使得主机接口的信号更加理想(图示如下,本文中不对分析内容进行展开)。
优化调整后的usb-主机眼图
三 测试总结
usb主机信号质量的测试不仅仅是眼图部分,usb if关于usb2.0一致性测试规范还有很多的测试项目需要完成。而且对于嵌入式usb测试而言,会面临更多的挑战,希望本文可以给到从事嵌入式usb开发测试的工程师一些思路和借鉴。
亚马逊终推线上药店,正式向连锁药店宣战
内网专线和外网专线有什么区别?
PCI背板的VIO电源实作
一个基于PyTorch的几何深度学习扩展库,为GNN的研究和应用再添利器
锤子科技450万存款被冻结 锤子还能不能挨过年关
精确测量嵌入式USB信号质量
运算放大器基础—用作运算器
人形机器人各类传感器市场拆析
锂电池保护板厂家教你选择保护板及充放电运用事项
应用于纺织业的机器人以3D视觉作为导引
云南省5G移动通信将进一步开放公共设施资源助推5G商用
MES系统的最大特点,可实时收集生产过程中的各类信息
基于三星S3C2410的ARM-Linux电子控制油门设计
区块链技术可以用来记录房产交易吗
丰科卓辰多相机高速图像数据实时采集存储设备
欧盟委员会发布新的照明相关法规
iOS11正式版体验评测:老iphone就别为难自己了,还是等iPhoneX吧
RTV防水密封点胶加工与PUR点胶加工的区别
HV9911构成的升压型LED驱动电路
政策与技术助推,未来氢能或将迎来产业爆发