xHCI1.1-框架和数据结构

xHCI驱动学习(1) 核心数据结构 虽然Linux内核拥有C语言构建的身体,但它骨子里散发的是面向对象的气质,这一个个的对象就是struct。面对一个内核模块的时候,首先要找出关键的struct和它们之间的关系,才能摸清代码的骨骼脉络。今天来理清USB xHCI相关的数据结构类型usb_hcd、xhci_hcd、hc_driver和全局变量xhci_pci_driver、xhci_hc_driver、xhci_pci_hc_driver之间的关系。 阅读详情
AI摘要

本文详细介绍了USB架构,重点在于设备框架如何定义USB设备与类驱动程序之间的接口,以及主机控制器(如xHC)如何与系统软件、设备交互。xHCI(可扩展主机控制器接口)是USB3主机控制器的关键组件,负责管理所有速度的设备通信,简化了与上一代产品的接口。设备上下文和传输环是关键数据结构,用于管理设备状态和数据传输。此外,文章还讨论了异步和周期性传输的不同类型以及传输描述符(Transfer Descriptor, TD)的角色。

Chapter 3 Architectural overview

各个部分为:

  • Application software:应用软件使用一个或多个USB设备提供的服务。应用软件通过Class Driver提供的标准接口连接到USB设备

  • Class Driver software :这种软件运行在host PC上,对应USB设备一个具体的“类”(Mass Storage,Human interface,Audio,etc.).Class Driver software 通常是操作系统一部分或者由USB设备提供。

  • USB Driver(USBD): USBD是系统软件总线驱动程序,它为特定操作系统抽象出特定主机控制器驱动程序的详细信息。 USBD提供给系统的通用USB接口称为USB驱动程序接口或USBDI。

  • Host Control Driver(xHCD):xHCD提供Host Controller hardware和USBD之间的软件层。主机控制器驱动程序的详细信息取决于主机控制器硬件寄存器接口定义。

  • Host Controller (xHC): 主机控制器是主机控制器体系结构的特定硬件实现。 USB 3主机控制器有一个主机控制器规范,可支持低速,全速,高速,SuperSpeed和SuperSpeedPlus设备。xHC提供给系统的接口称为可扩展主机控制器接口或xHCI(eXtensible Host Controller Interface)。

  • USB Device: 这是扩展总线拓扑的硬件设备(集线器)或执行有用的最终用户功能(end-user function)。与USB设备的交互从应用程序通过软件和硬件层流向USB设备。

USB体系结构的关键功能是它提供的Device Framework。Device Framework定义了USB设备和类驱动(Class Driver)程序之间的接口,该接口独立于系统用来与USB通信的特定主机控制器接口。 该接口包含一个默认管道和零个或多个其他class定义的管道。 默认管道(也称为默认控制端点)用于枚举和管理USB设备。 它还可以用于提供对设备的应用程序特定功能的访问。 类定义的管道提供特殊的服务质量要求,以执行设备类特定的功能。

Device Framework允许USB体系结构将“总线”接口的细节与应用特定(“设备”)接口的细节分开,从而产生分离的驱动结构(xHCD /Class驱动程序)。 请注意,在这种情况下,Device Class是指USB设备中执行某些有用的最终用户特定于应用程序的功能(例如大容量存储,音频,人机界面等)的部分。

USB总线驱动(USBD)提供标准连接到的USB结构(指 Isoch,interrupt,control,and Bulk Pipes)定义的传输机制(transport mechanism)即USB Framework(USB架构)的方式并且Device Class Driver是所有应用程序特定知识所在的位置。

Device Class Driver还将包括供应商可能提供的任何“增值”。 只要通过USBDI提供的USB框架保持不变,USB类驱动程序就不必更改是因为USB总线驱动程序没有改变。(例如支持xHCI)

The xHCI is used for all communications to devices connected through the Root Hub ports of the USB 3 host controller.

USB标准化组织(USB-IF)定义了几个标准USB设备类(USB Device Classes)(如大容量存储,音频等)。USB设备生产商可以选择定义他们的产品的自身设备类,或者使用部分或全部USB-IF定义的设备类。USB-IF定义的设备类为特们各自提供了一个特征的基线集合。当今的操作系统本身支持几种USB设备类。

