图解USB协议之一 枚举过程【转】

转自:http://blog.csdn.net/myarrow/article/details/8270060

0. 枚举流程

   • 连接了设备的 HUB 在 HOST 查询其状态改变端点 时返回对应的 bitmap,告知HOST 某个PORT状态发生了改变。 
   • 主机向 HUB 查询该PORT的状态,得知有设备连接,并知道了该设备的基本特性。  
   • 主机等待(至少 100mS)设备上电稳定,然后向 HUB 发送请求,复位并使能该PORT。 
   • HUB执行PORT复位操作,复位完成后该PORT就使能了。现在设备进入到defalut状态,可以从Vbus获取不超过 100mA 的电流。主机可以通过 0地址与其通讯。 
   • 主机通过0地址向该设备发送get_device_descriptor标准请求,获取设备的描述符。
   • 主机再次向 HUB 发送请求,复位该PORT。 
   • 主机通过标准请求 set_address给设备分配地址。 
   • 主机通过新地址向设备发送 get_device_descriptor标准请求,获取设备的描述符。 
   • 主机通过新地址向设备发送其他 get_configuration请求,获取设备的配置描述符。
   • 根据配置信息,主机选择合适配置,通过 set_configuration请求对设备而进行配置。这时设备方可正常使用。

 

1. GET_DESCRIPTOR

      总线复位及向默认地址0发送GET_DESCRIPTOR指令包,请求设备描述。如(图一)所示:

 

(图一)

1)Index[4 - 5]:表示USB插入总线复位
2)Index[7 - 8]:表示主机向默认地址发送GET_DESCRIPTOR指令包,详细信息也抓出来了,如(图二)所示:

(图二)

3)Index[15 - 17]:表示设备向主机发送设备描述数据Index[16]
4)Index[18 - 19]:表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答;

2. SET_ADDRESS

     再次复位总线及向设备发送SET_ADDRESS指令包,设置设备地址。如(图三)所示:

(图三)

1)Index[22 - 23]:表示再次总线复位,该复位自动完成,不是手工插拔USB完成
2)Index[25 - 27]:表示主机向默认地址发送SET_ADDRESS指令包,详细信息如(图四)所示:

(图四)

3)Index[29 - 31]:表示设备完成SET_ADDRESS指令后,给主机发送一个空应答;

 

3. GET_DESCRIPTOR<请求设备描述>

    向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求设备描述。如(图五)所示:

 

(图五)

1)Index[33 - 35]:表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图六)

(图六)

2)Index[41 - 43]:表示设备向主机发送设备描述数据Index[42]
3)Index[45 - 47]:表示设备向主机发送设备描述数据Index[46]
4)Index[48 - 50]:表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答;

 

4. GET_DESCRIPTOR<请求配置描述>

向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求配置描述。如(图七)所示:

(图七)
1)Index[52 - 54]:表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图八)

(图八)
2)Index[57 - 59]:表示设备向主机发送配置描述数据Index[58]
3)Index[60 - 62]:表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答;

 

5. 读取完整设备描述及配置描述

       重复向第二步设定的设备地址发送GET_DESCRIPTOR指令包,取完所有设备描述及配置描述;

6. SET_CONFIGURATION

       向第二步设定的设备地址发送SET_CONFIGURATION指令包,设置配置描述。如(图九)所示:

(图九)
1)Index[139 - 141]:表示主机向地址01发送SET_CONFIGURATION指令包,详细信息见(图十)

(图十)

2)Index[143 - 145]:表示设备完成SET_CONFIGURATION指令后,给主机发送一个空应答
至此,枚举过程结束,设备可通过驱动与主机通信了。

       以上的USB枚举过程是根据现有特定设备捕获得到,并不完整涉及到USB协议的所有指令包,如GET_STATUS指令包、CLEAR_FEATURE指令包、SET_FEATURE指令包、SET_DESCRIPTOR指令包、GET_CONFIGURATION指令包、GET_INTERFACE指令包、SET_INTERFACE指令包、SYNCH_FRAME指令包等。

转自:http://forum.eet-cn.com/BLOG_ARTICLE_2806.HTM?jumpto=view_welcomead_forum_1354841784500

