EHCI规范(转)

时间:2022-10-26 12:54:09

https://blog.csdn.net/qiurihuanghua/article/details/6411640

1. EHCI 1.0规范介绍

EHCI规范为USB 2.0规范定义了一个Host controller的寄存器级的接口,实际上就是系统软件和Host controller直接交互的接口。

一个USB Host系统由多个硬件和软件层构成,下图从架构概念上描述了这样一个USB Host系统:

EHCI规范(转)

这些硬件和软件层是:

- Client Driver Software层,这软件层在Host端执行,访问特定的USB设备。

- USB Driver (USBD),这是USB总线的系统软件层,它在相应操作系统中抽象下面提到的相应Host controller driver的具体细节。

- Host Controller Driver (xHCD),这是介于特定Host Controller硬件和USBD之间的软件层,它特定于Host Controller硬件的寄存器接口定义。

- Host Controller (xHC),这是USB 2.0的Host Controller具体硬件实现层。

- USB Device,这是实现终端用户功能的USB硬件设备,对该设备的交互访问流从应用程序,经过软件和硬件层,最后到该设备上。

一个USB 2.0的Host Controller一般包括:

一个high-speed模式的Host Controller (eHC),它实现EHCI接口,用于与high-speed模式设备通讯。

和0或者多个USB 1.1(full-speed和low-speed模式)的Companion Host Controller (cHC),用于与full-或者low-speed模式设备通讯。

当然,如果是0个,那么该Host Controller将无法支持full-和low-speed模式设备。

下图展示了这样一个USB 2.0 Host Controller:

EHCI规范(转)

Port Routing Logic负责将对应不同模式的Port路由相应的USB 2.0 eHC或者USB 1.1 cHC上,High-speed模式设备总是路由到eHC由其控制;而且在运行和配置阶段,eHC默认是所有root ports的Owner,eHC以及其相应的驱动初始阶段负责探测设备的连接,它在其中的每一个port寄存器上有一额外bit位,用于管理Port Routing Logic,如果连接的不是high-speed设备,eHC驱动会释放相应port的Ownership给cHC,在cHC下从初始连接检测到的那一个点上开始对该设备的枚举过程;反之,如果是high-speed设备,eHC则会继续持有该port的Ownership,而在其下完成该设备的枚举。

EHCI规范定义了3个Interface Space,如下图:

EHCI规范(转)

- PCI Configuration Space,如果实现包括有PCI寄存器,那它们用于系统模块的枚举和PCI功耗管理。

-  Register Space,用于具体实现相关的参数,功能,以及操作控制和状态寄存器,必须实现为I/O空间

- Schedule Interface Space,典型为Memory空间,由eHC驱动管理,用于Periodic和Asynchronous Schedules。

EHCI支持2个类别的Transfer types:Asynchronous和Periodic,其中Periodic类别包括Isochronous和Interrrupt传输类型,Asynchronous类别包括Control和Bulk传输类型。对应于这两个类别,有相应两种调度机制:

- Periodic schedule,是一个Periodic frame list,按固定周期调度,所有Isochronous和Interrupt传输都由它负责。

- Asynchronous schedule,是一个环形队列,按Round-robin调度,轮流处理,所有Control和Bulk传输都由它负责。

USB总线要求其Host controller实现Root hub,操作寄存器空间包含的端口寄存器具有用于管理USB规范内的每一个Port的最小硬件状态和控制信息。Host controller会遍历EHCI调度表,一直找到要处理的项目,然后开始处理这个USB事务,该事务会广播到所有使能的Root port,然后到达其连接的下游USB设备中。

端口寄存器为系统软件提供了USB 2.0规范要求的用于操作该端口的控制和状态信息,包括:

- 检测设备连接

- 断开设备连接

- 复位设备

- 管理端口功耗

- 端口电源管理功能

2. 寄存器接口

EHCI Host controller包括两套硬件寄存器:

- PCI Configuration Registers (仅挂在PCI总线上的设备实现该HC时),包括标准PCI配置头,电源管理,和设备相关寄存器,除此之外,在PCI Configuration Space还需要额外增加两个寄存器来支持USB,它们将在后面介绍。该空间仅用于PCI枚举来确定USB Host controller,并为其分配恰当的系统资源。

- Memory-mapped USB Host Controller Registers,这块寄存器空间映射到一个Non-cacheable memory,必须起于32-bit对齐地址。该寄存器空间又可进一步分为两套寄存器:

- 只读的Capability registers,用于规定该Host controller实现的极限,限制,功能。

- 可读/写的Operational registers,由系统软件用来控制和监控Host controller的工作状态。

