天天看點

[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]資料結構

繼續閱讀