飞思卡尔高端ColdFire USB模块:EHCI数据结构简化实现

需积分: 10 10 下载量 160 浏览量 更新于2024-07-09 收藏 1.6MB PDF 举报
"EHCI数据结构的实现-飞思卡尔USB模块.pdf" 这篇文档详细介绍了飞思卡尔高端ColdFire系列中的USB模块,特别是针对EHCI(Enhanced Host Controller Interface)数据结构的实现。对于那些英语阅读有困难的工程师来说,这是一个非常友好的中文文档。文档的作者是Melissa Hunter,主要探讨了如何简化EHCI数据结构,以便在嵌入式系统中更有效地支持特定类型的USB设备,如鼠标。 文档首先介绍了引言,指出ColdFire系列的某些高端产品如MCF532x、MCF5253和MCF5445x包含与EHCI兼容的USB主机控制器或双模式(移动USB, OTG USB)控制器。双模式模块可以灵活地设置为USB主机、USB设备或移动USB设备。在主机模式下,所有USB模块遵循EHCI规范,该规范定义了控制USB数据传输的寄存器集合和数据结构。 文档的主要内容围绕简化EHCI数据结构展开,以适应嵌入式系统的需要。它指出,尽管EHCI规范是为了PC设计的,能支持一个端口上的多种设备,但嵌入式系统可能只需要处理特定的USB设备。文档通过实例展示了如何构建一个简单的驱动程序,使系统能够与一种类型的设备(如鼠标)通信,而当插入其他类型的设备时,驱动程序会返回错误。 文档详细分析了以下几个关键的数据结构: 1. **队列首部(QH)**:QH是管理USB事务的关键数据结构,包含设备的配置信息。文档中详细解释了QH的不同部分: - **队列首部平行链路指针(Offset: 0x00)**:用于指向下个QH或ITD。 - **端点特性(Offset: 0x04)**:包含端点号、传输类型等信息。 - **端点性能(Offset: 0x08)**:关于传输速度和突发传输能力的信息。 - **当前qTD指针(Offset: 0x0C)**:指向当前正在执行的传输描述符。 - **qTD覆盖区域(Overlay Area)(Offset: 0x10-0x2C)**:用于存储qTD信息。 2. **队列元素传输描述符(qTD)**:qTD是实际传输数据的结构,描述了传输的细节,如数据缓冲区地址、数据长度和状态信息。 由于目标是简化,文档没有涵盖所有EHCI特性,如同步传输和SPLIT事务。这意味着,同一时间仅支持一个设备连接到端口,并且不涉及与USB 2.0集线器交互的全速或低速设备的SPLIT事务。这些简化意味着一些EHCI数据结构可以被忽略,而其他结构的某些字段则无需填充。 这篇文档为开发者提供了一个基础的框架,以理解并实现针对特定USB设备的简单驱动程序,降低了在嵌入式系统中应用EHCI规范的复杂性。它要求读者对基本的USB规范有一定的了解,以更好地理解文档中阐述的简化方法。