USB HOST之OHCI_1 ED,TD简述

本文深入解析USB主机控制器中的重要结构——ED(Endpoint Descriptor)和TD(Transfer Descriptor),包括它们的字段含义及在数据传输过程中的作用。ED用于描述端点属性,如设备地址、数据方向等;TD则指示数据传输的具体细节,如缓冲区地址、数据包方向等。主机控制器根据这些信息处理数据传输,并处理错误情况。
摘要由CSDN通过智能技术生成

在主机控制器里,介绍几个重要的结构:

一:ED(endpoint descriptor)

总共16字节对齐。

先看第一字主要描述了硬件配置信息。

[6:0]为设备地址(function address)

[10:7]是端点地址(endpoint number)

[12:11]是数据方向,00:方向定义在TD  01: OUT  10:INT   11:TD

[13]置位时是低速否则全速

[14] 当此位被设置,HC继续在链表中的下一个端点描述符,而不试图访问的TD队列或发出任何端点的USB令牌

[15]置位表示同步格式的TD,否则表示通用的TD

[26:16]端点最大数据包MaximumPacketSize  

 

第二字

[31:4] TDQueueTailPointer  如果TailP HeadP是相同的,那么列表中不包含TD HC可以处理。如果TailP和HeadP不同,则该列表包含要处理的TD。

 

第三字

[0] 此位设置是由主机控制器表明,处理的端点上的TD队列中暂停时,通常是由于错误处理TD。

[1] toggleCarry  就是关于数据data0 data1 data0 data1 data0

[31:4] TDQueueHeadPointer  指向下一个在该端点上要处理的TD

 

第四字

[31:4]指向下一个端点描述符

 

端点描述符被链接成一个链表被主机控制器处理,当一个端点描述符的nextED不为零时,该端点描述符会被链接入

 

当主控制器访问端点,它会检查跳过和暂停位,以确定是否允许任何endpointis进一步处理。如果任何位被设置,那么主机控制器的进步到下一个endpointon列表。如果既没有跳过也不暂停位被设置,那么主机控制器比较HeadP来TailP。如果他们是不一样的,那么endpointpointed由HeadP定义主机控制器的将传输一个数据包到/从其中一个缓冲区

 

这种链接公约假定主机控制器驱动程序的“尾巴”的端点描述符队列的队列。它通过链接一个新的端点描述符到端点描述符指针TailP然后更新TailP指向刚才添加的端点描述符。

 

当一个TD完成后,将其从队列上取消链接,加到完成队列上。把该TD的下一个TD连接到headP

 

跳过位是由主控制器驱动程序设置和清除,当它想跳过处理端点的主机控制器。这可能是必要的,主机控制器驱动程序时,必须修改HeadP的值和端点描述符链表删除的overhead prohibitive。

 

由主控制器,当它遇到一个错误,在处理TD暂停位。

当在错误的TD移动到完成队列,主机控制器的更新HeadP和设置暂停位,造成主控制器跳过端点描述符已停止,直到被清除。主机控制器驱动程序,清除错误条件时已得到纠正,并转移到/从端点应恢复暂停位。主机控制器驱动程序不应该写HeadP/ toggleCarry/暂停的除非已停止设置,跳过,或教育署已经从名单中剔除。

 

当端点描述符的D字段是10B(IN)的,主控制器可以发出一个IN令牌到指定的的端点点后,在检测到HeadP和TailP是不一样的后。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值