OpenHCI通过两级仲裁在端点中选择哪一个服务。第一级是表级。每一个需要服务的端点类型在相应的类型表里。HC选择服务哪一个表。而在表内,端点都有差不多公平的机会被访问到。HCD通知设置HcPeriodicStart限制从帧开始到开始要服务周期表的时间。周期表服务时,当前帧下,中断表优先于同步表。当周期表服务完,控制和批量有可能会接着服务。
ED作为锚点,供一列TD依附在其上。当HC访问ED且找到一个有效的TD地址,HC完成与指定ED的单笔事务,TD表明了内存地址。
当一个TD所定义的所有数据都传输完,TD从他的ED上解下,且连到完成队列。
ED描述符
FA就是设备地址
EN就是端点地址
D为方向
S为速度
K为skip表明HC服务时,是否要跳过当前ED
F为格式(F=1为的话,使用的是ITD)
MPS最大包数据尺寸
H就是halted位,一般TD错误会设置该位
C就是toggleCarry位,一个TD退休,向该位写上一个数据的data toggle value
HeadP指向第一个要处理的TD
NextED若非0,表明表上下一个ED
HC处理一个ED,先检查skip和halted位决定ED的下一步任何操作是否允许。若任何一位设置,HC继续访问该表上下一个ED。如果任何一个都没设置,HC就会比较HeadP和TailP,若不等,那么由HeadP指向的TD定义了一个buffer,HC会与该buffer通信。