cidc是什么(XHCI 原理概述)

概述

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

(0)
sunyaqunsunyaqun
上一篇 2024年9月4日
下一篇 2024年9月4日

相关推荐

发表回复

登录后才能评论