tag 标签: hd-usb12 usb协议分析仪

相关博文
  • 热度 17
    2010-1-18 11:51
    4770 次阅读|
    2 个评论
           感谢朋友们对我发的上一个帖子《图解USB协议之一 枚举过程》的支持,虽然手头的项目比较忙,周末还是抽时间写了这个专题的第二篇,不能让大家失望啊,哈!     本篇分析数据包,仍然使用“HD-USB12”USB协议分析仪采集分析数据。分两部分内容:首先和童鞋们一起简单复习一下USB协议中的相关知识,然后用“HD-USB12”USB协议分析仪采集几个实例进行分析。     一、协议知识 1)PID格式,详见图1                                                   (图1) 注: a、 上图是从低位到高位 b、 高四位是低四位取反 c、 PID自校验 2)PID分类,详见图2                                                   (图2) 3)Token包格式(不包括SOF),详见图3                                   (图3)  注: a、 ADDR表示设备地址 b、 ENDP表示端点号 c、 CRC5表示设备地址及端点号的校验和 4)SOF包格式,详见图4                                          (图4)  注: a、 FrameNumber表示帧号,1毫秒发送一帧 b、 CRC5表示FrameNumber的校验和 5)Data包格式,详见图5                                     (图5)        注: a、 DATA表示要传输的数据,全速USB的最大长度为1023Bytes,高速USB 的最大长度为     1024Bytes b、 CRC16表示DATA的校验和 6)Handshake包格式,详见图6                  (图6) 二、USB传输包组(事务)实例分析 1)IN包组分类(懒得自己总结,直接从HD-USB12的数据包过滤功能截取),详见图7                  (图7) 2)IN包组分析(通过HD-USB12监控软件仅过滤出IN包组数据),详见图8                                              (图8) a、Index :表示主机向设备发送IN指令取数据,设备回应没数据; b、Index :表示主机向设备地址0(DEV = 00)端点0(EP = 80,  最高位表示传输方向)发送IN指令取数据,设备回应端点停止(STALL); c、Index :表示主机向设备地址0(DEV = 00)端点0(EP = 80,   最高位表示传输方向)发送IN指令取数据,设备收到指令后向主机发送数据     Index ,主机正确收到数据后回应ACK  d、Index 的内容,详见图9                                            (图9) e、Index 的内容,详见图10                                               (图10) f、Index 的数据发送时序,详见图11(只截取了部分,时序做的很漂亮,看着也很清晰)                                                  (图11) 注意时序图的Offset 其传输的数据为FF,根据USB采用的传输编码(NRZI)前6位为1后插入1位0,因些第7位的传输要传输2位(01),其时间也占用两位的时间。(啊啊!有时序功能就是清楚,时序还有其它用途以后分解) 3)OUT包组分类,详见图12(直接从HD-USB12的数据包过滤功能截取)                   (图12) 4)OUT包组分析(通过HD-USB12监控软件仅过滤出OUT包组数据),详见图13                                                (图13) a、Index :表示主机向设备地址0(DEV = 00)端点0(EP = 00,  最高位表示传输方向)发送Out指令后,发送数据Index (主机发出空回应所以Index 没有数据),设备收到数据后回应ACK; b、Index 的内容,详见图14                                               (图14) c、Index 的内容,详见图15                                                 (图15) 5)SETUP包组分类,详见图16(直接从HD-USB12的数据包过滤功能截取)                        (图16) 6)SETUP包组分析(通过HD-USB12监控软件仅过滤出SETUP包组数据),详见图17                                                   (图17) a、Index :表示主机向设备地址0(DEV = 00)端点0(EP = 00, 最高位表示传输方向)发送SETUP指令后,发送数据Index ,设备收到数据后回应ACK; b、Index 的内容,详见图18                                                     (图18)  c、Index 的内容,详见图19                                                         (图19) 以上数据包分析是根据现有特定设备捕获得到,并不完整涉及到所有事务包组,如IN+DATA+NAK、OUT+DATA+NAK、SETUP+DATA+NAK等等。 PDF文档下载: http://forum.eet-cn.com/downloadAttachment.jspa?messageID=1200668595attachmentId=29431pageUserId=8731679306userID=8731679306
  • 热度 17
    2010-1-18 11:47
    4749 次阅读|
    1 个评论
         前不久花了2300大银败了个HD-USB12协议分析仪(肉痛…)。不过还蛮好用,以后做USB固件开发就方便多了。     看到21ic坛子里arthur0561大虾发了一系列USB协议入门总结的文章,向他(OR她?)表示一下敬意。我也准备用手头这台协议分析仪以实例和图解的方式描述一下USB协议的相关知识,希望对初学USB的童鞋有些帮助。     废话少说,首先图解一下USB枚举过程。 ----------------------------------------------------------------- 一、总线复位及向默认地址0发送GET_DESCRIPTOR指令包,请求设备描述。如(图一)所示:                                      (图一) 1)Index :表示USB插入总线复位 2)Index :表示主机向默认地址发送GET_DESCRIPTOR指令包,详细信息也抓出来了,如(图二)所示:        (图二) 3)Index :表示设备向主机发送设备描述数据Index 4)Index :表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答; ----------------------------------------------------------------- 二、再次复位总线及向设备发送SET_ADDRESS指令包,设置设备地址。如(图三)所示:                                     (图三) 1)Index :表示再次总线复位,该复位自动完成,不是手工插拔USB完成 2)Index :表示主机向默认地址发送SET_ADDRESS指令包,详细信息如(图四)所示:                 (图四) 3)Index :表示设备完成SET_ADDRESS指令后,给主机发送一个空应答; ----------------------------------------------------------------- 三、向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求设备描述。如(图五)所示:                                         (图五) 1)Index :表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图六)            (图六) 2)Index :表示设备向主机发送设备描述数据Index 3)Index :表示设备向主机发送设备描述数据Index 4)Index :表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答; ----------------------------------------------------------------- 四、向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求配置描述。如(图七)所示:                                    (图七) 1)Index :表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图八)           (图八) 2)Index :表示设备向主机发送配置描述数据Index 3)Index :表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答; ----------------------------------------------------------------- 五、重复向第二步设定的设备地址发送GET_DESCRIPTOR指令包,取完所有设备描述及配置描述; ----------------------------------------------------------------- 六、向第二步设定的设备地址发送SET_CONFIGURATION指令包,设置配置描述。如(图九)所示:                                   (图九) 1)Index :表示主机向地址01发送SET_CONFIGURATION指令包,详细信息见(图十)                (图十) 2)Index :表示设备完成SET_CONFIGURATION指令后,给主机发送一个空应答 至此,枚举过程结束,设备可通过驱动与主机通信了。     以上的USB枚举过程是根据现有特定设备捕获得到,并不完整涉及到USB协议的所有指令包,如GET_STATUS指令包、CLEAR_FEATURE指令包、SET_FEATURE指令包、SET_DESCRIPTOR指令包、GET_CONFIGURATION指令包、GET_INTERFACE指令包、SET_INTERFACE指令包、SYNCH_FRAME指令包等。       PDF文档下载: http://forum.eet-cn.com/downloadAttachment.jspa?messageID=1200664364attachmentId=29138pageUserId=8731679306userID=8731679306