如果设备生产商没有定义设备类驱动(当然他们可以定义),那么可能操作系统可以提供。很多USB设备生产商就直接利用操作系统提供的设备驱动类,而不自己定义。当然如果操作系统也不支持,那么他们就得自己定义了。

xHCI体系结构允许USB 3主机控制器为所有速度设备提供USB功能,而无需像上一代产品那样,伴随控制器以及对它们各自驱动程序的相关软件支持。 xHCI体系结构的增强功能是提供此简化的操作环境的关键。

主机接口逻辑管理与xHC相关的寄存器和DMA。

xHC总是管理连接到其Root hub ports上的各种速度USB设备。取决于实现方式,USB总线的资源实例(带宽,设备可寻址性等)可以显示在每个根集线器端口上,在多个根集线器端口之间共享或分配的组合。

此规范定义了可扩展主机控制器接口的寄存器和接口。

3.1 Interface Architecture

xHCI 接口定义了三种接口空间:

  • Host Configuration Space(主机配置空间)。每个xHC implementation(实施, 生效,工具,仪器)都要包括一个通过系统软件识别、枚举host controller的方法。这个协议提供了一个Host Configuration Space的PCI示例,称为PCI Config Space。PCI配置空间用于系统对xHC进行枚举和资源(中断、电源、虚拟化等)管理。

  • MMIO Space。 MMIO是寄存器空间位于内存中,代表xHC向系统软件提供的硬件寄存器。 寄存器空间提供xHCI上的各种寄存器的参数实现(也就是xHCI寄存器可以和这个空间相互映射,通过北桥将内存(MMIO)地址转换为xHCI上的寄存器地址),包括操作和运行时控制和状态寄存器以及用于标记对单个USB设备的访问标志的门铃阵列。 此空间通常称为I / O空间,实现为内存映射I / O(MMIO)空间。

  • Host Memory。 此空间由控制数据结构(设备上下文基地址阵列,设备上下文,传输环等)和数据缓冲区定义,这些数据缓冲区由xHC驱动程序分配和管理,以启用各个设备的端点流量。 此空间在内存地址空间的内核和用户区域中分配。

xHCI支持两种USB传输类型:异步和周期性传输。其中周期性传输包括同步和中断传输。异步传输包括控制和批量传输。图3-3解释xHCI提供为每种传输提供了一个同质机制(传输环,Transfer Rings)。

PCI配置空间中的USB基准地址寄存器(USB Base Address Register,BAR)指向xHC寄存器接口的基准地址。xHC寄存器接口有4个主要部分:Capability Registers(功能寄存器),Operational Register(操作寄存器),Runtime Re

USB_xHCI协议(一) —— 概述 xHCI(eXtensible Host Controller Interface)是由USB-IF(USB Implementers Forum)制定的一种USB协议,用于规范USB 3.0及其以上版本的主机控制器和设备之间的通信。xHCI为软件提供了一个简单的接口,以向主机控制器提供参数化的传输请求,主机控制器使用这些请求在USB上执行事务。xHCI协议的主要目标是提供一种统一的、可扩展的、高性能的接口,以支持USB 3.0及更高版本的数据传输速率和功能。 阅读详情

相关推荐

xHCI1.1-TRB Ring

4.9 TRB Ring TRB(Transfer Request Block) Ring是一个TRB数据结构的环状队列,TRBRing用来在producer和consumer之间传送工作项(WorkItem)。和其相关的有两个指针,出队指针(Dequeue)和入队指针(Enqueue)。一个工作项由一个或多个TRB数据结构组成。一个工作项定义了一个将要被执行的操作或是一个已经执行的操作的结果。 有三种基本TRBRings:Transfer,Event和Command。每种Ring都有其专用...

geter_CS的博客 7765

USB_xHCI协议(二) —— 接口和数据结构

xHCI是可扩展主机控制器(xHC)的接口(Interface),为硬件部分。本章节简单介绍里xHCI的数据结构。

weixin_64909055的博客 2961

USB——硬件控制器分类(OHCI UHCI EHCI xHCI)))

