简述
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
Transfer Descriptor
TD,是一段数据缓存(0到8192 bytes),用来从ED取数据或向ED发送数据。
TD分为两类:General(用于Control, Bulk, Interrupt传输)和Isochronous。
General TD
16byte的结构来描述一个General TD。
Isochronous TD
32byte的结构来描述一个Isochronous TD。