usb驱动-1-usb结构,协议
来源:互联网 发布:济南知满天教育官网 编辑:程序博客网 时间:2024/05/09 10:24
usb 2.0 60Mbyte/s
usb 3.0 600Mbyte/s
usb 4根线, 最多挂载128个设备.
usb: 根hub , 广义上讲,usb hub也是一种设备.
1)usb设备逻辑结构
usb设备逻辑结构:设备,配置,接口,端点,4个层次.
设备有1个或多个配置,配置有1个或多个接口,接口有1个或者多个端点.
usb设备不同的配置使设备表现不同的功能组合,每一个接口需要一个usb驱动程序就
是一个功能,,代表一个基本的功能. 接口是端点的汇集.音频接口,视频接口均需要一
个驱动程序.
usb端点:是位于usb上的一个实实在在数据缓冲区.
设备的端点号:每一个usb设备有一个唯一的地址,这个地址是当设备链接时候,由主机
分配的.每一个设备有0号端点.他是用于控制的端点,一个usb可能还有其他端点比如
输入端点,输出端点等.
usb总线,高速公路
usb端点:公路的出入口.
2)usb描述符
USB Human Interface Device
Vendor ID ,Device ID ,类似于pci中的厂商号,设备号..
一个有4种描述符,设备描述符 , 配置描述符,接口描述符,端点描述符.
一个设备描述符可以有多个配置描述符,配置描述符可以有多个接口描述符,接口描述
符可以有多个端点描述符.
设备描述符,它的长度为18个字节.格式见9.6 .bLength 描述符长度,固定值
为0x12,bDeviceClass设备类型,idVendor 2个字节 厂商id, idProduct 2个字节 产
品id.
配置描述符,它体现出来的是功能的组合.bNumInterfaces 1个字节 代表一
个配置有多少接口组成的.
接口描述符,它长度为8个字节,bInterfaceClass 接口类
型.bInterfaceProtocol 接口所使用的协议, iInterface 如果接口里面记录了一串
字符串来描述厂商名称 那么这个就是指定哪一个字符串来描述这个信息的.
端点描述符,bEndpointAddress 地址,bmAttributes 属性.
描述符记录了设备的信息. 按照usb 的逻辑结构来划分的,记录了设备的制造商,设备
的有几种配置. 比如说第一种配置,从第一种配置下访问 它有几个接口,从接口访问
它的端点信息.
3)USB数据传输:
4中传输, 等时传输,中断传输,控制传输,批量传输,
4种端点,等时端点,中断端点,控制端点,批量端点.
所有的传输都是由usb主机发起的,设备不能主动传输数据. 主机每隔一个固定的时间
(大概是0.1秒),查询每一个设备是否需要发送数据.
控制传输:控制,获得设备状态.
中断传输:该方式传输的数据量很小.当主机查询到设备要发送数据时,中断
端点会以一个固定的速率传输数据.
等时传输:对时间要求很敏感,对数据的正确性要求不高的数据传输方式,比
如麦克风.当数据传输错误时,不会理会.
批量传输:正好和等时传输相反.要求数据传输准确.
控制传输是任何一个usb设备都有的,要用来完成设备的初始化的工作都会有一个0号
端点.等时和中断传输见的比较多.什么样的设备决定了什么样的传输方式.鼠标就是
中断传输.
?数据传输有点类似以太网的数据包.
一次传输(transfer)由一个或者多个事务构成的.事务可以分成in事务,out
事务,setup事务.
事务(transaction)是由packet构成的.包可以分成令牌包(setup),数据包
(data),握手包(ACK)和特殊包.
包(packet)是由域构成的.
4)USB设备枚举
定义:在正常工作前,让主机认得usb设备,从设备获取信息,知道是一个什么
类型的设备,,并且为该设备分配好资源.建立好主机和设备的数据传输机制.
过程:8个步骤,不一定都有.1:获取设备描述符.2:复位.3:设置地址.4:再次
获取设备描述符.5:获取配置描述符.6:获取接口,端点描述符.7:获取字符串描述
符.8:选择设备配置.
关于ju
.1:获取设备描述符.
2:复位.
3:设置地址.
4:再次
获取设备描述符.
5:获取配置描述符.
6:获取接口,端点描述符.
7:获取字符串描述
符.8:选择设备配置.
134号包就是发送一个setup事务,分为3个包,先是发送一个setup包.然后发送一个数据内容,然后收到usb设备的响应包,,数据包内容就是包135. 08代表方向 主机发送的,06代表命令请求响应.要求设备发送设备描述符.这2个是配对使用的,
一次传输有5次事务,第一次为setup事务,然后3次in事务,然后一次out事务.
- usb驱动-1-usb结构,协议
- wince USB驱动结构
- USB驱动结构分析
- USB协议传输结构
- USB设备驱动开发-USB协议相关
- Linux-USB驱动(2)-USB协议分析
- Wince下USB驱动结构
- usb驱动 笔记1
- USB协议学习1
- Linux-USB驱动(1)-USB总线介绍
- USB驱动--USB鼠标
- USB设备驱动开发-USB协议相关(一)
- USB设备驱动开发-USB协议相关(二)
- USB设备驱动开发-USB协议相关(三)
- Linux-USB驱动(3)-USB协议深入分析
- usb驱动开发之USB协议枚举过程详解
- 《WDF USB驱动开发指南》-- USB 设备硬件结构
- 《WDF USB驱动开发指南》-- USB软件结构
- JS实现拖动(2)
- 状态模式
- 什么叫智能化印刷管理?
- [转贴] 著名社交网站LinkedIn的Java架构技术
- java 静态内部类
- usb驱动-1-usb结构,协议
- 模板方法模式
- Android Application学习
- 新浪微博 陈利人 面试题 给定k个数组,每个数组有k个整数。每个数组中选取一个整数,一共k个整数,取其和,一共可以得到k^k个和。给出方法,求得这k^k个和中,最小的k个。
- 使用Synergy实现两台电脑共享同一个键盘和鼠标
- C++对象内存布局--⑩GCC编译器--虚拟继承--菱形继承
- C++对象内存布局--⑥GCC编译器-虚拟继承的虚基类表可能有两个
- Melody,please be smile to life
- 数据库的垂直划分和水平划分