xhci主机规范初探(2) --数据结构预览 xHC预计将在虚拟内存环境中运行,其中一个连续的物理内存块的大小将受到系统的页面大小的限制。xHC用于管理设备和端点的数据结构旨在适应这种限制,通过将数据结构保持在4K字节(所支持的最小页面大小)下,或者提供机制连接非连续的物理内存块以形成更大、逻辑连续的数据结构,例如指向用于向主机传输USB数据的数据结构的圆形缓冲区。由这些数据结构所引用的数据缓冲区可以是字节对齐的,并从1个连续物理数据的字节引用到64K字节。1.Device Context Base Address Array设备上下文基础地址阵列
xhci主机规范初探(1) --架构预览 xhci规范中整体软件模型如下图所示:这里描述的主要是上图中xhci部分,包括软件和硬件。1. 接口架构这里主要分为三部分:1)Host Configuration Space.每个xHC实现都应包括一种通过系统软件识别和枚举主机控制器的方法。本规范提供了一个主机配置空间的PCI示例,它被称为PCI配置空间。PCI配置空间定义提供了一个关于系统xHC枚举和资源(中断、电源、虚拟化等)的配置空间使用的工作示例。2)MMIO Space.寄存器空间表示xHC向驻留在内存地址空间中的系统软件提供的
NXP imx6ull GPIO简介 当配置为输出时,可以写入内部寄存器来控制输出引脚上驱动的状态。当配置为输入时,可以通过读取内部寄存器的状态来检测输入的状态。此外,GPIO外设可以产生CORE中断。GPIO是控制芯片IOMUX的模块之一GPIO功能是通过8个寄存器、一个边缘检测电路和中断产生逻辑提供的。支持五组GPIO,GPIO1~GPIO5,具体列表可看imx数据手册整体架构图如下GPIO功能描述当配置为输出时(GPIO_GDIR位= 1),数据位中的值GPIO数据寄存器(GPIO_DR)驱动在相应的GPIO线上。当一个信号
EHCI主机控制器--挂起/恢复 在本讨论中,主机发起的或软件发起的恢复称为恢复事件/操作。总线发起的恢复事件称为唤醒事件。唤醒事件的类别是:启用远程唤醒端口连接断开以及过流事件PORTSC可将端口设置为挂起模式当系统软件挂起整个总线时,将USBCMD中run、stop位设为0来关闭主控制器当唤醒事件发送时,系统软件最终将run、stop位设为1,恢复挂起端口1.1 端口挂起/恢复系统软件通过在适当的PORTSC挂起位中写入一个1来将各个端口置于挂起模式系统软件可以通过向Force port resume位写入一个1来在
EHCI主机控制器--端口路由逻辑和控制 一个USB 2.0主机控制器由一个高速主机控制器组成,它实现了EHCI编程接口和0到N个USB 1.1伴侣主机控制器。伴随主机控制器(chc)可以是通用或开放主机控制器规范的实现。此配置用于提供所需的完全USB 2.0定义的端口能力;例如,每个端口的低,全,和高速能力。每个物理端口都有一个收发器,每个主机控制器模块都有自己的端口状态和控制寄存器端口路由逻辑由来自EHCI主机控制器信号控制。上电或重置时,缺省路由策略是到伴随控制器。Usb2.0主控制器必须实现为多功能PCI设备,如果实现包括伴随控
EHCI主机控制器--主机控制器初始化 当系统启动时,枚举主机控制器,为寄存器空间分配一个基址,BIOS将FLADJ寄存器设置为系统特定的值。初始上电或HCReset(硬件或通过USBCMD寄存器中的HCReset位)后,所有的操作寄存器将在其默认值,如表所示。在硬件复位后,只有辅助电源井中不包含的运行寄存器将处于默认值。软件应执行的步骤:CTRLDSSEGMENT寄存器编写4-gb段,其中分配了所有接口数据将适当的值写入USBINTR寄存器以启用适当中断周期帧列表基址写入PREIODICLIST基寄存器。写USBCMD寄存器设置所
EHCI主机控制器--周期帧跨遍历节点(FSTN) 此数据结构仅用于管理跨Host-frame边界的Full- speed和Low-speed事务。软件不能在异步调度中使用FSTN。如果主机控制器的HCIVERSION寄存器指示版本实现低于0096h,软件不能使用FSTN特性。在0.96之前没有为实现定义fstn,它们的使用将产生未定义的结果。FSTN normal path pointerFSTN的第一个DWord包含一个指向下一个调度对象的链接指针。此对象可以是任何有效的周期调度数据类型FSTN Back Path Link Pointer
EHCI主机控制器-- 队列头(qh) Queue Head Horizontal Link Pointer该链接指针指向在该队列中完成任何必要的处理后的下一个要处理的数据对象,这个指针可以引用一个队列头或一个同步传输描述符。它不能引用队列元素传输描述符Endpoint Capabilities/CharacteristicsQueue Head的第二个和第三个Dwords指定了关于端点的静态信息。此信息不会在端点的生命周期内更改Transfer Overlay此区域中的9个DWords代表主控制器的事务工作空间。一般的运行模..
EHCI主机控制器--队列元素传输描述符(qTD) 此数据结构仅用于队列头。此数据结构用于一个或多个USB事务,这个数据结构用于传输最多20480(5*4096)字节。这个数据结构在物理上必须是连续的,与此传输相关的缓冲区必须是几乎连续的。缓冲区可以从任何字节边界开始。对于缓冲区中的每个物理页,必须使用一个单独的缓冲区指针列表元素,无论该缓冲区在物理上是否连续。Next qTD Pointer下一个传输元素指针Alternate Next qTD Pointer当当前qTD由于短包而退役时,主机控制器将始终使用这个指针。qTD Token包
EHCI主机控制器--分割事务同步传输描述符(siTD) 所有通过事务转换器进行的全速同步传输都使用siTD数据结构进行管理。此数据结构满足管理分割事务协议的操作需求next link pointersiTD Endpoint Capabilities/CharacteristicsDwords 1和2指定了关于全速端点、父事务转换器的寻址和微帧调度控制的静态信息Micro-frame Schedule ControlsiTD Transfer StatesiTD Buffer Pointer List (plus)siTD Back
EHCI主机控制器--同步(高速)传输描述符(iTD) 等时传输描述符的格式如图3-4所示。此结构仅用于高速等时端点。同步td必须在32字节的边界上对齐。next link pointer是一个指向下一个调度数据结构的指针。具体每个位含义如下:iTD Transaction Status and Control ListDwords 1到8是八个事务控制和状态槽。每个槽位格式如图3-4所示。主控制器使用每个事务描述中的信息加上Buffer Page Pointer列表的前三个dwords中包含的端点信息,在USB上执行一个事务。iTD buf
EHCI主机控制器--异步列表队列头指针 异步传输列表(以ASYNCLISTADD寄存器为基准),管理控制和中断传输。主控只有在到周期调度到尾时才会使用此调度。异步列表是一个简单的队列头循环列表。ASYNCLISTADDR寄存器只是一个指向下一个队列头的指针。这为链接到异步列表中的所有队列头实现了一个纯粹的轮询服务。...
EHCI主机控制器--周期帧列表(periodic frame list) 数据结构这里描述的数据结构支持32位内存缓存。 这些数据结构包括Periodic Schedule, Periodic Frame List, Asynchronous Schedule, Isochronous Transaction Descriptors, Split-transaction Isochronous Transfer Descriptors, Queue Heads and Queue Element Transfer Descriptors.Periodic f
9.3 usb设备请求(2) 1.Clear feature这个请求用来清除或禁用特定功能,wvalue的特征必须匹配接收者。也就是说接收端是设备,只能改变设备特征;接收端是端点,只能改变端点特征。2.Get Configuration这个请求返回当前设备配置值3.Get Descriptor这个请求返回指定描述符。wValue在高字节指定描述类型,低字节指定描述索引。4.Get Interface这个请求返回指定接口的备用配置。5.Get Status这个请求返回指定接收者的状态。bmRequestType
9.3 usb设备请求(1) 所有usb设备都可以通过默认控制管道回应主机,这些请求使用控制传输,请求和请求的参数在Setup包中发送到设备。主机负责建立下表中传递的字段的值。如下setup包的格式:标准设备请求USB设备必须响应标准设备请求,即使设备还没有被分配一个地址或还没有被配置。标准设备请求有如下(由bmRequestType和bRequest决定。)...
9.2 通用usb设备操作 所有usb设备都支持一系列如下的通用操作:热插拔主机在检测到设备时启用连接设备的集线器端口,这也具有重置设备的效果。复位USB设备有以下特点:响应默认USB地址未配置没有被挂起地址分配当USB设备被连接时,主机负责为该设备分配一个唯一的地址。这是在主机重置设备,并且设备连接的集线器端口已经启用之后完成的。配置USB设备必须配置后才能使用其功能。主机负责配置USB设备。主机通常从USB设备请求配置信息,以确定设备的功能。作为配置过程的一部分,主机设置设备配置,并在必要时为接口选
9.2 usb总线枚举流程(简介) 当一个usb设备被连接到端口时,以下过程就会发生1.Usb设备连接的hub确认usb状态,此时usb设备处于powerd状态2.Usb host 询问 usb hub所发生的变化3.现在主机知道了新设备连接到的端口,然后主机至少等待100毫秒,以完成插入过程并使设备的电源变得稳定。然后主机向该端口发出端口启用和重置命令。4.集线器对该端口执行所需的复位处理(见11.5.1.5节)。当复位信号释放时,表示该端口已启用。USB设备现在处于默认状态,可以从VBUS提取不超过100毫安。它的所有寄存器和状态
9.1 usb状态流程 9.1 usb状态流程usb状态图Attached:USB设备可能被连接或分离。USB设备与USB分离时的状态不是本规范所定义的。此规范仅说明设备附加后所需的操作和属性。Powered:USB设备可以从外部源和/或通过集线器从USB获得电源,它们被连接到。外部供电的USB设备称为自供电。尽管自供电设备在连接到USB之前可能已经通电,但在连接到USB和VBUS应用到设备之前,它们不被认为处于通电状态。一个设备可以同时支持自供电和总线供电的配置。某些设备配置支持任意一种电源。只有当设备自供