usb总线枚举的实现
来源:互联网 发布:嵌入式linux书籍推荐 编辑:程序博客网 时间:2024/05/16 15:12
摘自《USB2.0原理与工程开发》
主机向USB设备发出GetDescriptor(Device)请求,以取得其缺省控制管道所支持的最大数据包长度,该长度包包含在设备描述符的bMaxPacketSize0字段中,其地址偏移量为7,所以这时主机只需读取该描述符的前8字节。
主机向USB设备发出SetAddress请求,为其分配一个惟一的设备地址,USB设备必须在50ms内完成对该请求的处理,并结束其控制传输的状态阶段。之后再经过2ms的恢复时间,USB设备将进入地址状态,这时它不再使用缺省设备地址,而将使用这个新的地址和主机进行通信,该地址只有在USB设备断开或系统断电时才会丢失。
主机使用新地址向USB设备发出GetDescriptor(Device)请求,并读取其设备描述符的全部字段,以了解该设备的总体信息。
主机向USB设备循环发出GetDescriptor(Configuration)请求,以读取其全部配置信息(其个数由设备描述符的bNumConfigurations字段指出),该过程需要花费几毫秒。在读取某一配置信息时,主机首先请求其配置描述符(9字节),并得到该配置信息的总长度(包含在配置描述符的wTotalLength字段中),然后主机再次发出该GetDescriptor(Configuration)请求,并得到完整的配置信息,包括配置描述符、接口描述符、端点描述符以及各种设备类定义描述符和供应商自定义描述符等。
主机根据USB设备的配置信息,如供应商ID、产品ID等,为其选择一个合适的USB设备驱动程序。
在加载了USB设备驱动程序后,主机将发出SetConfiguration(x)请求为该设备选择一个合适的配置(x代表非0的配置值)。在配置过程中,主机将为USB设备选择一个配置值、一个接口号和一个可替换设置值,并确定相应端点的特性,如所支持的传输类型、最大数据包长度等。如果配置成功,USB设备将进入配置状态,这时它可以从USB总线上获取其配置描述符(bMaxPower字段)中所指出的最大总线电流,并可以和客户软件进行数据传输,以为主机提供额外的功能。
- usb总线枚举的实现
- USB总线枚举过程
- [Enumeration]USB总线枚举过程
- USB Bus Enumeration(总线枚举)
- USB Bus Enumeration(总线枚举)
- USB 总线上电复位及枚举
- USB 总线上电复位及枚举 .
- USB 总线上电复位及枚举
- USB总线的体系结构
- USB总线的体系结构
- usb总线的系统结构
- usb 设备的总线关系
- USB高速的总线状态
- USB设备的枚举
- USB的枚举过程
- USB设备的枚举过程
- usb的旅途之枚举
- USB枚举的详细流程
- C/C++的XML解析库
- 定制iOS 7中的导航栏和状态栏(转自cocoaChina)
- Google protobuff 安装及使用
- flash socket与c++服务器端数据不一致的问题
- SAP FICO中的预制(pack)、暂存(hold)凭证区别,以及参考凭证、周期凭证样板的建立。
- usb总线枚举的实现
- HtmlMail邮件发送
- linux--嵌入式网络文件系统NFS操作过程
- 一些常用的宏
- Coded UI 自动化测试初步研究
- LibIConv库裁剪
- CRC校验原理
- 根据手机浏览器跳转
- myeclipse安装svn插件包的相关说明