Linux那些事儿 之 戏说USB(6)我是一棵树(一)

原创 2007年09月17日 00:22:00
我是一棵树,静静的站在田野里,风儿吹过,我不知它的去向,人儿走过,我不知谁会为我停留。

我多少多少年以前刚刚情窦初开的时候,在本本上留下过一篇我是一棵树,这是其中一句。当然经过了这些年的漫漫辛酸路,当时的心情早就被腐蚀掉了,现在只觉得自己居然也有过颇有才情的一段日子。USB子系统也是一颗树,比我幸运的是它不用再等待谁为它停留了,我会在这里深情款款的陪伴它的。

从拓扑上来看,USB子系统并不以总线的方式来部署,它是一颗由几个点对点的连接构成的树。

 

我指着路边一颗老的奇形怪状的树问朋友:这是什么树?朋友的回答很简短:大树。那上面图里的是什么树?答案就是用头发梢想想也应该知道了吧,当然是大树了,不过是USB的大树。答案简短,蕴含的道理可不简短,它主要包括了USB连接、USB host controllerUSB device三个部分。而USB device还包括了hub和功能设备等。下面还是逐个说说吧。

什么是USB controller?在一个USB系统中只能有一个host,其实说白了就是咱们的主机,而USB和主机的接口就是host controller,你的主机总不可能只能有一个USB host controller吧,所以说一个主机可以支持多个host controller,比如分别属于不同厂商的。那么USB host controller本身是做什么的?这个问题复旦人甲兄弟说的太精彩了,我还是直接拿来吧。controller,控制器,顾名思义,用于控制,控制什么,控制所有的usb设备的通信。通常计算机的cpu并不是直接和usb设备打交道,而是和控制器打交道,他要对设备做什么,他会告诉控制器,而不是直接把指令发给设备,然后控制器再去负责处理这件事情,他会去指挥设备执行命令,而cpu就不用管剩下的事情,他还是该干嘛干嘛去,控制器替他去完成剩下的事情,事情办完了再通知cpu。否则让cpu去盯着每一个设备做每一件事情,那是不现实的,那就好比让一个学院的院长去盯着我们每一个本科生上课,去管理我们的出勤,只能说,不现实。所以我们就被分成了几个系,通常院长有什么指示直接跟各系领导说就可以了,如果他要和三个系主任说事情,他即使不把三个人都召集起来开个会,也可以给三个人各打一个电话,打完电话他就忙他自己的事情去了,比如去和他带的女硕士风花雪月。而三个系主任就会去安排下面的人去执行具体的任务,完了之后他们就会像院长汇报。

那么hub是什么?还是拿复旦人甲现成的答案吧,不能怪我不努力,只是复旦人甲说的太精彩了。在大学里,有的宿舍里网口有限,但是我们这一代人上大学基本上是每人一台电脑,所以网口不够,于是有人会使用hub,让多个人共用一个网口,这是以太网上的hub,而usb的世界里同样有hub,其实原理是一样的,任何支持usb的电脑不会说只允许你只能一个时刻使用一个usb设备,比如你插入了u盘,你同样还可以插入usb键盘,还可以再插一个usb鼠标,因为你会发现你的电脑里并不只是一个usb接口。这些口实际上就是所谓的hub口。而现实中经常是让一个usb控制器和一个hub绑定在一起,专业一点说叫集成,而这个hub也被称作root hub,换言之,和usb控制器绑定在一起的hub就是系统中最根本的hub,其它的hub可以连接到她这里,然后可以延伸出去,外接别的设备,当然也可以不用别的hub,让usb设备直接接到root hub上。

USB连接指的就是连接devicehost(或hub)的四线电缆。电缆中包括的VBUS(电源线)、GND(地线)还有两根信号线。USB系统就是通过VBUSGND向设备提供电源的。主机对连接的USB设备提供电源供其使用,而每个USB设备也能够有自己的电源。

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

