Base Address Register
位于配置空間bar0(Offset 0x10)。這個BAR地址是指向xHCI寄存器接口基地址
MMIO Space
是基于MMIO bar0的寄存器空間,所有的寄存器的offset是相對于BAR0
Host Memory
是存放xHCI各種傳輸所需要的數據結構,這部分空間位于系統内存,有xHCI驅動負責分配,管理
Transfer Ring
是一個環形隊列,由傳輸描述符TD組成。TD是一個數據結構,用來定義和描述xHC和USB 設備之間傳輸的數據Buffer。TD是由一個活多個TRB(Transfer Request Block)組成。TRB是由xHCI驅動創建,對于xHC來說每個TRB都是隻讀的
Command Ring
是一個環形隊列,由一個一個的命令TRB組成。每個命令TRB是用來存放由xHC執行的命令。這些命令是用來傳給xHC或者USB設備。命令TRB也是由xHCI驅動構建,對于xHC隻讀。Command Ring系統内存位置信息是透過Command Ring Control Register(CRCR)告知xHC
Event Ring
是一個由Event TRB組成的環形隊列。Event TRB由xHC構建,對于xHCI驅動隻讀。事件TRB用來反饋xHC執行Transfer Ring/Command Ring時的結果信息。Event Ring系統内存位置是透過Event Ring Segment Table Base Address告知xHC
Device Context
Device Context是由xHC管理,用來告知xHCI驅動軟件USB設備的配置,狀态等各種信息。當xHCI驅動枚舉USB設備時,如果有USB設備接入,xHCI驅動會在系統内存分配一個Device Context數據結構,并且初始化此數據結構為0,之後xHCI驅動會透過Address Device Command将此數據結構的控制器移交給xHC管理維護。因此這個數據結構在此後對于xHCI驅動來說是隻讀的。我們都知道USB傳輸是透過USB設備的endpoint,因此Device Context包含31個Endpoint context結構體。由上圖可知xHC執行的Transfer Ring的位置信息就是在Device Contex中的Endpoint context中。那麼Device Context在系統内存中的位置又是如何告知xHC呢,所有的Device Context地址信息會以Device Base Address Array形式透過Device Context Base Address Register(DCBAAP)告知xHC
Door Bell
門鈴是用來告知xHC有End point有命令或者數據傳輸需要執行。Door Bell Array是一個由256個寄存器組成的數組,每個Door Bell寄存器對應一個USB設備
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!