+ -

USB控制器及分类

USB是一直在变化的,从最开始的1.0发展到现在开始大规模使用的3.0,甚至到今天已经发布的USB4.0。所以USB的控制器也在不断的变化升级。所以由于历史的原因,导致USB的主机控制器,出现了多种不同的类型,即OHCI和UHCI,EHCI,和xHCI不论是那种USB主机控制器,简称主控,都是符合对应的USB的规范的,都是实现了对应的USB规范中所规定的USB主控所要的那些事情的。只不过是不同的USB主控的类型,有着不同的特点。

OHCI,UHCI,EHCI,xHCI区别与联系

USB主机控制器类型 对应的USB的协议和支持的速率 创立者 功能划分 常用于
OHCI USB 1.1=Low Speed和Full Speed Compaq,Microsoft和National Semiconductor 硬件功能 > 软件功能⇒硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单 扩展卡,嵌入式开发板的USB主控
UHCI USB 1.1=Low Speed和Full Speed Intel 软件功能 > 硬件功能⇒软件的任务重,可以使用较便宜的硬件的USB控制器 PC端的主板上的USB主控
EHCI USB 2.0=High Speed Intel 定义了USB 2.0主控中所要实现何种功能,以及如何实现 各种USB 2.0主控
xHCI USB 3.0=Super Speed Intel 定义了USB 3.0主控中所要实现何种功能,以及如何实现 各种USB 3.0主控

OHCI和UHCI - USB1.1

  • OHCI,Open Host Controller Interface,创立者是Compaq,Microsoft和National Semiconductor。
  • UHCI,Universal Host Controller Interface,创立者是Intel。

两者之间的相同点是:

  • 不论是OHCI还是UHCI都是对应于USB 1.1的标准的,都是完全符合USB协议标准的。

区别在于:

  • 虽然都是实现了USB1.1协议规范,但是在功能划分上,OHCI更多地把要做的事情,用硬件来实现,因此,实现OHCI的USB控制器的软件驱动的开发工作,相对要容易些,软件要做的事情,相对较少。 对应地,OHCI更多地应用在扩展卡,尤其是嵌入式领域中,常见的很多开发板中的USB的控制器,很多都是OHCI的。
  • OCHI是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE 1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。
  • 而UHCI把更多的功能,留给了软件,相对来说,软件做的事情,即负担要重些。但是实现对应的UHCI的硬件的USB控制器,价格上,就相对便宜些。 对应地,UHCI更多地应用在PC机中的主板上的USB控制器。Intel主导的对USB1.0、1.1的接口标准,与OHCI不兼容,Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。

EHCI - USB2.0

  • EHCI,Enhanced Host Controller Interface。

EHCI定义了USB 2.0的主机控制器的规范,定义了USB 2.0的主控,需要包括哪些硬件实现,需要实现哪些功能,其也对应着对应的系统软件,所面对的是哪些接口。

EHCI对USB主控的定义,详细到了寄存器的级别了,即定义了USB主控都要实现哪些对应的功能和对应的寄存器有哪些,分别是何种功能等。然后对应的软件驱动人员,去写USB主控的驱动的时候,也就清楚有哪些可以利用的系统资源,如何去使用这些资源,读取,设置对应的寄存器,实现对应的功能了。

EHCI仅提供USB2.0的高速功能,而依靠UHCI或OHCI来提供对全速(full-speed)或低速(low-speed)设备的支持。

对应的EHCI规范,可以去Intel的官网找到:EHCI Specification

XHCI - USB3.0

xHCI 即Extensible Host Controller Interface,同EHCI是针对USB 2.0类似,xHCI是针对的USB 3.0规范。也是定义了USB 3.0主控需要如何实现,需要包含哪些功能,也是提供了寄存器级别的定义。

XHCI是最新最火的USB3.0的接口标准,它在速度、节能、虚拟化等方面都比前面3中有了较大的提高。xHCI支持所有种类速度的USB设备(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是为了替换前面3中(UHCI/OHCI/EHCI)。

对应的xHCI规范,可以去Intel的官网找到:Extensible Host Controller Interface (xHCI) Specification for USB 3.0


为何Intel设计的UHCI把更多的任务都留给软件实现?

作为UHCI的创立者Intel,创立了UHCI,把更多的USB需要做的事情,留给了软件,这样就可以实现出相对便宜的USB的主控制器了,可以用于PC端的CPU所对应的主板上,便宜的USB主控,当然相对市场来说,更容易多卖出去一点,有利于市场推广。
PC主板卖出的多了, 自然对应的Intel的CPU,也会多卖点,Intel自然可以赚更多的钱了。

为何嵌入式系统中的USB主控多用OHCI,而非UHCI?

而对应的Compaq,Microsoft和National Semiconductor所创立的OHCI,由于把更多的USB要做的事情,都用硬件实现了,这样对应的软件驱动所要做的事情,就少了,这样就有利于实现对应的OHCI的USB主控的驱动了,这点对于嵌入式系统来说,尤其重要,因为本身嵌入式系统就是资源有限,所以要尽量少的利用其他资源,比如CPU资源,去实现特点的功能,所以,倾向于采用对软件资源要求少的OHCI,而不是UHCI,否则用了UHCI的USB主控的话,需要实现对应的驱动,软件要做的事情太多,不利于在嵌入式系统这有限的资源环境下实现。

  • USB基础
  • USB摄像头UVC
  • USB人机交互HID
  • USB音频UAC
  • Windows基础
  • 磁盘与文件系统
  • Windows编程
  • Windows驱动
  • 开发模块
  • Windows运维
  • Linux相关
  • C语言学习
  • 高级语言
  • 前端开发
  • 服务器开发
  • 数据库
  • 字节流笔记
  • 字节流
  • 微信公众号
    字节流公众号  字节流QQ群:952873936
    取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    Powered by bytekits.com,汇天下文字,成非凡梦想!!!