[应用相关]

从零开始学USB(二、基础知识2)

[复制链接]
589|11
手机看帖
扫描二维码
随时随地手机跟帖
观海|  楼主 | 2019-7-9 09:17 | 显示全部楼层 |阅读模式
1.USB相关的硬件
USB设备,从物理上的逻辑结构来说,包含了主机Host端和设备Device端。

其中,主机Host端,有对应的硬件的USB的主机控制器Host Controller,而设备端,连接的是对应的USB设备。

1.1. USB控制器类型:OHCI,UHCI,EHCI,xHCI
由于历史原因,导致USB的主机控制器,出现了多种不同的类型,即OHCI和UHCI,EHCI,和xHCI。

不论是那种USB主机控制器,简称主控,都是符合对应的USB的规范的,都是实现了对应的USB规范中所规定的USB主控所要的那些事情的。只不过是不同的USB主控的类型,有着不同的特点。

下面对这些不同类型的USB主控制器,进行简要的解释。


使用特权

评论回复
观海|  楼主 | 2019-7-9 09:18 | 显示全部楼层
1.1.1. OHCI和UHCI
OHCI,Open Host Controller Interface,创立者是Compaq,Microsoft和National Semiconductor。

UHCI,Universal Host Controller Interface,创立者是Intel。

两者之间的相同点是:

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

区别在于:

只是各自的实现方式有些略微不同而已。当然对应的具体的性能,也略有差别,具体的差异,和实际的应用有关系。

但是本身OHCI和UHCI的区别在于:

虽然都是实现了USB1.1协议规范,但是在功能划分上,OHCI更多地把要做的事情,用硬件来实现,因此,实现OHCI的USB控制器的软件驱动的开发工作,相对要容易些,软件要做的事情,相对较少。

对应地,OHCI更多地应用在扩展卡,尤其是嵌入式领域中,常见的很多开发板中的USB的控制器,很多都是OHCI的。

而UHCI把更多的功能,留给了软件,相对来说,软件做的事情,即负担要重些。但是实现对应的UHCI的硬件的USB控制器,价格上,就相对便宜些。

对应地,UHCI更多地应用在PC机中的主板上的USB控制器。

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

对于两者的区别和实际的应用,自己分析,不难发现,其是有着内在的逻辑关系的。

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

PC主板卖出的多了, 自然对应的Intel的CPU,也会多卖点,Intel自然可以赚更多的钱了。

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

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

1.1.1.3. OHCI和UHCI技术细节上的区别

关于OHCI和UCHI在技术细节方面,更加详细的区别主要有这些:

单帧内的stage的个数
对于控制传输来说:

OHCI:在单个帧内,可以调度多个stage;
UHCI:在单个帧内,只调度一个stage。
单帧内的transaction的个数
对于最大数据包大小小于64字节的Bulk端点来说:

OHCI:单个帧内,可能会有多个transaction。
UHCI:单个帧内,不超过一个transaction;
轮询的频率
OHCI:即使端点描述符中,已经指定了最大延迟是255ms,但是OHCI主控还是会,至少每32ms就去轮询一次中断端点
UHCI:UHCI主控可以支持,但是不是必须要支持,更低频率地轮询


使用特权

评论回复
观海|  楼主 | 2019-7-9 09:18 | 显示全部楼层
1.1.2. EHCI
EHCI,Enhanced Host Controller Interface。

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

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

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

使用特权

评论回复
观海|  楼主 | 2019-7-9 09:18 | 显示全部楼层
1.1.3. xHCI
xHCI,Extensible Host Controller Interface

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

对应的xHCI规范,可以去Intel的官网找到

使用特权

评论回复
观海|  楼主 | 2019-7-9 09:19 | 显示全部楼层
1.1.4. OHCI,UHCI,EHCI,xHCI的区别和联系

针对上述的解释,对USB的不同类型的主机控制器,简要概括如下:


下表,不同USB控制器类型OHCI,UHCI,EHCI,xHCI的区别和联系



953485d23eb91e37c6.png

使用特权

评论回复
观海|  楼主 | 2019-7-9 09:20 | 显示全部楼层
1.2. USB接口的引脚定义
USB接口的物理上的对应的引脚和对应含义等,可用下表概括:


下表为 USB 1.x/2.0的引脚定义

937805d23ebc225638.png
407365d23ebb7abb55.png

注:通常USB1.x/2.0里面的塑料是黑色或白色的。


使用特权

评论回复
观海|  楼主 | 2019-7-9 09:20 | 显示全部楼层
下表为USB 3.0的引脚定义


89325d23ebd5e43ec.png
880865d23ebdb89cd6.png


注:USB3.0是向前兼容的,所以多出来的5根线是在里面母口的里面,通常塑料硬件是蓝色的。

使用特权

评论回复
观海|  楼主 | 2019-7-9 09:20 | 显示全部楼层
1.3. USB的接口(connector)类型

由于USB的产生就是为了支持众多种应用的,而由于各种应用中,对于硬件接口的大小也有一些限制,比如有些小型设备或者移动式设备中,接口不能太大等,所以而设计出多种类型的接口,用于不同的应用。

在介绍插头和插座之前,先多解释一下,基本的叫法。

插头,plug,对应的也叫公口,即插别人的;

插座,receptacle,对应也叫做母口,即被插的;

对上述解释,想多了的,面壁去;没想多的,继续看技术介绍。

下面就来简单的介绍一下不同的USB接口类型,即各种不同的插头插座:

USB的接口类型,根据接口形状不同,主要可以分为三大类:

普通的硬件直接叫做Type
然后有小型版本的叫Mini迷你的
和更加小的,叫做Micro微小的
其中每一种大类中,又都可以分为两类

A类(Type A)
B类(Type B)
C类(Type C)

使用特权

评论回复
观海|  楼主 | 2019-7-9 09:22 | 显示全部楼层
下面就用表格的形式,详细对比USB的各种接口,包括对应的插头和插座:

下表USB接口分类


169105d23ec3cc1fe5.png

使用特权

评论回复
木木guainv| | 2019-8-6 12:53 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
renzheshengui| | 2019-8-6 12:55 | 显示全部楼层
很好的资料分享

使用特权

评论回复
观海|  楼主 | 2019-8-7 10:30 | 显示全部楼层
本帖最后由 观海 于 2019-8-7 10:32 编辑

图文并茂啊  哈哈哈 夸奖自己一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

4042

帖子

1

粉丝