天天看点

[OHCI]数据结构

简述

USB OHCI需要通过Host Controller和Host Controller Driver来对USB bus的使用进行仲裁。

OHCI的在Endpoint之间的仲裁有两个级别,第一个级别是从ED的List的级别进行仲裁,每一类ED有一个List来维护,在List内,每一个ED是有相同级别的。这里的这种方式的仲裁,需要回顾下OHCI的框架。HCD用一个叫做HcPeriodicStart的时间,来决定在一个Frame内多久后开始Periodic传输。而在Non Periodic传输时,Bus是服务于Control和Bulk传输的,而在Periodic传输时,会优先考虑Interrupt传输。

OHCI架构中提到过TD的Done Queue,当一个TD的所有数据都传送完毕,TD将从ED剥离,链接到Done Queue,Host Controller Driver然后会处理Done Queue,并提供complete信息给这次传输的发起者。看来这里是相当于一个流控的作用了。

Endpoint Descriptor

[OHCI]数据结构
[OHCI]数据结构

Transfer Descriptor

TD,是一段数据缓存(0到8192 bytes),用来从ED取数据或向ED发送数据。

TD分为两类:General(用于Control, Bulk, Interrupt传输)和Isochronous。

General TD

16byte的结构来描述一个General TD。

[OHCI]数据结构
[OHCI]数据结构

Isochronous TD

32byte的结构来描述一个Isochronous TD。

[OHCI]数据结构

继续阅读