概述
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,因此D联通大流量卡evice 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设备
友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2
原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/61627.html