时间: 2024-09-24 11:57:52

图解USB协议之一 枚举过程【转】的相关文章

USB枚举过程【转】

转自:http://blog.csdn.net/myarrow/article/details/8270029 1. 枚举是什么?        枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序.调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了.        USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告

服务器-CIFS协议如何枚举网络上的资源(共享文件夹/打印机)

问题描述 CIFS协议如何枚举网络上的资源(共享文件夹/打印机) 最近在学习CIFS协议,用WireShark拦截SMB包发现客户端在连接ipc$之后直接就开始查询服务器端共享目录的信息了,但是没看到服务器端返回的共享目录信息,请问这些信息是怎么发送给客户端的? 谢谢 解决方案 图库了徒劳咯的吗?咯模拟

USB协议疑问,USB包五部分与设备请求命令区分

问题描述 USB协议疑问,USB包五部分与设备请求命令区分 USB包组成五部分: 同步字段(SYNC).包标识符字段(PID).数据字段.循环冗余校验字段(CRC)和包结尾字段(EOP) 设备请求命令 bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2) 我要问的是,设备请求命令 不属于 包 吗? 如果属于 包 那么 数据跟这些对不上的:同步字段(SYNC).包标识符字段(PID).数据字段.循环冗余校验字段(CRC)和包结尾字段

图解Http协议 (转)

  一.技术基石及概述 问:什么是HTTP? 答:HTTP是一个客户端和服务器端请求和响应的标准TCP.其实建立在TCP之上的. 当我们打开百度网页时,是这样的: https://www.baidu.com 多了个S,其实S表示TLS.SSL.在这里不做解释,因此HTTP的技术基石如图所示: 那HTTP协议呢?HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议.Web上,服务器和客户端利用HTTP协议进行通信会话.有O

JavaEE 要懂的小事:一、图解Http协议

一.技术基石及概述 问:什么是HTTP? 答:HTTP是一个客户端和服务器端请求和响应的标准TCP.其实建立在TCP之上的. 当我们打开百度网页时,是这样的: https://www.baidu.com 多了个S,其实S表示TLS.SSL.在这里不做解释,因此HTTP的技术基石如图所示: 那HTTP协议呢?HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议.Web上,服务器和客户端利用HTTP协议进行通信会话.有OOP

图解TCP-IP协议

本文通过两个图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图1所示,给出了TCP通信过程的示意图. 图1 TCP 三次握手四次挥手 图1主要包括三部分:建立连接.传输数据.断开连接. 1)建立TCP连接很简单,通过三次握手便可建立连接. 2)建立好连接后,开始传输数据.TCP数据传输牵涉到的概念很多:超时重传.快速重传.流量控制.拥塞控制等等. 3)断开连接的过程也很简单,通过四次握手完成断开连接的过程. 三次握手建立连接: 第

[IT]图解TCP-IP协议

本文通过两个图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图1所示,给出了TCP通信过程的示意图. 图1 TCP 三次握手四次挥手 图1主要包括三部分:建立连接.传输数据.断开连接. 建立TCP连接很简单,通过三次握手便可建立连接. 建立好连接后,开始传输数据.TCP数据传输牵涉到的概念很多:超时重传.快速重传.流量控制.拥塞控制等等. 断开连接的过程也很简单,通过四次握手完成断开连接的过程. 1.三次握手建立连接 第一次握手:

存储极客 | 瓜哥图解存储协议

存储极客 这是一群存储偏执狂 为存储而生,跟存储死磕 各具独家秘笈 有观点,有碰撞,有干货 从2015年8月18起 做客存储极客栏目 与你分享存储里的那点事儿 SCSI.IDE.FC及SATA--,这些令人眼花缭乱的存储协议和接口之间都有怎样"剪不断理还乱"的关系呢?今天,我们就听瓜哥细细道来吧. 一.顶层协议描述了什么 在存储系统中,上层协议可以泛指"指令",也就是比如"读出从某某开始的多少长度的扇区",指令包含三大关键信息: 1. 操作码:O

图解https协议

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据.具体是如何进行加密,解密,验证的,且看下图. 1. 客户端发起HTTPS请求 这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到serve