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. Spring MVC实现上传文件报错解决方案

    报错代码: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.sp ...

  2. 使用ThreadLocal来实现一个本地缓存

    大家应该知道,用户从发起请求,到服务器响应的这个过程中,在服务器中是在一个线程中的.如果我们吧查询出来的对象放到这个线程自己的缓存中,到用户请求结束时,把这些东西清理掉,应该是一个不错的cache方案 ...

  3. 微软自然语言理解平台LUIS:从零开始,帮你开发智能音箱

    今年微软开发者大会Build 2017上展示了一款Invoke智能音箱,受到了媒体和大众的广泛关注.近两年,不少大公司纷纷涉足该领域,使得智能音箱逐渐成为一款热门的人工智能家用电器.智能音箱的兴起也改 ...

  4. easyui confirm提示框 调整显示位置

    方法一: $.messager.confirm("确认对话框","该客户已经存在!确定:查看该客户 ", function(r){ if(r){ alert(& ...

  5. 12C -- 配置Application Continuity

     

  6. 7.翻译系列:EF 6中的继承策略(EF 6 Code-First 系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx EF 6 ...

  7. 视频压缩和H264

    一.视频压缩 1.1 为什么需要压缩视频? 假设一个2小时未压缩的高清视频,1920×1080p的电影,我们来计算一下他的存储容量.先介绍一下帧率(frame rate或者是 FPS)概念,也就是每秒 ...

  8. 【Socket】关于socket长连接的心跳包

    TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发 ...

  9. Selenium Web 自动化 - 项目实战(一)

    Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...

  10. Push to origin/master was rejected (Git提交错误)(转)

    [问题描述] 在使用Git Push代码的时候,会出现 Push to origin/master was rejected 的错误提示. 在第一次提交到代码仓库的时候非常容易出现,因为初始化的仓库和 ...