USB研究(一)
来源:互联网 发布:php代码注入原理 编辑:程序博客网 时间:2024/06/03 11:14
USB的一些术语 端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。每一个端点都有唯一的确定地址,有不同的传输特性。 域:是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型: 1、同步域(SYNC),八位,值固定为0000 0001,用于本地时钟与输入同步 2、标识域(PID),由四位标识符+四位标识符反码构成,表明包的类型和格式 3、地址域(ADDR):七位地址,代表了设备在主机上的地址, 4、端点域(ENDP),四位,由此可知一个USB设备有的端点数量最大为16个。 5、帧号域(FRAM),11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800,对于同步传输有重要意义。 6、数据域(DATA):长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度 7、校验域(CRC):对令牌包和数据包(对于包的分类请看下面)中非PID域进行校验的一种方法。 包:由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同的包的域结构不同: 1、令牌包:可分为输入包、输出包、设置包和帧起始包 其中输入包、输出包和设置包的格式都是一样的: SYNC+PID+ADDR+ENDP+CRC5(五位的校验码) 帧起始包的格式: SYNC+PID+11位FRAM+CRC5(五位的校验码) 2、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下: SYNC+PID+0~1023字节+CRC16 3、握手包:结构最为简单的包,格式如下 SYNC+PID USB的一种传输模式——控制传输 可分三大阶段:1、建立(setup)阶段。2、数据(DATA)阶段。3、确认阶段 setup中主机发起一个setup的数据包,包含一些请求命令及一些数据,当为输入请求时,则DATA中为输入,输出命令则DATA为输出,注意不传送数据,也必须发送一个大小为0的数据包。确认阶段则相反,用来确认数据的正确传输。 USB设备枚举过程: 1、当设备与主机连接时,主机就会检测到一个连接条件,并开始进行总线复位。 2、主机会使用默认地址(0H)读取设备描述符,并发送一个0数据包作为应答。 3、地址分配,主机将发送一个设备地址的请求,并在后面跟着一个0长度的数据输出包,地址包含在建立包中。 4、主机从新的地址获取设备描述符。 5、主机读取配置描述符。 6、读取描述符合集,每个配置描述符的接口描述符和端点描述符的集合。 7、设备配置,使得设备从地址状态进入配置状态。 8、读取配置状态
- USB研究(一)
- Linux下USB HID device driver研究(一)
- Linux下USB HID device driver研究(一)
- USB研究之文件系统研究(2)
- 第55篇 Chrome扩展USB开发(一)及PHP研究 Saturday
- USB基本知识(一)
- USB 基本知识(一)
- USB驱动(一)
- USB 基本知识(一)
- usb手机型号的识别(初步研究)
- JSP研究(一)
- TinyLine研究(一)
- javascript 研究(一)
- 智力研究(一)
- 智力题研究(一)
- 智力题研究(一)
- react研究(一)
- mysql研究(一)
- 浅谈编程能力的培养与提高——学习C++的一些建议1
- js实现网页“设为首页”
- TCP/IP指南(卷1):OSI参考模型
- 软件开发的四大基础
- Hibernate基础教程(3-2)
- USB研究(一)
- 再次随便侃侃:看白乔老师的笔记有感
- 一些数值计算的库
- 我的第一个CSDN空间。。
- [书摘]迭代器适配器
- [书摘]c/c++中的一些算法
- [转]整洁代码的4个提示
- 函数修改CListCtrl的排序属性
- 采用弹出气泡方式进行客户端输入验证