USB启动过程
来源:互联网 发布:MySQL完美封装函数 编辑:程序博客网 时间:2024/04/27 17:55
作者:qsycn
转自:http://blog.csdn.net/qsycn/article/details/7672940
1. 从USB中断进入sudav_function。
2. 进入Read_UsbSetupToken_Function,读取8个字节的request到setup_token_buffer.
3. 读取request完毕后,进入UsbEP0_Request_Function。
4. 在这里根据token_buffer和标准命令进入。
下表列出了USB的11种标准命令
表2、USB的11种标准命令命令bmRequestType
bRequest
wValue
wIndex
wLength
Data
Clear_Feature00000000B
00000001B
00000010B
CLEAR_FEATURE
特性选择符
零
接口号
端点号
零
无
Get_Configuration10000000B
GET_CONFIGURATION
零
零
一
配置值
Get_Descriptor10000000B
GET_DESCRIPTOR
描述表种类(高字节,见表5)和索引(低字节)
零或语言标志
描述表长
描述表
Get_Interface10000001B
GET_INTERFACE
零
接口号
一
可选设置
Get_Status10000000B
10000001B
10000010B
GET_STATUS
零
零(返回设备状态)
接口号(对像时接口时)
端点号(对象是端点时)
二
设备,
接口 ,或
端点状态
00000000B
SET_ADDRESS
设备地址
零
零
无
Set_Configuration00000000B
SET_CONFIGURATION
配置值(高字节为0,低字节表示要设置的配置值)
零
零
无
Set_Descriptor00000000B
SET_DESCRIPTOR
描述表种类(高字节,见表5)和索引(低字节)
零或语言标志
描述表长
描述表
Set_Feature00000000B
00000001B
00000010B
SET_FEATURE
特性选择符(1表示设备,0表示端点)
零
接口号
端点号
零
无
Set_Interface00000001B
SET_INTERFACE
可选设置
接口号
零
无
Synch_Frame100000010B
SYNCH_FRAME
零
端点号
二
帧号
其中bRequest为命令编码值,含意见表3:
bRequest
Value
GET_STATUS
0
CLEAR_FEATURE
1
为将来保留
2
SET_FEATURE
3
为将来保留
4
SET_ADDRESS
5
GET_DESCRIPTOR
6
SET_DESCRIPTOR
7
GET_CONFIGURATION
8
SET_CONFIGURATION
9
GET_INTERFACE
10
SET_INTERFACE
11
SYNCH_FRAME
12
5. 第一次进入读取setup_buffer:0x0680,由于在USB中先传送低位,所以正确排列为0x8006.
那么对于0x80为10000000b,0x06表示为get_descriptror.进入GetDescriptor_function.
6. 在GetDescriptor_function中,读取SetupToken_Buffer+wValue的值,如果是0x0100,则进入UR_GetDescriptor_Device;如果是0x0200,则进入UR_GetDescriptor_Configuration;如果是0x0300,则进入UR_GetDescriptor_String。
7. 同理,进入UR_GetStatus_Function。分别得到UR_GetStatus_Devcie,UR_GetStatus_Interface,UR_GetStatus_Endpoint。
8. 同理,进入UR_ClearFeature_Function。分别得到UR_ClearFeature_Devcie,UR_ClearFeature_Interface,UR_ClearFeature_Endpoint。
9. 同理,进入UR_SetFeature_Function。分别得到UR_SetFeature_Devcie,UR_SetFeature_Interface,UR_SetFeature_Endpoint。
10. 进入UR_SetAddr_Function,设置地址。
11. 进入UR_GetConfiguration_Function,将Configuration通过Send_UsbEP0InToken_One_Function传给host.
12. 进入UR_SetConfiguration_Function, 通过setup_token设置Configuration.
13. 进入UR_SetInterface_Function,注意根据interface的数目来设置.
另外:
USB各版本区别版本最大传输速率速率称号最大输出电流协议推出时间:
USB1.0:1.5Mbps(192KB/s) 低速(Low-Speed) 500mA……1996年1月
USB1.1:12Mbps(1.5MB/s) 全速(Full-Speed) 500mA……1998年9月
USB2.0:480Mbps(60MB/s) 高速(High-Speed) 500mA……2000年4月
USB3.0:5Gbps(640MB/s) 超速(Super-Speed) 900mA……2008年11月
USB Audio Class 规定3种数据传输格式,分别是同步,异步和自适应。
同步方式指的是数据传输速率和USB总线的时钟同步,数据发送与接收方都在USB总线时钟的指挥下同步工作。
异步方式指的是数据接收方工作在一个与USB总线时钟不相干的单独时钟下,通过反馈机制告诉发送方快一点或者慢一点。
自适应方式指的是数据传送速率完全取决于数据的发送方,接收方要自动适应发送方发送数据的速率。
wMaxPacketSize的设置:
1,当endpoint4的speci指定其fifo为32bytes,此时意味着在1msUSB帧内最多传输32bytes数据。
2,所以当设置wMaxPacketSize为32bytes即0x0020,此时正好1ms传输32bytes.
3,假如设置wMaxPacketSize为0x00c0,即192bytes,那么需要5ms才能将192bytes全部传输掉。
- USB启动过程
- USB启动过程
- USB启动过程
- USB启动过程分析
- XPE USB 2.0启动技术,中断处理过程
- USB启动
- USB启动
- USB 过程
- USB 过程
- USB-HDD,USB-ZIP,USB-FDD启动
- USB枚举过程 USB Enumeration
- USB枚举过程 USB Enumeration
- USB枚举过程 USB Enumeration
- USB枚举过程 USB Enumeration
- USB枚举过程 USB Enumeration
- WRTNode(MT7620) 通过USB启动OpenWRT过程记录(上)
- WRTNode(MT7620) 通过USB启动OpenWRT过程记录(中)
- WRTNode(MT7620) 通过USB启动OpenWRT过程记录(下)
- UDP怎么会返回Connection refused错误
- 疯狂的小猪游戏策划
- ThreadLocal是什么
- abap table control里面各种属性和事件的写法
- 以后看电影就按这个名单了
- USB启动过程
- 开源库集合
- 资源树的显示配置
- 大话设计模式之外观模式
- Java中常用的内存区域
- MySQL里AUTO_INCREMENT表里插入0值的问题
- 为什么div宽度为100%但没有铺满这个页面
- [android]gsm smsmessage 类部分详解
- Unity3d 2d动画组件