An Endpoint Descriptor (ED) is a 16-byte, memory resident structure that must be aligned to a 16-byte boundary. The Host Controller traverses lists of EDs and if there are TDs linked to an ED, the Host Controller performs the indicated transfer.

上文:
端点描述符(ED)是一个16字节的内存驻留结构体,必须按16字节边界对齐。主机控制器(HC)会遍历ED链表,若存在与ED关联的传输描述符(TD),则执行指定的数据传输操作。

4.2.1 Endpoint Descriptor Format

4.2 Endpoint Descriptor - 图1

注:

  1. 标有”——“的字段不被主机控制器(HC)解析或修改,可由主机控制器驱动程序(HCD)自由使用
  2. 标有”0”的字段必须由HCD在加入主机控制器处理队列前写入0。若主机控制器对该字段有写入权限,将始终将其写入0

4.2.2 Endpoint Descriptor Field Definitions

表4-1:端点描述符字段定义

字段名 HC访问权限 说明
FA R 功能地址:该ED控制的端点所在的USB设备地址
EN R 端点编号:该端点在USB设备内的端点地址
D R 方向:2位字段指示数据流方向(IN或OUT)。若未指定方向,则从TD的PID字段获取方向。
编码定义
• 00b:从TD获取方向
• 01b:OUT(输出)
• 10b:IN(输入)
• 11b:从TD获取方向
S R 速度:指示端点速度:全速(S=0)或低速(S=1)
K R 跳过:该位置位时,主机控制器继续处理链表中的下一个ED,不尝试访问TD队列或为此端点发出任何USB令牌
F R 格式:指示与此ED链接的TD格式。如果是控制、批量或中断端点,则F=0(使用通用TD格式);如果是等时端点,则F=1(使用等时TD格式)
MPS R 最大包大小:指示在单个数据包中可发送到或从端点接收的最大字节数
TailP R TD队列尾指针
如果TailP和HeadP相同,则队列中没有可供HC处理的TD;
如果不同,则队列中有待处理的TD
H R/W 暂停:由HC置位,表示端点上的TD队列处理已暂停(通常因处理TD时发生错误)
C R/W 数据翻转进位:数据翻转进位位。当TD完成时,该位被写入来自已完成TD的最后一个数据翻转值(数据翻转字段的最低有效位)。等时端点不使用此字段
HeadP R/W TD队列头指针
指向此端点要处理的下一个TD
NextED R 下一个ED:如果非零,则此条目指向链表中的下一个ED

访问权限说明

  • R:只读(主机控制器仅读取)
  • R/W:读写(主机控制器可读取和写入)

技术要点

  1. 端点描述符是16字节内存结构,必须16字节对齐
  2. 主机控制器通过遍历ED链表来调度USB数据传输
  3. 方向字段支持动态获取(从TD)或固定方向设置
  4. 跳过位(K)允许主机控制器绕过特定端点的处理
  5. 头尾指针比较(HeadP vs TailP)决定是否存在待处理TD