IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> DCBAAP(设备上下文及地址数组指针 寄存器) -> 正文阅读

[数据结构与算法]DCBAAP(设备上下文及地址数组指针 寄存器)

一、DCBAAP(设备上下文及地址数组指针 寄存器):

xhci里面的Operational?寄存器组里面的设备上下文基地址数组指针寄存器(Device?Context?Base?Address?Array?Pointer?Register,DCBAAP),用于保存设备上下文基地址数组(DCBAA)的指针(也就是这个数组的首地址)。

P418

二、DCBAA(设备上下文基地址数组,内存数据结构):

DCBAA和xHCI的设备槽相关联(Device?Slot),也就是一个Slot对应DCBAA里面的一个条目,可以通过Slot ID来索引对应的设备上下文(Device?Context)数据结构,也就是可以将DCBAA看为是一个查找表。在初始化xHCI时每个条目都会初始化为0。注意DCBAA的首个条目(Slot?ID=0)是被xHCI的暂存机制(xHCI?Scratchpad?Mechanism)使用的。

并且设备上下文基地址数组的首地址,在xHCI被设置为“run”模式(也就是USBCMD寄存器的R/S bit位置1)之前,应该被写入到DCBAAP寄存器中,同时Scratchpad?Buffer?Array的首地址也要在此之前放入到设备上下文及地址数组的第0个条目。如下图xHCI协议中所示。

每个slot又会对应一个Doorbell寄存器,软件可以通过写对应的寄存器,来告知xHCI使用对应slot,所对应的设备上下文。

当使用某个slot,也即是enable某个slot后,需要构造对应的设备上下文数据结构,然后将其首地址放入DCBAA数组里面对应的条目中。

三、DC(设备上下文数据结构,内存数据结构)

设备上下文数据结构(Device?Context?data?structure)被xHC管理并用来向系统软件报告设备配置和状态信息。 设备上下文数据结构由32个数据结构的数组组成。 第一个上下文数据结构(索引=“ 0”)是Slot上下文数据结构(6.2.2)。 其余上下文数据结构(索引1-31)是端点上下文数据结构(6.2.3)。

作为枚举USB设备的一部分,系统软件分配一个设备上下文数据结构给在Host内存中的设备并且将它初始化为“0”。数据结构的归属权就传给了xHC通过一个地址设备命令(Address?Device?Command)。xHC保持着设备上下文信息的归属权直到设备slot因为Disable?Slot命令不能使用。

设备上下文数据结构由xHC拥有时,应被系统软件视为只读。

DCBAA里面的每个条目存放的是一个设备上下文数据结构的地址(首地址,因为设备上下文也是一个数组),设备上下文的数据结构如下图所示:

如图所示,设备上下文数据结构,也相当于是一个数组,这里面一共有32个条目,第0个条目是槽上下文(Slot?Context),第一个条目是端点0对应的端点上下文(Endpoint?Context)(也就是Default?Control?endpoint,每个USB设备都会有这样一个默认端点,用来最初配置设备,该端点是支持双向的)。

3.1 槽上下文(Slot?Context)的结构如下:

槽上下文包含与整个设备相关的信息,或影响一个USB设备的所有端点。这个数据结构作为设备上下文的成员(也作为Input?Context的成员,这里我们只讲作为设备上下文的成员)。槽上下文数据结构提供的信息包括:控制(Control),状态(State),寻址(Addressing),和功耗管理(Power?Management)。xHC使用Slot?State来标识当前设备的状态并映射到USB协议中描述的USB?设备的状态(如下图)。

xHC分配的USB设备地址,可以被开发者使用总线分析仪来跟踪设备相关的USB活动。Route?String被hubs用来路由Packets到下游端口,即定位Super?Speed?Packet的目标。Route?Srting的形式在USB3协议规范的8.9节有介绍。Speed,?TT?Port?Number和TT?Hub?Slot?ID允许xHC执行address连接到高速hub后面的低速(low)和全速(full)设备时所必须的拆分事务(Split?Transactions)。功耗管理信息包括Max?Exit?Latency,被xHC用于总线上等时包(Isoch?packets)的调度。

3.2 端点上下文(Endpoint?Context)数据结构如下:

端点上下文数据结构定义一个具体USB端点(Endpoint)的配置(Configuration)和状态(State),这个数据结构作为设备上下文的成员(也作为Input?Context的成员,这里我们只讲作为设备上下文的成员)。端点上下文数据结构被xHC用来向系统软件报告端点相关的参数值。

大多数端点上下文(Endpoint?Context)包含端点相关的类型(Type),状态(State),带宽(Bandwidth)的信息,这些信息对应着设备报告的相关的端点描述符中的信息。在端点描述符中,也定义了TR?Dequeue?Pointer字段,这个指针指向与Pipe相关联的Transfer?Ring。对于USB3的Bulk端点有一个特殊的情况,因为USB3的Bulk?Pipe支持Streams,所以TR?Dequeue?Pointer也可能指向一个Stream?Context?Array。

注意设备上下文提供USB设备所能声明的31个端点的设备上下文。但是大多数设备只有声明少部分的端点,也就说设备上下文中大部分端点上下文是没有被使用的。

端点上下文也包含一些和Debug与Pip相关的Transfer操作的字段。Error?Counter(CErr)字段可以用来强制对USB事务的无限制的Retry。

3.2.1?Stream?Context?Array

流山下文数组被用来定义USB3中支持Streams的端点的Transfer?Ring。一个流上下文数组(Stream?Context?Array)由流上下文数据结构组成(Streams?Context?Data?Structures)。在一个主流上下文数组(Primary?Streams?Context?Array)中,其流上下文数据结构(Streams?Context?Data?Structures)数量和其位置,都是被定义在其父端点上下文数据结构中(Parent?Endpoint?Context)。

3.2.1.1?Stream?Context

Stream上下文数据结构提供了一个指针,该指针指向流的Transfer?Ring,并向xHC提供一些不透明(Opaque)(暂存,Scratchpad)的空间。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章           查看所有文章
加:2021-08-17 15:38:39  更:2021-08-17 15:41:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:34:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码