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

1. EHCI 1.0规范介绍

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

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

这些硬件和软件层是:

- 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:

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,如下图:

- 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. InfluxDB源码目录结构解析

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...

  2. 基于Centos搭建Jenkins 环境搭建

    系统要求: CentOS 7.2 64 位操作系统 安装 Jenkins Jenkins 简介 Jenkins 是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提 ...

  3. Scale-out NAS 和scale-up NAS 系统的优缺点

    企业IT部门在应对非结构化数据的爆炸性增长时,他们需要考虑选购适合的NAS系统,决定传统的固定容量的NAS设备和新兴的scale-out NAS设备哪一种能更好地满足他们的文件存储需求. 为了帮助你做 ...

  4. Clipboard Action for Mac(智能剪贴板历史管理器)破解版安装

    1.软件简介    Clipboard Action 是 macOS 系统上一款智能剪贴板历史管理器,它允许剪贴板历史中的每一段内容执行操作.使用 AppleScript 或 Automator 工作 ...

  5. 如果你喜欢python,那你迟早会喜欢上julia的!

    你可曾想过有那么一门语言: 这门语言能够有C语言一样的速度,Ruby一样得活力(dynamism).像homoiconic一样的语言,它像Lisp一样有宏,但是也像Matlab一样有显而易见.熟悉的数 ...

  6. [ci]jenkins-slave-ssh docker容器化-自动注入key

    jenkins server 再启动slave时候,动态的注入sshkey 只要slave有ssh+jdk即可.无需事先预置用户名密码给slave. 配置 inject ssh key 配置项目 执行 ...

  7. 模仿CountDownLatch类自定义倒时计时器

    简介 这里模仿CountDownLatch类自定义到时计时器,利用AQS模板中的尝试获得共享和释放共享 1.MyCountDownLatch package com.jacky; import com ...

  8. (原)阅读Android-Camera2Video的demo源码和调试心得

    转载请注明出处:http://www.cnblogs.com/lihaiping/p/6142512.html   最近因为项目需要使用到camera的功能,所以针对官方的demo源码进行一番阅读,并 ...

  9. 安卓开发笔记——丰富多彩的TextView

    随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607. ...

  10. Photo Sphere Viewer 全景图

    Photo Sphere Viewer  一款基于 three.js 的简易3D插件,方便,实用,友好,看到网上有些API有错误,所以自己写一个修正版的 该js插件可以360度旋转查看全景图,也可以上 ...