USB高速设备与全速设备、EHCI与XHCI
ohci ehci uhci 解释
ohci ehci uhci 解释uhci(universal host controller interface): Intel用在自家芯片组上的usb 1.1主控制器(host controller)的硬件实例。
ehci(enhanced host controller interface): usb 2.0的主控制器标准接口。
ohci(open host controller inferface):一个不仅仅是usb用的主控制器接口标准,下面细分为usb,1394,或者更多(别的没有接触过)。
主要是遵循csr(configuration space register)标准(另一个标准)。
是其他厂商在设计usb host controller时遵循的标准,如via, nec, ali, 包括nvidia等等。
uhci, ohci在硬件实现以及对底层软件访问上都有所不同,但二者又都完全(实际上各自多少都有些不足)支持usb 1.1 specification里边对usb host controller的要求。
同理,ehci是满足usb 2.0 specification里面对usb host controller (high speed)的要求的硬件设计。
应该是从win98之后usb1.1就被广泛支持了,无论是uhci还是ohci。
但ms真正支持usb2.0(或者说ehci)是从win2k sp4和winxp sp1。
这里所说的真正支持是指系统自带ehci的驱动而不需要第三方的驱动程序。
apple现在胳膊拗不过大腿,在mac机上也已经都开始支持usb1.1和2.0接口。
而上面的host controller 一定是ohci的标准主控器(HC)控制总线上包的传输。
使用1毫秒的帧。
在每帧开始时,主控器产生一个帧开始(SOF, Start of Frame)包。
SOF包用于同步帧的开始和跟踪帧的数目。
usb工作原理
usb工作原理USB(通用串行总线)是一种用于电脑和外部设备之间传输数据的通信接口。
它的工作原理基于一组标准化规范和协议。
USB通信是通过连接两个设备之间的USB接口来完成的。
USB接口由一个公共总线、主机和设备组成。
在通信过程中,主机负责发送和接收数据,而设备则负责执行主机指示的操作。
USB提供了两种不同的模式:传输和供电。
传输模式用于在主机和设备之间传输数据,可以支持低速(1.5 Mbps)、全速(12 Mbps)、高速(480 Mbps)和超速(5 Gbps)四种速率。
供电模式用于为外部设备提供电源,使其能够正常工作。
USB通信协议包括四个层次:物理层、数据链路层、传输层和应用层。
物理层定义了电缆、连接器和信号传输规范,以确保可靠的数据传输。
数据链路层负责管理数据帧的传输和接收,以及检测并纠正错误。
传输层提供了端到端的数据传输管理,包括流量控制和数据分组。
应用层定义了设备之间的通信协议和数据格式。
USB设备之间的通信是基于主机-设备模型的。
主机负责控制和管理连接的设备,并负责分配带宽和控制数据传输。
设备可以是外部存储设备(如闪存驱动器)、键盘、鼠标、打印机等。
主机通过发送控制命令来与设备进行通信,并接收设备返回的信息。
USB的工作原理基于主从架构,主机控制设备。
主机在检测到新连接的设备后,会与其进行握手并进行通信协商,以确定所需的传输速率和供电需求。
一旦通信建立,主机可以发送数据包到设备,设备接收并处理数据,然后将结果返回给主机。
总的来说,USB的工作原理是通过连接主机和设备的通信接口,按照规定的协议进行数据传输和设备控制。
这使得USB 成为了一种广泛使用的通信接口,支持各种设备和应用。
usb大全
PID 类型 令牌 数据 握手
PID 名称 OUT IN SOF SETUP DATA0 DATA1 ACK NAK
Get Configuratipon 0
0
1
配置值
(08H)
Set Configuratipon 配置值
0
0
无
(09H)
Get Interface (0AH) Set Interface
0
接口 1
可选配置 接口 0
可选的接 口 无
(0BH)
Synch Frame
0
端点 2
帧标号
(0CH)
Haven Lu
Haven Lu
2006.2.5
HRH
技术文件
复、设置正确的数据发位、及完成命令所指定的任务。
第二部分 : USB1.1 协议简介 一、USB 系统构成
USB 总线由以下四部分组成: 1、主机和设备:是指 USB 系统中的主要设备 2、物理构成:是指 USB 元件的连接方法 3、逻辑构成:不同的 USB 元件所担当的角色和责任,以及从主机和设备的
Haven Lu
2006.2.5
HRH
USB 标准设备请求
技术文件
请求类型
1000 0000B 1000 0001B 1000 0010B 0000 0000B 0000 0001B 0000 0010B 1000 0000B 1000 0001B 1000 0010B 0000 0000B
new high speed USB device using ehci_hcd and addr
new high speed USB device using ehci_hcd and addr将USB数据线插上找不到硬件查找出错原因:shell>cat /var/log/dmesg.log |grep usbshell>lsmodshell>lspci -v | grep USB发现如下的提示device descriptor read/64, errornew high speed USB device using ehci_hcd and address解决办法:1、卸载ehci_hcd 模块,命令rmmod ehci_hcd2、加载uhci_hcd 模块,命令modprobe uhci_hcd然后,插上U盘试试,若U盘不自动出来,用命令fdisk -l 看看是否出现相关的设备还不行的话,把ohci_hcd模块也卸载掉,再次加载hci_hcd模块再试试。
。
Linux usb子系统:子系统架构
Linux usb子系统:子系统架构一、USB协议基础知识前序:USB概念概述USB1.0版本速度1.5Mbps(低速USB)USB1.1版本速度12Mbps(全速USB)USB2.0版本速度480Mbps(高速USB)。
USB 分为主从两大体系,一般而言,PC 中的USB 系统就是作主,而一般的USB 鼠标,U 盘则是典型的USB 从系统。
USB主控制器这一块,我们至少要开发出USB 的主控制器与从控制器,鼠标是低速设备,所需的是最简单的一类从控制器。
主控制器则复杂得多,因为太过于复杂了,所以就形成了一些标准。
在一个复杂的系统中,标准的好处就是可以让开发者把精力集中在自己负责的一块中来,只需要向外界提供最标准的接口,而免于陷于技术的汪洋大海中。
USB 主控制器主要有1.1 时代的OHCI 和UHCI ,2.0 时代的EHCI ,这些标准规定了主控制器的功能和接口(寄存器的序列及功能),对我们驱动工程师而言,这样的好处就是只要你的驱动符合标某一标准,你就能轻而易举的驱动所有这个标准的主控制器。
要想把主控制器驱动起来,本来是一件很难的事情,估计全球的IT 工程师没几个能有这样的水平,但有了标准,我们就可以轻松的占有这几个高水平的IT 工程师的劳动成果。
主控制器和驱动有了,我们还需要USB 协议栈,这就是整个USB 系统的软件部分的核心(有的资料中直接把其称为USB 核心),USB 协议栈一方面向使用USB 总线的设备驱动提供操作USB 总线的API ,另一方面则管理上层驱动传下来的的数据流,按USB 主控制器的要求放在控制器驱动规定的位置,USB 主控制器会调度这些数据。
我们这里用到了调度这个词,USB 主控制器的调度其实和火车的调度CPU 的调度有相似之处,物理上的通路只有一条,但USB 中规定的逻辑上的通路却有许多条,有时一个设备就会占用几条逻辑通道,而USB 系统中又会有多个设备同时运行。
这就好像是只有一条铁路线,但来来往往的火车却有许多,USB 主控制器的作用就是调度这些火车,而USB 协议栈的作用则向上层的USB 设备驱动提供不同的车次。
ehci和xhci有什么区别
ehci和xhci有什么区别ehci和xhci有什么区别ehci是什么意思EHCI英文全称为Enhanced Host Controller Interface,是增强型主机控制器接口规范,描述了一个通用串行总线USB2.0版的主机控制器的寄存器级接口。
EHCI规范包括系统软件和主机控制器硬件之间的硬件/软件接口的描述,主要是为硬件组件设计,系统集成商和设备驱动程序(软件)开发。
了解EHCI之前,首先可以先了解HCI (Host Controller Interface) 即主机控制接口。
HCI是寄存器层级的界面接口,它允许一个主控制器(Host Controller 如主板南桥southbridge of Motherboard)来实现与外设如(USB、火线以及蓝牙)之间的.通讯。
当外设与PC相连接后,系统先进行初始化,HCI开始线程(threads)读写,建立与外设的连接。
接下来,HCI会重置然后读外设的缓存大小,建立与外设的通讯。
而EHCI (Enhanced Host Controller Interface)是HCI增强的(Enhanced)版本。
简单来说,EHCI就是通常所说的USB2.0接口,如果你的电脑支持USB2.0的话,那么你使用的USB设备都是接在他上面的.ehci和xhci有什么区别XHCI英文全称eXtensible Host Controller Interface,是一种可扩展的主机控制器接口,是Intel开发的USB主机控制器。
Intel心意哎100系列芯片的USB协议采用的就是XHCI主控,主要面向USB 3.0标准的,同时也兼容2.0以下的设备。
简单来说,XHCI是Intel最新开发的主机控制器接口,广泛用户Intel六代Skylake处理器对应的100系列主板上,支持USB3.0接口,往下也兼容USB2.0。
EHCI和XHCI都属于主机控制器接口,前者针对的是USB2.0接口,而后者则根据最新的USB3.0开发,往下也兼容USB2.0,简单来说,XHCI是EHCI的增强版。
xHCI的简要介绍
xHCI是英特尔公司开发的一个USB主机控制器接口。它目前主要是面向USB 3.0的,同时它也支持USB 2.0及以下的设备。我们知道USB 2.0主要用的是EHCI,USB 1.1则是OHCI和UHCI。EHCI为了兼容USB 1.1,就将OHCI或UHCI之一集成进自己的规范里,这样我们在设备管理器中就一般能同时看到两种USB主机控制器存在,这种方式名叫Companion(伙伴)模式。
现在,xHCI将这种模式完全消除了,它不再和以前的主机控制器规范兼容,一个规范支持所有的USB协议。这样带来的好处多多,很多优点都是EHCI/OHCI/UHCI所没有的或不敢想象的,比如:
1. 性能和能效方面能提供更高的效率,如系统空闲时能提供更低的功耗。
2. 保证设备级的编程模型与现有的USB软件模型完全一致。这个很重要,相当于是只要替换掉原有的主机控制器和相应控制器驱动及总线驱动,其它的现有设备和驱动都不用作任何修改就可以直接拿来使用了。
支持虚拟化技术。通过使用PCIe的SR-IOV规范,提供的虚拟机管理器能启动虚拟xHCI控制器(),并且可将任何USB设备指派到任意 VxHC实例。虚拟技术的支持是一个可选的xHCI标准特性。
支持32位和64位地址。在规范实行的生命期内,可以预见到的是xHCI主机控制器被用在超过32位地址内存空间的系统上的机会越来越多。xHCI内在支持多达64位的地址空间。
支持虚拟内存。所有的xHCI寄存器和数据结构都是被设计成支持coarse-grain Scatter/Gather的基于内存页的虚拟内存架构。
所有USB 3.0特性的稳定支持。 xHCI支持USB3.0的所有特性(废话,它就是为USB3.0而生的,不完全支持它那支持谁)。其中包括新的USB 3.0特性,如异步事务和其它协议中的扩展特性。
ehci原理
ehci原理EHCI(Enhanced Host Controller Interface)是一种用于USB 2.0的主机控制器接口标准。
它定义了USB主机控制器与系统BIOS、操作系统和USB设备之间的通信规范。
通过遵循EHCI标准,USB 2.0主机控制器可以实现高速数据传输和高效的设备管理。
EHCI的主要原理是通过分时共享总线的方式来实现高速数据传输。
USB 2.0总线的带宽为480 Mbps,但这个带宽需要同时支持多个USB设备的数据传输。
为了实现这一点,EHCI采用了分时共享的方式,将总线带宽划分为多个时间段,每个时间段用于传输一个设备的数据。
这样就可以使多个设备同时进行数据传输,提高了总线的利用率。
在EHCI中,主机控制器通过轮询的方式来管理USB设备。
主机控制器会周期性地向每个设备发送轮询请求,以确定设备是否有数据要传输。
如果设备有数据要传输,主机控制器就会分配一个时间段给该设备进行数据传输。
这种轮询方式可以有效地管理多个设备的数据传输,使得数据传输更加稳定和可靠。
除了数据传输,EHCI还定义了一套设备管理机制。
主机控制器可以检测到插入和拔出USB设备的事件,并向操作系统发送相应的通知。
操作系统可以根据这些通知来管理USB设备的连接和断开,以及进行相应的设备初始化和配置。
EHCI还提供了一些高级功能,如异步传输、同步传输和中断传输。
异步传输适用于大量数据的传输,同步传输适用于实时数据的传输,而中断传输适用于短时间内频繁的数据传输。
EHCI通过这些不同的传输方式,满足了不同类型数据传输的需求。
EHCI在USB 2.0中起到了至关重要的作用。
它提供了高速数据传输和高效设备管理的能力,使USB设备可以更好地与计算机进行通信。
通过遵循EHCI标准,USB 2.0主机控制器可以实现更好的兼容性和可靠性,为用户提供更好的使用体验。
EHCI作为USB 2.0的主机控制器接口标准,通过分时共享总线和轮询机制,实现了高速数据传输和高效设备管理。
USB基础
固件程序
;; Endpoint Descriptor db DSCR_ENDPNT_LEN ;; Descriptor length db DSCR_ENDPNT ;; Descriptor type db 82H ;; Endpoint number, and direction db ET_BULK ;; Endpoint type db 00H ;; Maximun packet size (LSB) db 02H ;; Max packect size (MSB) db 00H ;; Polling interval ;; Endpoint Descriptor db DSCR_ENDPNT_LEN ;; Descriptor length db DSCR_ENDPNT ;; Descriptor type db 04H ;; Endpoint number, and direction db ET_BULK ;; Endpoint type db 00H ;; Maximun packet size (LSB) db 02H ;; Max packect size (MSB) db 00H ;; Polling interval HighSpeedConfigDscrEnd:
固件程序
FX2的固件程序控制整个接口硬件系统的运行,负责处理PC主机发来的各种USB请求,完成数据传输。Cypress公司提供了固件程序框架,固件程序在这个框架的基础上编写。 FX2的固件程序控制整个接口硬件系统的运行,负责处理PC主机发来的各种USB请求,完成数据传输。Cypress公司提供了固件程序框架,固件程序在这个框架的基础上编写。 设备描述:DeviceDscr:
USB简介 USB简介
USB设备描述符 USB采用设备构架的概念来描述一个 USB设备描述符 :USB采用设备构架的概念来描述一个 USB设备。它把USB设备看成是一个配置、接口和端点的 USB设备。它把USB设备看成是一个配置、接口和端点的 集合,并采用标准USB描述符来说明它们,其中包括设备 集合,并采用标准USB描述符来说明它们,其中包括设备 描述符、配置描述符、接口描述符、端点描述符和字符串 描述符,对于高速设备,还可以包含设备限定描述符和其 他速率配置描述符。 设备描述符具有18字节的长度,是主机向设备请求的第一个 设备描述符具有18字节的长度,是主机向设备请求的第一个 描述符。它包含了设备的一般信息以及有关于用来设置此 设备时所需使用的预设管线的信息。配置描述符具有9 设备时所需使用的预设管线的信息。配置描述符具有9字 节的长度,并且针对设备给予配置的信息。接口描述符具 有9个字节的长度,用来描述每一个设备的接口特性。端 点描述符具有7 点描述符具有7个字节的长度,用来描述端点的属性以及 各个端点的位置。字符串描述符具有3 各个端点的位置。字符串描述符具有3个字节的长度,用 来描述一些文本信息,如供应商名称、产品序列号等,它 是可选的。设备限定描述符和其他速率配置描述符用于描 述高速设备在高速/ 述高速设备在高速/全速传输不同状态下的配置信息。
USB高速设备与全速设备、EHCI与XHCI
USB高速设备与全速设备、EHCI与XHCI升腾DaaS测试部修订记录日期修订版本描述作者2015-9-23 1.0 智能机具设备在新平台机型上升级工具无法识别的问题跟踪董宸目录一、概述 (3)1.1 问题概述 (3)1.2 结论及解决方法 (3)二、问题分析 (5)2.1 需求描述 (5)2.2 验证过程及结果 (5)2.3 分析 (6)一、USB高速设备与全速设备1.1 USB高速设备本月智能机具测试部内部测试反馈一个问题:针对智能机具最新采用瑞芯微平台的设备,在使用N660作为服务器时,安装瑞芯微专用量产工具无法识别连接到的智能机具设备,而在其他瘦客户机使用正常。
针对该问题对测试部进行反馈,希望协助进行问题排查确认。
1.2 结论及解决方法问题原因:该问题与新平台终端所配置的USB3.0有关:瘦客户机BIOS默认开启USB3.0,CMOS中开启XHCI 模式。
此时智能机具设备接入瘦客户机后(接入USB2.0接口),瘦客会将设备识别为full speed usb然而量产工具中,默认只支持high speed usb,故出现N660无法识别设备现象;同理,在同为Haswell的D660或者Baytrail平台终端(如N610)也有同样问题。
解决办法:方法1:瑞芯微量产工具中提供了’config.ini’配置文件,其中一项配置‘SUPPORTLOWUSB=’从注释可以看出,设为‘TRUE’时,即可支持全速USB设备;实测生效,可以正确识别智能机具设备。
方法2:关闭XHCI,开机按F2进入CMOS,依次进入Chipset->North bridge->USB configuration中可以看到XHCI配置项,瘦客户机默认为Enable,设置为Disable即可正确识别设备备注:N660/D660关闭XHCI即会自动打开EHCI模式,D610关闭XHCI后,需要手动打开EHCI。
二、问题分析2.1 需求描述智能机具设备今年有多款瑞芯微平台产品:E10-2、A10、I90 V2.00等。
usb_basic
USB基础知识概论版本:v0.8Crifan Li摘要本文主要介绍了USB协议的基础知识,包括USB协议的来龙去脉,OHCI/UHCI/EHCI/xHCI之间的区别和联系,USB的firmware,以及USB 2.0协议的概览,USB的枚举的详细过程,OHCI的一些特点本文提供多种格式供:HTML版本的在线地址为:/files/doc/docbook/usb_basic/release/html/usb_basic.html有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:/bbs/categories/usb_basic/修订历史修订 0.52011-10-06crlB基础知识概论修订 0.82012-08-09crl1.通过Docbook发布2.添加了USB协议细节部分的内容3.添加了USB OHCI学习笔记1 /files/doc/docbook/usb_basic/release/html/usb_basic.html2 /files/doc/docbook/usb_basic/release/htmls/usb_basic.html3 /files/doc/docbook/usb_basic/release/pdf/usb_basic.pdf4 /files/doc/docbook/usb_basic/release/chm/usb_basic.chm5 /files/doc/docbook/usb_basic/release/txt/usb_basic.txt6 /files/doc/docbook/usb_basic/release/rtf/usb_basic.rtf7 /files/doc/docbook/usb_basic/release/webhelp/index.html8 /files/doc/docbook/usb_basic/release/html/usb_basic.html.7z9 /files/doc/docbook/usb_basic/release/htmls/usb_basic.html.7z10 /files/doc/docbook/usb_basic/release/pdf/usb_basic.pdf.7z11 /files/doc/docbook/usb_basic/release/chm/usb_basic.chm.7z12 /files/doc/docbook/usb_basic/release/txt/usb_basic.txt.7z13 /files/doc/docbook/usb_basic/release/rtf/usb_basic.rtf.7z14 /files/doc/docbook/usb_basic/release/webhelp/usb_basic.webhelp.7zUSB基础知识概论:Crifan Li版本:v0.8出版日期 2012-08-09版权 © 2012 Crifan, 本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)15/files/doc/docbook/soft_dev_basic/release/html/soft_dev_basic.html#cc_by_nc目录缩略词 (1)正文之前 (ii)1. 此文目的 (ii)2. 关于一些USB方面的文档 (ii)2.1. 大而全的USB英文资料 (ii)2.2. 简明扼要的USB英文资料 (ii)2.3. 全系列的介绍Linux下的USB中文资料 (ii)3. 声明 (ii)1. USB的来龙去脉 (4)1.1. USB是什么 (4)1.2. 为何要有USB (6)2. USB相关的基础知识 (9)2.1. USB相关的硬件 (9)2.1.1. USB控制器类型:OHCI,UHCI,EHCI,xHCI (9)2.1.1.1. OHCI和UHCI (9)2.1.1.1.1. 为何Intel设计的UHCI把更多的任务都留给软件实现? (9)2.1.1.1.2. 为何嵌入式系统中的USB主控多用OHCI,而非UHCI? (10)2.1.1.1.3. OHCI和UHCI技术细节上的区别 (10)2.1.1.2. EHCI (10)2.1.1.3. xHCI (10)2.1.1.4. OHCI,UHCI,EHCI,xHCI的区别和联系 (11)2.1.2. USB接口的引脚定义 (11)2.1.3. USB的接口(connector)类型 (12)2.2. USB相关的软件 (13)2.2.1. USB设备端的固件(Firmware) (13)2.2.2. USB主机(Host)端的USB驱动和软件 (13)2.2.3. 其他一些USB测试和协议分析等软件 (13)3. USB协议概览 (15)3.1. USB 2.0协议内容概览 (15)3.2. USB协议的版本和支持的速度 (17)3.2.1. 为何USB的速度,最开始没有设计的更快些? (17)3.3. USB系统的核心是Host (18)3.4. USB中用NRZI来编码数据 (18)3.4.1. USB中用Bit-Stuffing来同步时钟信号 (20)4. USB协议细节 (21)4.1. USB Class (21)4.1.1. 为何要搞这么多USB的Class (21)4.2. USB的框架 (22)4.3. USB Transfer and Transaction (27)4.4. USB枚举(Emulation) (27)4.4.1. 什么是USB枚举 (27)4.4.2. USB枚举的过程 (27)4.4.3. 举例详解USB的枚举过程 (28)4.4.3.1. USB枚举示例数据 (28)4.4.3.2. 详细分析USB枚举数据的每个字段的具体含义 (29)4.5. USB OHCI学习笔记 (35)参考书目 (39)1.1. USB与其他总线的异同 (5)1.2. PC机箱后面的众多接口 (6)1.3. 有了USB接口之后的PC机箱背后的接口 (7)3.1. I2C数据编码格式 (19)3.2. 归零编码 (19)3.3. 非归零编码 (19)3.4. NRZ和NRZI (20)4.1. USB Implementation Areas (23)4.2. USB Physical Bus Topology (24)4.3. USB Logical Bus Topology (25)4.4. USB Communication Flow (25)4.5. USB Layers in Linux (26)4.6. USB Transfer and Transaction (27)4.7. Configuration Descriptor: 0902420002010480E1 (30)4.8. Interface Descriptor: 0904000002FF000000 (31)4.9. Endpoint (Interrupt Out) Descriptor: 07050103400001 (32)4.10. Endpoint (Interrupt In) Descriptor: 07058103400001 (33)4.11. Interface Descriptor: 090401000103000000 (33)4.12. Endpoint (Interrupt In 2) Descriptor: 0705820340000A (35)4.13. USB主机中软件和硬件之间的关系 (36)4.14. USB Communication Channel (37)4.15. USB Typical List Structure (38)2.1. 不同USB控制器类型OHCI,UHCI,EHCI,xHCI的区别和联系 (11)2.2. USB 1.x/2.0的引脚定义 (11)2.3. USB 3.0的引脚定义 (11)2.4. USB接口分类 (12)3.1. USB 2.0协议的内容组成 (15)3.2. USB协议的版本的演化 (17)4.1. USB Class表 (21)4.2. USB Descriptor Type (22)4.3. USB Configuration Descriptors (29)4.4. USB Interface Descriptors (30)4.5. USB Endpoint Descriptors (31)4.6. USB HID Descriptors (33)4.7. USB HID Descriptor: 090401000103000000 (34)缩略词EHCI (EHCI)Enhanced Host Controller Interface NRZ (NRZ)Non-Return-to-ZeroNRZI (NRZI)Non-Return-to-Zero Inverted OHCI (OHCI)Open Host Controller InterfaceRZ (RZ)Return-to-ZeroSYNC (SYNC)SynchronizeUHCI (UHCI)Universal Host Controller Interface USB (USB)Universal Serial Bus通用串行总线xHCI (xHCI)eXtensible Host Controller Interface正文之前1. 此文目的由于USB所涉及的知识太多,如果想要在一篇文章里,把USB的方方面面的内容,都解释的很清楚,那几乎是不可能的。
几种USB控制器类型
3.在QEMU代码中看到它支持的各种配置:“CONFIG_USB_OHCI=y”、“CONFIG_USB_UHCI=y”、“CONFIG_USB_EHCI=y”、“CONFIG_USB_XHCI=y”等。
4.看到Kernel的config文件中的“CONFIG_USB_OHCI_HCD=m”、“CONFIG_USB_UHCI_HCD=m”、“CONFIG_USB_EHCI_HCD=m”、“CONFห้องสมุดไป่ตู้G_USB_XHCI_HCD=m”等。
2.UHCI(UniversalHostControllerInterface),是Intel主导的对USB1.0、1.1的接口标准,与OHCI不兼容。UHCI的软件驱动的任务重,需要做得比较复杂,但可以使用较便宜、较简单的硬件的USB控制器。Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。
所以,这里就简单列一下各种xHCI(也包括真正的xHCI)的基本含义吧。
简单地讲,OHCI、UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCI是USB3.0的接口标准。
1.OHCI(OpenHostControllerInterface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。
3.EHCI(EnhancedHostControllerInterface),是Intel主导的USB2.0的接口标准。EHCI仅提供USB2.0的高速功能,而依靠UHCI或OHCI来提供对全速(full-speed)或低速(low-speed)设备的支持。
HP新机型安装windows7系统引导后无法识别USB设备的问题
新机型安装windows7系统引导后无法识别USB设备的问题。
因为新机型只支持XHCI,windows7系统不支持XHCI,所以安装系统过程中需要加载USB驱动。
附件内有windows7系统加载USB驱动的实验报告以及windowsimagetool工具。
关于XHCI和EHCI的区别,可以理解为:
XHCI(eXtensible Host Controller Interface),可扩展的主机控制器接口,可扩展的主机控制器接口是英特尔公司开发的一个USB主机控制器接口。
它目前主要是面向USB 3.0的,同时它也支持USB 2.0及以下的设备。
EHCI(Enhanced Host Controller Interface),增强型主机控制器接口,规范描述了一个通用串行总线(USB)2.0版的主机控制器的寄存器级接口。
要注意的是,XHCI和EHCI都是USB接口的规范,和AHCI(Serial ATA Advanced Host Controller Interface)串行ATA高级主控接口没有直接的关系。
Intel第六代Skylake平台处理器会移除EHCI主控,改为支持XHCI主控,但Windows 7系统原生不支持XHCI主控(Windows 7以上版本操作系统不受此影响),所以安装windows7系统在引导后无法识别到U盘,需要加载USB驱动。
USB驱动之xhci
USB驱动之xhci
xhci是USB3.0的host规范,对于SoC的芯⽚,xhci host作为⼀个platform_device,对于的驱动是usb_xhci_driver:dirvers/usb/host/xhci-plat.c
先看 xhci_init_driver:
这⾥⽤到了⾯向对象的多态,对hc_driver进⾏初始化。
hc_driver是usb host的⼀个抽象,主要包含root hub和io request等相关操作接⼝。
在xhci_plat_probe⾥,两个重量级的函数是usb_create_hcd和usb_add_hcd,⽤了创建usb_hcd和将usb_hcd添加到系统中。
在这⾥,有两个usb_hcd,⼀个是main_hcd(或者primary_hcd),⼀个是shared_hcd,为什么会有两个呢?⼀度困惑了很久,直到看到hc_driver中的reset函数才恍然⼤悟。
hc_driver中的reset函数对应为xhci_plat_setup,其调⽤的xhci_gen_setup有如下⼀段 :
原来xhci为了向下兼容,集成了两个roothub,⼀个对应usb2.0(main_hcd),⼀个对应usb3.0及以上(shared_hcd)。
那这⾥怎么区分usb2.0的端⼝和usb3.0的端⼝呢?xhci extended capabilities⾥有:
7.2 xHCI Supported Protocol Capability
对应的代码在xhci_mem_init⾥,请读者⾃⾏分析.。
Host控制器之EHCI---------重要0
2010/11/20Host控制器之EHCI一USB的数据流模型USB设备在工作时,从用户的角度或者说从应用的角度来看,数据流的两边分别是host 和slave,或者叫做USB主机和USB设备。
但是在实际的开发过程中,却远比这要复杂,USB系统被分出若干层,不同的层负责不同的性质的工作。
比如以U盘这个mass storage类来说,主机需要通过控制器来发送接收数据,系统软件需要实现USB协议,在linux代码中叫做USB core,负责实现USB子系统的工作,这一层与具体是什么类没有关系。
客户软件并不是我们通常意义上说的比如qq这种应用软件,而是驱动软件,USB core之上我们就需要实现mass storage层的代码,这就是客户软件。
这3层分别是负责数据的基本发送、接收,USB协议层的实现(子系统的实现),驱动层的实现。
二Host控制器(controller)Usb的拓扑结构决定了控制器是老大,没有控制器的要求设备永远不能主动发数据。
等!所以host控制器在USB的世界里扮演着重要的角色,不羡慕台前的风光,一直默默无闻的在幕后耕耘。
那么在前一章中,比如说host发送setup包获取设备描述符,怎么发出去的?这个过程包含很多信息的,如何在D+,D-这两根线上传过去的、又传过来的。
这一切的工作都是控制器给我们干的。
USB Host控制器的规范有很多种:这里只介绍混得不错的EHCI和OHCI,这个EHCI主要针对高速的USB设备。
如果要操作全速和低速可以考虑OHCI。
什么是USB controller?USB 设备和主机的接口就是host controller,一个主机可以支持多个host controller,比如分别属于不同厂商的。
那么USB host controller 本身是做什么的?controller,控制器,顾名思义,用于控制,控制什么,控制所有的usb 设备的通信。
Cpu把要做的事情分配给控制器,然后自己想干什么就干什么去,控制器替他去完成剩下的事情,事情办完了再通知cpu。
关于USB高速(HighSpeed)和中速(FullSpeed)的区分
关于USB高速(HighSpeed)和中速(FullSpeed)的区分USB中区分当前设备是低速还是中速(初始时,高速也被当做中速)的方法是检查D+ 或者D- 上的电阻。
如果发现时中速设备,还要有额外的动作来区分是中速还是高速设备。
具体的做法是:“主机识别一个中速设备是否支持高速。
要知道一个设备是否支持高速,需使用两个特殊的信号状态。
在Chirp J 状态时只有D+线会被驱动,在Chirp K 状态时只有D-线会被驱动。
在重置期间,支持高速的设备会送出一个Chirp K。
高速的集线器检测到该Chirp后,会反映遗传的交替Chirp K与J。
当设备检测到KJKJKJ的样式后,它会移除它的中速上升,然后在高速执行所有的通信。
如果集线器没有对设备的Chirp K做出相应,设备知道它必须继续使用中速通信。
高速的设备必须能够在中速时,相应检测设备的请求”【注释1】使用Ellisys USB 分析仪查看,其中的一个例子:Mass-storage USB 2.0 HS.ufo 可以看到这样一个握手。
上面的解释是“High speed Detection HandshakeHigh speed Detection Handshake state detectedStatusThe handshake completed successfully.When does this state occur?All high speed devices start at full speed to ensure USB 1.1 backward compatibility. If the upstream port(device) supports high speed signaling, it will generate a Chirp K state on the bus after Reset. If the downstream port (host) also supports high speed signaling, it will generate Chirps to change the link speed into high speed. If the downstream port (host) does not support high speed signaling, it will never see the upstream port (device) Chirp and the link speed will stay at full speed.”可惜的是无法看清楚具体的电气特性。
USB 2.0数据线接口定义
USB2.0简介目前USB设备虽已被广泛应用,但比较普遍的却是USB1.1接口,它的传输速度仅为12Mbps。
举个例子说,当你用USB1.1的扫描仪扫一张大小为40M的图片,需要4分钟之久。
这样的速度,让用户觉得非常不方便,如果有好几张图片要扫的话,就得要有很好的耐心来等待了。
用户的需求,是促进科技发展的动力,厂商也同样认识到了这个瓶颈。
这时,COMPAQ、Hewlett Packard、Intel、Lucent、Microsoft、NEC和PHILIPS这7家厂商联合制定了USB2.0[1]接口标准。
USB2.0将设备之间的数据传输速度增加到了480Mbps,比USB1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB2.0的线路上,而且无需担心数据传输时发生瓶颈效应。
所以,如果你用USB2.0的扫描仪,就完全不同了,扫一张40M的图片只需半分钟左右的时间,一眨眼就过去了,效率大大提高。
而且,USB2.0可以使用原来USB定义中同样规格的电缆,接头的规格也完全相同,在高速的前提下一样保持了USB1.1的优秀特色,并且,USB2.0的设备不会和USB1.X设备在共同使用的时候发生任何冲突。
市面上USB2.0的规格有全速(Full-Speed)和高速(High-Speed)。
其中高速理论传输速率是480Mbps,即60MB/s。
全速理论传输速率是12Mbps,即1.5MB/s。
接口指MP3播放器与电脑的连接方式。
接口技术是MP3播放器的最重要的指标之一,接口的速度、方便程度自然也会影响到MP3的实用性和上传或下载歌曲的速率。
MP3播放器常见接口包括并口(EPP)、USB接口和IEEE1394接口,早期的一般是并口,由于传输速度的限制,并口的MP3已被淘汰。
如今市面上的MP3接口基本是USB接口了,优点在于传输速率快和支持热插拔。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USB高速设备与全速设备、EHCI 与XHCI
USB高速设备与全速设备、EHCI与
XHCI
升腾DaaS测试部
修订记录
日期修订版
本
描述作者
2015-9-
23 1.0
智能机具设备在新平台机
型上升级工具无法识别的
问题跟踪
董宸
目录
一、概述 (5)
1.1 问题概述 (5)
1.2 结论及解决方法 (5)
二、问题分析 (8)
2.1 需求描述 (8)
2.2 验证过程及结果 (9)
2.3 分析 (9)
一、USB高速设备与全速设备
1.1 USB高速设备
本月智能机具测试部内部测试反馈一个问题:针对智能机具最新采用瑞芯微平台的设备,在使用N660作为服务器时,安装瑞芯微专用量产工具无法识别连接到的智能机具设备,而在其他瘦客户机使用正常。
针对该问题对测试部进行反馈,希望协助进行问题排查确认。
1.2 结论及解决方法
问题原因:
该问题与新平台终端所配置的USB3.0有关:瘦客户机BIOS默认开启USB3.0,CMOS中开启XHCI模式。
此时智能机具设备接入瘦客户机后(接入USB2.0接口),瘦客会将设备识别为full speed usb
然而量产工具中,默认只支持high speed usb,故出现N660无法识别设备现象;
同理,在同为Haswell的D660或者Baytrail平台终端(如N610)也有同样问题。
解决办法:
方法1:瑞芯微量产工具中提供了’config.ini’配置文件,其中一项配置‘SUPPORTLOWUSB=’从注释可以
看出,设为‘TRUE’时,即可支持全速USB设备;实测生效,可以正确识别智能机具设备。
方法2:关闭XHCI,开机按F2进入CMOS,依次进入Chipset->North bridge->USB configuration中
可以看到XHCI配置项,瘦客户机默认为Enable,设置为Disable即可正确识别设备
备注:N660/D660关闭XHCI即会自动打开EHCI
模式,D610关闭XHCI后,需要手动打
开EHCI。
二、问题分析
2.1 需求描述
智能机具设备今年有多款瑞芯微平台产品:E10-2、A10、I90 V2.00等。
其中以E10-2为例,采用瑞芯微RK3188的安卓终端(隶属翼柜通产品线,具体请参考“智能机具资料整理”。
该产品在工厂生产过程中,固件升级需要使用USB接口连接到瘦客上,使用量产工具进行升级。
量产工具界面如下:
2.2 验证过程及结果
发现问题平台:N660+Win7 32bit旗舰版
验证平台及测试结果:
D660+WES V1.46(2014120401):无法识别
D610+WES V1.46(2014120401):无法识别
FI945+XPe V4.05(2014032001):可以识别
笔记本电脑+WIN7 64bit旗舰版:可以识别
2.3 分析
1、测试发现出现问题智能机具设备为瑞芯微RK3188
平台,量产工具版本为1.7。
而C91产品同样为RK3188平台,升级工具完全相同,故采用C91进行2.2同环境验证,与E10设备测试结果完全相同。
2、量产工具有分别提供X86/X64下的XP/WIN7/WIN8
等系统版本驱动,测试过程中,驱动均安装正常,且设备管理器有识别到有设备接入,故排除驱动问题,终端实际已识别到设备,但软件未能识别,故关注重点在量产工具软件上。
3、验证结果发现,无法识别设备的终端具有共同特点为
均配备的USB3.0接口;USB3.0接口需要XHCI模式支持以代替USB2.0的EHCI,而XHCI不仅仅影
响USB3.0接口,同样USB2.0接口也会有所影响。
同时查看量产工具配置文件发现如下配置
尝试修改配置使其支持全速USB设备后,发现可以正常识别设备。
故判断XHCI模式下会导致瑞芯微设备工作在FULL SPEED USB下;通过修改配置文件或关闭XHCI均可使终端正确识别瑞芯微设备。