EHCI规范(转)的更多相关文章

  1. USB协议规范学习(一)

    什么是USB OHCI规范? OHCI(Open HCI)是目前使用比较广泛的三种USB主机控制器规范之一.USB体系结构是由四个主要部分组成:客户软件/USB驱动,主机控制器驱动(HCD),主机控制 ...

  2. USB系列之一:列出你的USB设备

    USB现在已经成为PC机必不可少的接口之一,几乎所有的设备都可以接在USB设备上,USB键盘.鼠标.打印机.摄像头,还有常用的U盘等等,从本篇文章开始,将集中篇幅介绍一下在DOS中使用USB设备的方法 ...

  3. 通过USB 2.0电缆手动设置内核模式调试

    Windows的调试工具支持通过USB 2.0电缆进行内核调试.本文介绍如何手动设置USB 2.0调试.通过USB 2.0电缆进行调试需要以下硬件: USB 2.0调试电缆.此电缆不是标准USB 2. ...

  4. Linux usb 3. Host 详解

    文章目录 1. 简介 2. Usb Core 驱动设备模型 2.1 Usb Device Layer 2.1.1 device (struct usb_device) 2.1.2 driver (st ...

  5. ehci符合USB2.0,uhci,ohci,

    uhci   ohci   ehci他们都是主机控制器的规格,OHCI主要为非PC系统上以及带有SiShe ALi芯片组的 PC主板上的USB芯片,UHCI大多为Intel和Via主板上的USB控制器 ...

  6. linux USB HOST之EHCI和OHCI【转】

    转自:http://blog.csdn.net/ljzcom/article/details/8186914 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 2 关键数据结 ...

  7. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  8. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  9. 百度MIP页规范详解 —— canonical标签

    百度MIP的规范要求必须添加强制性标签canonical,不然MIP校验工具会报错: 强制性标签<link rel="/^(canonical)$/"> 缺失或错误 这 ...

随机推荐

  1. javascript学习笔记(四):事件处理函数和动态创建html标记。

    1 HTML的事件属性  全局事件属性:HTML 4 增加了使事件在浏览器中触发动作的能力,比如当用户点击元素时启动 JavaScript. a. Window 事件属性,针对 window 对象触发 ...

  2. UVA 572

    这是一道纯正的深度优先搜索题目. 题目要求在有多少个不同的块,而不同块的定义则是,一个块中的任意一点和l另一个块中的任意一点不会相连,而相连的定义则是 在横向.纵向和对角线上相连. #include& ...

  3. C&plus;&plus; 重载new和delete操作符

    原因: C++标准库提供的new和delete操作符,是一个通用实现,未针对具体对象做具体分析 存在分配器速度慢.小型对象空间浪费严重等问题,不适用于对效率和内存有限制的应用场景   好处: 灵活的内 ...

  4. Android 图片选择器

    图片选择器,遍历系统所有图片并显示,点击查看大图,长按选中,并将结果返回 字体颜色res/color建立text_selecor.xml <selector xmlns:android=&quo ...

  5. pycharm创建scrapy项目教程及遇到的坑

    最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各种教程,花费了一晚上的时间,终于成功,其中也踩了一些坑,现在整理 ...

  6. 初识&OpenCurlyDoubleQuote;FireBug”

    今天学习前端知识又一次提到“FireBug”这款插件,现在,把今天学到的一点东西简单记录下来. 什么是FireBug FireBug是一个用于网站前端开发的工具,它是FireFox浏览器的一个扩展插件 ...

  7. text-overflow文本溢出隐藏&OpenCurlyDoubleQuote;&period;&period;&period;”显示

    一.文本溢出省略号显示 1.文本溢出是否“...”显示属性:text-overflow:clip(不显示省略标记)/ellipsis(文本溢出时“...”显示) 定义此属性有四个必要条件:1)须有容器 ...

  8. ionic npm安装报错 no such file ,解决办法

    Install the latest version of NodeJS from their website (e.g. 6.X.X). Open the Node.js command promp ...

  9. HIS系统两种收费模式比较&colon;前计费和后计费

    一.药品 a.前计费:审核(临时医嘱)或者分解(长期医嘱)计费 退费处理方式,1)如果是还未发药,则护士站直接退费;2)如果药房已经发药,则护士站发出退费申请,由护士拿着药品去药房退药退费. b.后计 ...

  10. 在FooterTemplate内显示DropDownList控件

    如果想在Gridview控件FooterTemplate内显示DropDownList控件供用户添加数据时所应用.有两种方法可以实现,一种是在GridView控件的OnRowDataBound事件中写 ...