usb在江湖之系列
什么是江湖 ? 江湖可指社会,也可指我们生存成长的社会环境。当然也可指来回奔波的生活状态。一般多用来形容人与人之间的竞争、表述人在社会上的无奈。人类的世界有江湖之说、那么技术的世界呢?同样有江湖,江湖是一种竞争的环境。一花一世界,一叶一如来。每一个世界都会存在这种现象,人类只不过是芸芸世界中的一个卑微的群体。人类的世界中有你方唱罢我登场的局面,各种技术之间不也一样存在着竞争沉浮么?当年叱咤风云的 dos 不也一样落幕了么?江山代有才人出,各领风骚数百年,我们不能与自然规律抗衡。技术的江湖也是如此,那么 USB 是如何在技术的世界里是实现自己的价值和理想的呢 , 是如何一步一步地成长壮大的呢?
英雄莫问出处,他何时诞生、从何而来我们没有必要再过多的去追问,只需要知道他已在技术的江湖里有了一席之地,任何人都已不能无视他的存在。为何他能够在接口的纷争中打败并口、串口等突出重围呢?
一位朋友问我什么是政治,我不知。他说:政治,正、文、水、台也。意思是人要正直,有文化,有群众基础,良好的人际关系以及后台,就是要有人给你撑腰。精辟。
USB 的成功何尝不是如此呢?
USB 协议努力的提高着自己的传输速度,通过差分信号降低信号干扰,保证数据传输的正确性,支持热插拔等; host 平等的对待着每一个 USB 设备,无论他们通过了多少级的 hub ; USB 标准的发起者是 Intel 和微软。
第一章 USB 家族之血统
一 什么是 USB
1.1 USB is only bus
认识一下它的全名: USB (Universal Serial Bus ,通用串行总线)。
Bus 永远是 bus 。出生那一刻起就注定他一生的角色就是一条数据通路。我们不能因为现在各式各样的 USB 设备,被其迷惑就认为 USB 是一种设备,他不过是寄生于某种功能设备之上的一种串行总线 ( 并没有贬低 USB 的意思,只是想客观的描述 USB 的角色 ) 。当做过一段时间的 USB 设备驱动开发后,也许你就会发现,对 USB 的这种理解对我们以后的设备驱动开发大有裨益。
当然 bus( 总线 ) 的角色是由开发者给的,如果开发者让 bus 有了更重要的角色,那它就不是简单的 bus ,不再是简单的数据通路, linux 中的 bus 就有了更复杂的角色,是一位总管全局的精神领袖,已经不是我们这里的 bus 了,这里我们更应该简单的去理解 bus ,它就是一条串行总线,一条数据的通路,一条高速路。这更有助于我们快速的了解 USB 的知识。
USB 对传输的数据在内容和结构上没有任何的要求,他没有这个权力,他是一个忠实的信使。从上层应用的层面来看 ( 设备类层 ) , USB 就是数据的透明通路 ( 别忘了,他只是个总线 ---bus) 。
邮局只负责把邮件送过去,他会看信里写的内容么?快递公司会偷偷的打开你的邮包看邮包里的东西么?
USB 很简单,也很单纯。各种各样的复杂设备那是上层的事情, USB 只是被上层利用。所以我们平时说的 USB 设备似乎有些不正确,应该说 USB 接口的设备。当然我们称呼为 USB 设备并不会产生歧义,我们也就这么叫了,存在的就是合理的。
1.2 物理拓扑结构: 7 层
顶层是 host 控制器,下面是 USB 设备。在这些设备中有一个特殊的角色 —hub 。 Hub 的存在使 USB 接备能够一层一层的级联,使得 USB 的物理拓扑结构能够形成如图所示的层次结构。其中 roothub 是一个抽象出来的虚拟 hub ,软件设计者也可以不用考虑 roothub ,因为我们一贯的思路是一个 USB 设备只可能插在 hub 上,所以不知哪位高手就抽象出了一个 roothub ,结束了群龙无首的局面。
物理拓扑结构就像一个大树一样。 Host 控制器是树根, Hub 是树干、树枝。 USB 设备 就好比是树叶子。 USB 协议规定这种层次最多为 7 层,至于为什么?我想这应该和物理层线路的电气特性有关。 Host 发出了一个请求,等了好久没回响应,你是认为他超时了,还是真的路途遥远呢?
1.3 逻辑拓扑结构
在 USB Host 控制器的眼中每个设备都是平等的,不管物理距离上是多远,我们的
心都是一样近的,每个设备都有一个独立的地址, like a child of the host 。多么宽广的胸怀,天下皆为臣民。凡成大事者都要有一颗宽广的胸怀。