《Linux那些事儿之我是USB》前言

1992年,那是一个春天。不过其实1991年又何尝不是一个春天呢,因为正是在那一年,Linux诞生了。又因为开放源代码的缘故,十几年来Linux是越来越火,熊熊火焰也烧到了华夏大地。诸多高校开始开设L...
  • fudan_abc
  • fudan_abc
  • 2010年07月29日 12:34
  • 17614

《Linux那些事儿之我是USB》我是U盘(18)冬天来了,春天还会远吗?(四)

结束了get_device_info,我们继续沿着storage_probe一步一步地走下去。继续,这就是我们前面提到过的三个函数,get_transport、get_protocol和get_pip...
  • fudan_abc
  • fudan_abc
  • 2011年10月10日 21:49
  • 5759

《Linux那些事儿之我是USB》我是U盘(14)冰冻三尺非一日之寒

罗马不是一天建成的。在让U盘工作之前,其实我们的驱动做了很多准备工作。 我们继续跟着感觉走,storage_probe(),972行至975行,一系列的以init_*命名的函数在此刻被调用,这里涉及...
  • fudan_abc
  • fudan_abc
  • 2011年09月21日 22:58
  • 6878

Linux那些事儿之我是U盘 提供pdf下载

http://www.newsmth.net/att.php?p.299.44271.374.pdf还会继续修改,主要是加入一些图片.比如传输协议的,数据格式的,函数调用关系的图片.预计会在9月初提供...
  • fudan_abc
  • fudan_abc
  • 2007年08月07日 17:21
  • 12206

我是。。。。。

我是逗比张,哈哈哈哈哈哈嚯嚯嚯嚯嚯
  • Aaron_Zhang939
  • Aaron_Zhang939
  • 2018年01月31日 22:06
  • 6

【转】 Linux那些事儿之我是U盘(26)第一次亲密接触(二)

对于设备驱动程序而言,控制传输要做的事情很简单,向usb core提交一个urb,这个urb中间包含了一个命令,或者说控制请求,因为命令更适合于我们后来要讲的某个重要的概念.这里我们要发送的就是GET...
  • aaronychen
  • aaronychen
  • 2008年01月26日 09:55
  • 613

【转】Linux那些事儿之我是U盘(28)第一次亲密接触(四)

金城武说:不知道从什么时候开始,在什么东西上面都有个日期,秋刀鱼会过期,肉罐头会过期,连保鲜纸都会过期,我开始怀疑,在这个世界上,还有什么东西是不会过期的?有时候我也被这个问题所困扰,我不知道是我不明...
  • aaronychen
  • aaronychen
  • 2008年01月26日 09:57
  • 646

Linux那些事儿之我是Hub(10)While You Were Sleeping(三)

get_hub_descriptor()结束了,然后就返回hub_configure()中来.635到642行,判断刚才的返回值,小于零当然是出错了,大于零也还要多判断一次, USB_MAXCHILD...
  • fudan_abc
  • fudan_abc
  • 2007年08月23日 22:31
  • 5936

Linux那些事儿 之 我是PCI(0)引子

老夫子们痛心疾首的总结说,现代青年的写照是——自负太高,反对太多,商议太久,行动太迟,后悔太早。上天戏弄,俺不幸的混进了80后的革命队伍里,成了一名现代青年,前有老夫子的忧心忡忡,后有90后的轻蔑嘲弄...
  • fudan_abc
  • fudan_abc
  • 2007年11月09日 15:01
  • 9239

J2ME游戏中的图标问题~

有时有人会反应JAVA游戏中图标怎么会变的这么小比如如下的:其实是做的时候选择图标的时候要选好尺寸~,一般为32X29就可以尺寸不合自然会变小,如下就是正常的...
  • felio
  • felio
  • 2005年04月07日 09:50
  • 848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux那些事儿 之 戏说USB(6)我是一棵树(一)
举报原因:
原因补充:

(最多只允许输入30个字)