OHCI 不仅仅用于 USB,也支持一些其他的接口,比如苹果的 Firewire 等,OHCI 由于硬件比较难,所以软件要求就降低了,软件相对来说比较简单。全称是 Kinetis Host Controller Interface,因在 NXP Kinetis 系列微控制器中被大量使用而得名,是一个设计简单但功能完整的 USB 控制器,可以工作在 单一的主机和设备模式下,配合一些其他的芯片也可以支持 OTG 工作模式,具有占用内存小并且驱动程序易于开发的特性。OHCI、UHCI都是USB1.1的接口标准。

tyustli 3755

xHCI specification

The Enhanced Host Controller Interface (EHCI) specification describes the register-level interface for a Host Controller for the Universal Serial Bus (USB) Revision 2.0. The specification includes a description of the hardware/software interface between system software and the host controller hardware. This specification is intended for hardware component designers, system builders and device driver (software) developers.

xhci官方英文协议文档

xhci英文协议文档

Landsat9 地表温度反演方法

landsat9地表温度反演及缺失值处理方法

xiangliu12345的博客 3918

Qt6安装保姆级教程:从国内镜像下载到配置避坑指南(附清华/中科大源)

本文提供详细的Qt6安装与配置指南,重点介绍如何利用清华大学、中国科学技术大学等国内镜像源解决下载速度慢的问题。内容涵盖在线安装器获取、组件选择策略、环境变量配置以及常见编译与部署问题的排查方法,旨在帮助国内开发者高效、顺畅地完成Qt6开发环境搭建。

weixin_29281915的博客 633

大模型-internvl高通qnn运行源码解读

模型链接:https://huggingface.co/OpenGVLab/InternVL2-2B论文官方简要说明 https://internvl.github.io/blog/2024-07-02-InternVL-2.0中文解读 https://zhuanlan.zhihu.com/p/702946079在线demo https://internvl.opengvlab.com/

点滴的岁月 1832

线性代数——(期末突击)行列式(上)-行列式计算、行列式的性质

简单解释一下:4213原本的顺序应为1234,对于‘4’而言,‘2’、‘1’、‘3’都应该排在它的前面,所以此处记逆序数为3;对于‘2’而言,‘1’应该排在它的前面,而‘3’排在它之后 是合理的,所以此处只有一个逆序数;最后看‘1’,其后面的‘3’排在后面显然也是合理的,故而4213的逆序数为4.一般我们使用这个性质来计算四阶行列式,也就是将其变换成三角行列式,再计算对角线的值;以主对角线为分界线的就为正三角,反之则为反三角行列式。若行列式某一行(列)为0,则该行列式=0.将和的那一行分开,其余行。

li13437542099的博客 1万+

遗传算法优化光学超表面:智能设计突破纳米结构瓶颈

光学超表面设计本质上是一个高维、非线性、离散每个结构单元(如纳米砖柱、孔洞、十字架)有多个参数(长、宽、高、旋转角、材料),整个阵列的参数组合数量随单元数指数级增长。性能指标(如聚焦效率、工作带宽、偏振转换率、特定角度响应)往往无法用简单解析式表达,需依赖计算密集型电磁仿真(如FDTD, FDFD, RCWA)来评估。结构参数微小变化可能引起光学响应的剧烈跃变,目标函数存在多个局部最优解。实际制造通常要求结构参数取自有限的离散值(如特定刻蚀深度、材料库)。

weixin_51101456的博客 1141

Anaconda启动失败,一直在loading application的问题

实战基础新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本

Tristan的博客 2771

World Action Model:经典论文

郑困时,图prorpt为机量人压务时,退过驱制解弱词表(constrsinsd decoding), 强附模型只从.256个者动作token中保H, B象总注活地。始VLA之一,RT-2使用了大量的五联网VQ据与少里的机械网的AcSonDat行CoFine-Tunng, 独组sl, 共i744个episode,Mous使用三个专累模,分是vidogonmedel,actonesget,understandng。包的核定之的的观到沟血黄动作,预之后现(vorlemodel),tseing,2。

u013250861的博客 406

Android蓝牙中的Rfcomm协议介绍

RFCOMM(Radio Frequency Communications)是一种基于蓝牙技术的串口仿真协议,以下是详细介绍:一、协议概述二、工作原理三、应用场景

手机-手表蓝牙开发工程师的博客 713

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: JOHNSON计数器,环形计数器,普通计数器
下一篇: xHCI1.1-USB设备的初始化
geter_CS
博客等级 码龄10年 7310粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值