USB的枚举过程--自己写的(转载)
来源:互联网 发布:淘宝盗用视频怎么举报 编辑:程序博客网 时间:2024/06/06 07:08
作者博客:
http://blog.chinaunix.net/uid/29345848.html
---------------------------------------设备插入-------------------------------------------------------------
1) 主机会轮回查询各个USB端口,主机检测到D+与D-之间有电压差,就认为有新的设置接入。主机等待100ms后发出复位请求。设备接到复位请求后将产生一个外部中断信号。
---------------------------------------枚举过程------------------------------------------------------------
2) 主机这时候只是知道有新的设备插入了,但是不知道插进来个什么东西,所以就开始询问它是什么设备,怎么用,负荷能力怎么样。这个时侯就进入了枚举过程。因为刚刚插入的设备没有分配地址,就用默认地址0,首先发送一个Get_DESCRIPTOR_DEVICE(DEVICE获取设备描述符)指令包,设备接到包后就开始解析包(其实就是你在固件程序里判断处理) ,然后按固定格式返回自己设备的设备描述符,这一步主要是主机知道你的USB设备的基础属性,比如支持的传输数据长度,电流负荷多少,支持那个USB版本,以及以后方便电脑找驱动的PID,VID。
3) 这时候主机知道你(你做的设备,简称你吧)的数据长度还有电流大小后,下一步就是给你分配一个属于你的地址。
4) 给你一个地址后就开始询问你的具体配置。首先发送一个试探性的获取描述符的配置描述符请求Get_DESCRIPTOR_CONFIGURATION(要求固定返回9个配置描述符字长度为9字节),你接到后就开始发送9字节的设备配置字,其中包括你的配置字的总长度,这样主机就知道你的配置到底有多长,然后再发一次设备配置请求,这时你就开始上传所有的配置字。这个时侯主机就已经很明白你的工作方式就各种特性,然后就可以正常工作了
5) 如果你在前面的某些配置,要求要说明自己的名字什么的,这里还要上传字符串描述符。
6) 如果是鼠标或者键盘还要上传报告描述符
---------------------------------------正常数据阶段------------------------------------------------------
枚举过程:
7) 这个时侯你已经被主机正式接受并且注册了,你可以通过自己写测驱动或通用驱动与电脑进行通讯了。
以上是简单的描述,详细的后面章节再做介绍,学习一个东西关键是首先要知道这个东西是什么,简单的工作原理。对于USB的工作我这里做个比方
主机好比一个公司,你就是USB设备,要进入公司首先要面试(枚举),你到了面试现场(第一次插入设备),面试官首先了解到你的外表,性别已经你要应聘的岗位(设备描述符),然后给你一个号,以后就开始按号叫人,当你被叫到就开始问你的专业知识,性格等(配置描述符),如果你比较合适(通过了枚举)你就会录取了,并且注册一个你的信息到公司(驱动安装,并且写入注册表)。等你下次来公司,只要把工号(PID,VID)报上,就知道是你来了
- USB的枚举过程--自己写的(转载)
- USB的枚举过程
- USB设备的枚举过程
- USB设备的枚举过程
- USB设备的枚举过程
- 基于USB枚举过程的详细分析
- USB host枚举设备的过程
- 图解USB设备的枚举 过程
- S3C6410 USB枚举过程的工作经验总结
- 高速USB设备枚举的握手过程
- LPC1768的USB驱动(二)----USB枚举过程
- 自己写的存储过程
- USB开发基础--USB Monitor2.26 实例讲解USB的枚举(配置)过程
- USB设备的枚举
- S3C6410 USB枚举过程的工作经验总结[bootloader]
- 基于STM32的USB枚举过程学习笔记(一)
- 基于STM32的USB枚举过程学习笔记(二)
- 基于STM32的USB枚举过程学习笔记(三)
- 黑马程序员 日记(七)
- R语言学习笔记
- FreeMarker使用说明
- 【JAVA】java中CyclicBarrier的用法,实例讲解
- C#生成Code39条形码【非条形码字体】
- USB的枚举过程--自己写的(转载)
- Android自动完成文本框(AutoCompleteTextView)的功能和用法
- Oracle ASM 相关的 视图(V$) 和 数据字典(X$)
- Dom4j解析XML文档
- C#生成Code39条形码【非条形码字体】
- 面向对象链接整理
- 多个excel文档合并到一个excel文档里
- hadoop2.7.1伪分布式配置
- Servlet实现图片验证码