首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
嵌入式技术
» Linux那些事儿 之 戏说USB(8)最终奥义
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Linux那些事儿 之 戏说USB(8)最终奥义
发短消息
加为好友
bingchentiao
当前离线
UID
852665
帖子
6999
精华
0
积分
3500
阅读权限
90
在线时间
215 小时
注册时间
2011-8-30
最后登录
2014-1-19
论坛元老
UID
852665
1
#
打印
字体大小:
t
T
bingchentiao
发表于 2013-5-20 22:13
|
只看该作者
Linux那些事儿 之 戏说USB(8)最终奥义
那些事儿
,
Linux
奥义是什么?看过圣斗士不?人是人他妈生的,妖是妖他妈生的,大家都是讨口饭吃,不用这么耍我吧。
那么打败圣斗士的最终奥义是什么?因为对圣斗士用过的招式第二次就不管用了,所以,你必须练9999999……种拳法,让星矢们搞不清哪个才是你的绝招。如果全部用完了,他们还没有死的话,千万不要慌张,请重复一次。因为那条定律已经被破解了。谁还记得你打过什么招式啊??
这么强的话不是我说的,我也不是教大家怎么打败圣斗士,我是他们忠实的fans,爱护还来不及。
前面说了USB是一棵树,不过树也是有生命的,也是有内心世界的,我们不能只看到它枝枝丫丫的表面,需要从更深层次的去关怀它。我们每个人不也都希望能够有那么一个人真正的理解自己的内心么?
那么USB的内心世界是什么,我们都需要理解些什么,这就是上面所说的最终的奥义么?其实,是称不上最终的,只是会换个角度冷静的剖析一番而已,因为我们每个人都不可能完全的了解另外一个人的内心世界,虽然有时你可能以为自己已经做到了,但实际上,最终还是会发现,这还差的很远,现实都是残酷的,不是么。
一个完整的
USB
系统应该实现上面图里的各个部分,
USB
协议如是说。自从人类社会出现了阶级,我们的生活就再也离不开各种各样的层次了。孔子说,读史使人显得更明智,分层使人看的更明晰。
ZF
、任小强们、中介们、我们,多完美的层次,如果没有了层次,谁又能透彻的明白之间都是什么关系啊。所以,我们应该感谢有了阶级,感谢有了层次,能够让去更好的理解这些技术,更好的混口饭吃,拿更多的
money
去买房子,让更多的任小强们先富起来……。
图里主要显示了四个层次,
USB
物理设备(
USB Physical Device
)、客户软件(
Client SW
)、
USB
系统软件(
USB System SW
)以及
USB Host Controller
。
Host Controller
已经说过了,系统软件就是操作系统里用来支持
USB
的部分,像咱们的
usb core
,还有各种设备驱动等等,客户软件么,就是上层应用了,只有设备和驱动程序,我们仍然什么都做不了,现实生活中一个很浅显的道理就是只靠摄像头和驱动是不可能和
mm
视频的,不是么,这是个应用为王的时代。
真的是这样么?多少年以前,作为一个普通人,我会坚定的说是。只是现在,作为一个读了协议的普通人,我要说并不完全是这样。上面的系统软件,只表示了系统里支持
USB
的部分,也就是系统相关设备无关的部分,相对于咱们的
linux
来说,就是
usb core
,并不包括所谓的各种设备驱动。而客户软件则指设备相关,也就是对应于特定设备的部分,你的
USB
键盘驱动、触摸屏驱动什么的都在这儿。这里的名字太迷惑人了,一直觉得写驱动是系统级的编程,原来搞协议的这些同志觉得不是这么回事,我羞愧的低下了无知的脑袋。
为什么会对这几个概念这么较真儿那,不是因为它们有多可爱,只是它们在协议里无处不在。主机这边就分这三层,
Host Controller
看似在最低层,却掌控着整个
USB
的通信,你的
USB
设备要想发挥作用,首先得获得它的批准,此路是它开,要想从此过,留下买路财。我们也在最底层,不同的是被掌握,不同的角色决定了不同的命运。
USB
物理设备这边看着好像也分了三层,其实我们可以把它们看成一样的东东,只是为了对应了主机这边的不同层次,
Host Controller
看到的是一个个
hub
还有
hub
上的
USB device
,而在系统软件的眼里没那么多道道儿,
hub
还有各种设备什么的都是一个个的逻辑设备,客户软件看到的是设备提供的功能。接下来还会有说到。站在不同的高度看到不同的风景,不然为什么买房子时高一层要加多少钱那。
已经被计算机网络中的七层协议洗过脑的我们应该很容易的就看出,真实的数据流只发生在
Host Controller
和设备的
Bus Interface
之间,其它的都是逻辑上的,也就说是虚的,如果谁对我们说什么什么是逻辑上存在的,那它肯定就是虚的,比如说任小强逻辑上给你了一套北京的房子,你相信么,给是给,得掏钱,而且还得掏的多。
各种
USB
设备提供的功能是不同的,但是面向主机的
Bus Interface
却是一致的,主机也不是神仙,掐指一算就可以知道哪个是哪个,所以,那些设备本身还必须要提供用来确认自己身份的信息,这些信息里有些是共有的,有些是个别设备特有的,我们都是光荣的中国公民,但是有的人是盖房子,有的人买房子。
各种设备和主机是怎么连接在一起的那?前面的那颗树已经描绘的比较形象了,不过那棵树里的
compound device
被有意的飘过了。那么,刀是什么样的刀,剑是什么样的剑,
compound
设备又是什么样的设备?其实,在
USB
的世界里,不仅仅有
compound device
,还有
composite device
,简单的中文名字已经无法形象的表达它们的区别,就还是使用它们的英文原名了。
compound device
是那些将
hub
和连在
hub
上的设备封装在一起所组成的设备,而
composite device
是包含彼此独立的多个接口的设备。从主机的角度看,一个
compound device
和单独的一个
hub
然后连接了多个
USB
设备是一样的,它里面包含的
hub
和各个设备都会有自己独立的地址,而一个
composite device
里不管具有多少接口,它都只有一个地址。
上面都是站在
host controller
的层次上,说的是实实在在的物理拓扑,对于系统软件来说,没有这么复杂,所有的
hub
和设备都是一个个的逻辑设备。站的越高,看的越远,快乐如此简单,可以做售楼广告了。
一个
USB
逻辑设备就是一系列端点(
endpoint
)的集合,它与主机之间的通信发生在主机上的一个缓冲区和设备上的一个端点之间,通过管道来传输数据。意思就是管道的一端是主机上的一个缓冲区,一端是设备上的端点。
图里的
Interface
是怎么回事?这里先简单说说吧,反正代码里会不停的遇到再遇到。
USB
端点被捆绑为接口(
Interface
),一个接口代表一个基本功能。有的设备具有多个接口,像
USB
扬声器就包括一个键盘接口和一个音频流接口。在内核里一个接口要对应一个驱动程序,
USB
扬声器在
linux
里就需要两个不同的驱动程序。到目前为止,可以这么说,一个设备可以包括多个接口,一个接口可以没有或具有一个以上的端点,当然以后我们会发现并不仅仅止于此。不过先说这么多吧,省得说得慷慨激昂,看的昏昏欲睡。
现在已经说了
USB
的历史发展体系结构等比较基本的东东,也就是协议的前几章,更多的东东还是下面和代码一块说吧。为了纪念这个历史性的时刻,学学电影里的酷哥警察说句:好戏开始了。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议