USB EHCI 数据传输处理:分裂传输与同步传输解析
需积分: 50 79 浏览量
更新于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 上传
2022-03-01 上传
2021-11-18 上传
2021-11-20 上传
2021-11-29 上传
2021-11-18 上传
2021-06-08 上传
Matthew_牛
- 粉丝: 41
- 资源: 3795
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率