USB EHCI 数据传输处理:分裂传输与同步传输解析
需积分: 50 16 浏览量
更新于2024-08-08
收藏 2.8MB PDF 举报
"本文主要介绍了USB EHCI(Enhanced Host Controller Interface)控制器驱动中的数据结构和分裂传输过程,特别是针对IN和OUT型传输的处理方式,以及如何通过C-Split和S-Split机制来解决速度不匹配问题。"
在USB EHCI协议中,分裂传输过程(Split Transaction Process)是为了解决高速设备与全速设备之间速度不匹配的问题。这个过程主要包括了New、Pending、Ready和Old四种状态,确保数据的有效传输和主机的高效响应。
2.4 分裂传输过程详细说明:
1. **New** 状态:这是传输开始时的状态,持续时间不超过1个微帧,用于初始化传输。
2. **Pending** 状态:设备正在传输数据,主机等待数据完成,最长不超过4个微帧。
3. **Ready** 状态:传输已完成,等待主机接收结果,最长不超过2个微帧。
4. **Old** 状态:传输完全结束,TT(Transaction Translator)中的Buffer可以被复用。
对于**上行方向(IN型传输)**,当TT接收到超过2个字节的数据时,它会立即响应Host的C-Split,发送已接收的数据,并通过PID(Packet Identifier)的MDATA或DATA1/0标识是否有更多数据未传输。Host在接收到MDATA后,应在下一个微帧中再次发起C-Split请求,直到收到DATA0/1数据包,表明传输结束。
对于**下行方向(OUT型传输)**,Host会将大包拆分为最大188字节的小包,通过S-Split在连续的微帧中向TT发送数据。对于ISO(Isochronous)同步传输,数据包的发送顺序通常为B(开始)、M(中间数据)、E(最后数据)。
数据结构方面,EHCI驱动中使用了Queue Element Transfer Descriptor (QTD)来描述传输数据的相关信息,包括数据源、数据长度、传输状态、结果信息、是否产生中断(IOC)以及使用的令牌包类型(IN、OUT、SETUP)。QTD是与Queue Head (QH)结构关联的,用于控制、批量和中断传输。
此外,所有结构的首字节都是NextLinkPointer+Type+T,这种设计允许通过Type字段识别不同类型的结构(如QTD、ITD、QH、SITD),便于统一管理和操作。
总结来说,分裂传输过程是USB EHCI协议中解决速度不匹配问题的关键机制,通过C-Split和S-Split确保高效的数据传输。同时,QTD作为数据传输的核心描述符,包含了所有必要的传输参数和状态信息。理解这些概念对于深入掌握USB EHCI驱动的工作原理至关重要。
2021-12-05 上传
2021-11-27 上传
2013-10-23 上传
2021-11-14 上传
2022-03-01 上传
2021-11-20 上传
2021-11-29 上传
2021-11-18 上传
2021-06-08 上传
Matthew_牛
- 粉丝: 41
- 资源: 3810
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析