您的位置:首页 > 理论基础 > 数据结构算法

第四十六篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (1)

2017-02-17 17:35 549 查看
记录相关数据结构之前,先上一张图,这样就基本一目了然了



USB XHCI HOST有三种RING

分别为COMMAND, EVENT 与TRANSFER

这里所说的是TRANSFER RING

一个RING可能由一个或者多个SEGMENT构成

每一个SEGMENT则有多个TRB构成

多个SEGMENT的链接是由LINK TRB来实现的,LINK就像一个单链表,最后一个LINK TRB指向第一个SEGMENT,由此,形成了一个环,RING

TRANSFER TRB有以下几种类型:

针对USB CONTROL TRANSFER的SETUP, DATA, STATUS TRBs

针对BULK, INTERRUPT, ISO TRANSFER的NORMAL TRB

针对ISO TRANSFER的ISOCH TRB (ISO TD由一个ISOCH TRB与0个或多个NORMAL TRB构成)

SW将需要硬件完成的USB传输,通过TRB的形式,将信息提交给硬件,放入RING当中,放入的位置为当前ENQUEUE PTR的位置,每放一个,ENQUEUE PTR向前跨一步,遇到LINK TRB,则跳转到LINK TRB指向的位置

而硬件则按DEQUEUE PTR指向的位置,取出TRB到CACHE当中,执行该TRB,同样,每执行一个,则ADVANCE 该 DEQUEUE PTR,遇LINK TRB,跳转。

TD表示一个USB TRANSFER(不同于USB TRANSACTION)

在TRB当中,有一个CH BIT,如果一处TD由多个TRB构成,则软件需要将除最后一个TRB的所有CH BIT置位。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: