Linux那些事儿之戏说USB
多少年以前碰过USB摄像头驱动,现在又刚写了USB触摸屏的驱动,可以说对USB协议在linux内核的实现有个通透的了解,在这里与大家分享。
fudan_abc
这个作者很懒,什么都没留下…
展开
-
Linux那些事儿 之 戏说USB 提供PDF下载
http://download.csdn.net/source/277869因为写的就是usb core里的东东,所以名字就改为《我是USB Core》了,内容也做了部分的调整。原创 2007-11-05 17:54:00 · 22304 阅读 · 24 评论 -
Linux那些事儿 之 戏说USB(大结局)还是那个match
从上次在几米的向左走向右走遇到usb总线的那个match函数usb_device_match()开始到现在,遇到了设备,遇到了设备驱动,遇到了接口,也遇到了接口驱动,期间还多次遇到usb_device_match(),又多次与它擦肩而过,“我们以前都失散过,十三年以后,还不是再遇见?”其实每个人都有一条共同之路,与正义和良知初恋,失身于上学,嫁给了钱,被世俗包养。每个设备也都有一条共同之路,与原创 2007-11-02 12:08:00 · 6072 阅读 · 8 评论 -
Linux那些事儿 之 戏说USB(38)接口的驱动
从上节的上节我们已经知道,usb_generic_driver在自己的生命线里,以一己之力将设备的各个接口送给了linux的设备模型,让usb总线的match函数,也就是usb_device_match,在自己的那条驱动链表里为它们寻找一个合适的接口驱动程序。现在让咱们轻声的问一句,这些接口驱动都从哪里来?()这就要说到每个玩儿linux的人都会知道的那几个著名的命令insmod,modpro原创 2007-11-01 00:10:00 · 6695 阅读 · 3 评论 -
Linux那些事儿 之 戏说USB(37)字符串描述符
关于字符串描述符,前面的前面已经简单描述过了,但是因为现在长夜漫漫,孤枕难眠,所以多说点。字符串描述符的地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的,类似于网球里马德里大师赛与四大满贯之间的地位差异,四大满贯是个碗儿都争着抢着爬着也要去,而号称第五大满贯的马德里大师赛却动不动就会被大碗儿们因各种理由给涮了。这并不是就说字符串描述符不重要,原创 2007-10-31 10:44:00 · 5257 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(36)驱动的生命线(四)
设备自从有了Address,拿到了各种描述符,就在那儿看usb_generic_driver忙活了,不过还算没白忙,设备总算是幸福的进入Configured了。从设备这儿咱们应该学到点幸福生活的秘诀,就是找到你所喜欢的事,然后找到愿意为你来做这件事的人。Address有点像你合几代人之力辛辛苦苦才弄到的一套新房子,如果不装修,它对你来说的意义也就是你的户口可以从人才中心挪过去了,可以对人说你的原创 2007-10-29 14:50:00 · 3698 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(35)驱动的生命线(三)
准备工作该做的都做了,别嫌太麻烦,什么事情都要经过这么一个阶段,大家都明白。现在看看第二阶段的重头戏,看看设备是怎么从Address进入Configured的。1501行,这行主要就是对那些刚出去偷过情的人说的,如果已经在Configured状态了,就得做些清理工作,别被老婆发现了,要装作若无其事的退回到Address状态。都清理些什么怎么去清理?别着急,要想学会,得仔细研究下message.c里原创 2007-10-26 17:20:00 · 3294 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(34)驱动的生命线(二)
关系是跑出来的,感情是喝出来的,朋友是处出来的,事业是干出来的,但设备是配置出来的,绝非吹出来的。core配置设备使用的是message.c里的usb_set_configuration函数1388 /*1389 * usb_set_configuration - Makes a particular device setting be current1390 * @dev: the原创 2007-10-26 12:19:00 · 5295 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(33)驱动的生命线(一)
给女生:“如果有一个男生追你,那你不过是达到了咱学校mm的平均水平;如果有五个男生追你,那你勉强可算是班花系花级别;如果有十个男生追你,~~~哼哼,这事儿也就是在咱交大有~~”usb_generic_driver不仅仅有十个男生追,是个usb设备都会拜倒在她的石榴裙下,争先恐后的找她配对儿,什么班花系花校花什么的根本就是在诋毁她的身份。但是她要想成为一个usb世界花,必须得满足一个前提,就是她原创 2007-10-25 16:31:00 · 6044 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(31)设备的生命线(十)
经过了许多事你是不是觉得累这样的心情我曾有过几回现在的你我想一定很疲惫内核代码就象酒有的苦有的烈这样的滋味你我早晚要体会把那内核当作一场宿醉明日的代码莫再要装着昨天的伤悲请与我举起杯跟内核干杯跟着设备的生命线走到现在,我算是明白了,什么东西的发展都是越往后越高级越复杂,就好像人一样,从Attached走到Powered只是弹指一挥原创 2007-10-22 17:33:00 · 5674 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(30)设备的生命线(九)
聊完了struct usb_hcd和struct usb_bus,算是已经向HCD片儿区的老大们拜过山头了,接下来就该看看usb_submit_urb()最后的那个遗留问题usb_hcd_submit_urb()了,要有心理准备,也是个一百多行的狠角色。现在内核里有个很不好的现象,设计结构比复杂,写函数比长。像一个中介语重心长的说:我承认的确房屋中介有不好的现象,收看房费,收差价,很是让人生气,作原创 2007-10-22 14:58:00 · 4018 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(29)设备的生命线(八)
这个世界上不需要努力就能得到的东西只有一样,那就是年龄。所以要不怕苦不怕累,回到struct usb_hcd,继续努力的往下看。64行,又见kref,usb主机控制器的引用计数。struct usb_hcd也有自己专用的引用计数函数,看hcd.c文件1526 static void hcd_release (struct kref *kref)1527 {1528原创 2007-10-18 18:01:00 · 4268 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(28)设备的生命线(七)
今年过节不收礼啊,不收礼,收礼只收结构体。从尖沙咀儿辛辛苦苦赶到铜锣湾,算是进入了HCD的片儿区,这里的老大不是帮派头目也不是巡逻片儿警,而是几个结构。C里边是以结构为王的,随便到一个新地方,新环境,新山头儿,首先要去结识的就是几个占山为王,雄据一方的结构。在HCD这个片儿区,这个山头儿,王中之王就是drivers/usb/core/hcd.h里定义的struct usb_hcd。原创 2007-10-18 17:54:00 · 5870 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(27)设备的生命线(六)
等俺变拽了,手表买两块,左一块右一块,汽车买两辆,开一辆拖一辆等俺变拽了,宝马买两辆,一辆开道一辆护架,俺在中间骑自行车等俺变拽了,上市公司开两家,一家挤垮另一家等俺变拽了,航空母舰造两艘,一艘打沉另一艘;原子弹造两颗,一颗引爆另一颗等俺变拽了,通信公司开两家,一家叫不在服务区,一家叫暂时无法接通,我让你不在服务区你就不在服务区,我让你暂时无法接通你就暂时无法接通等原创 2007-10-15 09:01:00 · 4984 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(26)设备的生命线(五)
人的一生就象在拉屎,有时你已经很努力了可出来的只是一个屁。看这内核代码也一个样,已经很努力了,俺的葱葱玉指都磨出茧子了,才勉勉强强把struct urb这个中心给说完,下面接着看那三个基本点。看之前,再猜个谜语,蜘蛛侠是什么颜色的?第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/core/urb.c里定义。4原创 2007-10-12 16:11:00 · 13210 阅读 · 2 评论 -
Linux那些事儿 之 戏说USB(25)设备的生命线(四)
洗澡是屁股享福,脑袋吃苦;看电影是脑袋享福,屁股吃苦;看内核代码是脑袋、屁股都吃苦。下边儿这些,就是每个写usb驱动的都需要关心的了,坐这儿看了老半天,struct urb才露出来这么一个角儿。继续看之前,猜个谜语,放松一下,还记得蜡笔小新里的小白不?那么两只小白是什么?1136行,urb_list,还记得每个端点都会有的那个urb队列么?那个队列就是由这里的urb_list一个一个的链接原创 2007-10-11 12:19:00 · 6007 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(24)设备的生命线(三)
函数usb_control_msg调用了usb_internal_control_msg之后就去一边儿睡大觉了,脏活儿累活儿,全部留给usb_internal_control_msg去做了,这才叫骨干啊,俺一华为的哥们儿如是说。那么咱们接下来就给这个骨干多点儿关注,了解一下它背后的真实生活,现在是焦点访谈时间,要用事实说话。70 // returns status (negative) or原创 2007-10-08 16:51:00 · 6556 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(23)设备的生命线(二)
现在设备的struct usb_device结构体已经准备好了,只是还不怎么饱满,hub接下来就会给它做做整容手术,往里边儿塞点什么,充实一些内容,比如:将设备的状态设置为Powered,也就是加电状态;因为此时还不知道设备支持的速度,于是将设备的speed成员暂时先设置为USB_SPEED_UNKNOWN;设备的级别level当然会被设置为hub的level加上1了;还有为设备能够从hub那里获原创 2007-10-08 11:19:00 · 4899 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(22)设备的生命线(一)
李安告诉我们,每个人的心中都有一座断背山,每个人的手里都有一条生命线。Google一下,找到这么一句:通常生命线都起自姆指和食指的中央,如果比这个位置还要上方的人,主进取心和克已心都很强,只要奋斗努力,事业终有可成。再仔细看看自己的手,果然位于姆指与食指的中间靠上08微米,也算是搭了个08年奥运的好兆头,继海南那个万里长跑迎奥运的小女孩儿之后,俺也终于有了奥运题材,有了乐观的理由。什么叫乐观派原创 2007-10-08 11:04:00 · 5527 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(21)向左走,向右走
他们彼此深信,是瞬间迸发的热情,让他们相遇; 这样的确定是美丽的,但变幻无常更为美丽; 他们素未谋面,所以他们确定,彼此并无任何瓜葛, 但是自街道、楼梯、大堂传来的话语, 他们也许擦肩而过一百万次了吧? 我想问他们是否记得, 在旋转门面对面那一刹, 或是在人群中喃喃道出的“对不起”, 或是在电话的另一端道出的“打错了”, 但是,我早知道答案—— 是的,他们并原创 2007-10-08 10:58:00 · 4759 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(20)配置
越来越觉得USB的世界是一个理想化的世界,在那里,一个设备可以有多种配置,做不同的事,过不一样的生活,而我们的配置永远只有一个,从生到死,没得选择。所谓的爱情的选择,职业的选择,在你选择过后再看,似乎冥冥中都有一种神秘的力量在支配着,而我们在其中只不过是上紧的发条,每个人自出生始就被配置了不同的路,你的彷徨,你的叛逆,你的伤心,你的快乐,都只不过是许多看似的偶然所组成的必然。我不是宿命论者,我原创 2007-09-30 12:01:00 · 5786 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(19)设备
第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里,盯着舞池里扭动的符号,眼神迷离。交大里苟了几年,毕业了又是住在学校附近的徐虹北路上,沿着虹桥路走过去,到徐家汇不过10多分钟,再溜达几步就可以到衡山路。学校里睡的就比较晚,毕业了仍然一样,其它好习惯还是坏习惯扔掉了不少,就这个保持的还不错,于是经常穷极无聊的晚上,只好和同学沿着虹桥路也好,沿着番愚路再走到广元路或原创 2007-09-30 11:37:00 · 6186 阅读 · 3 评论 -
Linux那些事儿 之 戏说USB(18)端点
于丹说,生与死,是人生起始的两个端点。于丹?不会不知道这个人吧,我哭。百家讲坛继易中天之后放的第二颗大卫星,最开始讲论语一下子就红了的那个,接着又讲了庄子。咱可以不喜欢但不可以落后,是不。她在《庄子心得》的谈笑论生死里说了个寓言,我这儿给转一下。兄弟两个人,他们家住在一座摩天大楼的第80层。这天,两个人深夜回家,恰好忘记了看通知,电梯停了。 兄弟俩背着沉重的大背包,在楼底下商量一下,原创 2007-09-30 11:28:00 · 5387 阅读 · 0 评论 -
Linux那些事儿 之 戏说USB(17)接口是设备的接口(二)
最近看了一些韩国的反转剧,什么是反转剧?就是影片儿演到一半时如果让你猜最后的结局,十有八九都会出乎你的预料。虽然每片只有短短20多分钟,但论故事情节,比咱们的帘子幽梦之类的梦了几十集还不知道做啥的精彩的多。咱们在生活中是不会有这般戏剧性的反转和悬念的,有的只是吃饭的人生,上班的人生,睡觉的人生。思源湖边做了多少次的白日梦毕业时就被扔到了湖水里,然后我们从平淡走向平庸。不过这里还是有点小悬念原创 2007-09-27 15:41:00 · 5408 阅读 · 3 评论 -
Linux那些事儿 之 戏说USB(16)接口是设备的接口(一)
宋正说天盛是球迷的天盛 张玉说张玉是导演的张玉 任小强说房子是人民的房子前面的前面已经说了,接口是设备的接口。设备可以有多个接口,每个接口代表一个功能,每个接口对应着一个驱动。Linux设备模型的device落实在USB子系统,成了两个结构,一个是struct usb_device,一个是struct usb_interface,一个石头砸了两个坑,一支原创 2007-09-26 22:34:00 · 8217 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(15)繁华落尽
台湾作家林清玄在接受记者采访时,如此评价自己的30多年写作生涯:“第一个十年我才华横溢,‘贼光闪现’,令周边黯然失色;第二个十年,我终于‘宝光现形’,不再去抢风头,反而与身边的美丽相得益彰;进入第三个十年,繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正体味到了境界之美。”很久很久以前,在自己还比较喜欢散文的时候,林清玄是我仅次于余秋雨的第二偶像。长夜有穷,真水无香。看过了Linux设备模型固原创 2007-09-24 23:45:00 · 5386 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(14)模型,又见模型
百晓生说,世界上有两样东西最让人捉摸不透,一个是小李飞刀,一个就是linux的设备模型。进入21世纪,小李飞刀已经在电视上又见过无数遍,早就没了那种神秘感,可linux的设备模型仍然偏居一偶,让人端端的生起许多好奇来。上文说usb_init给我们留下了一些岔路口,每条都像是不归路,让人不知道从何处开始,也看不到路的尽头。趁着徘徊彷徨的档儿,咱们还是先聊一下linux的设备模型。各位看官听好原创 2007-09-23 23:18:00 · 6309 阅读 · 3 评论 -
Linux那些事儿 之 戏说USB(13)面纱
在爱情、背叛与死亡的漩涡中挣扎的凯蒂,亲历了幻想破灭与生死离别之后,终将生活的面纱从她的眼前渐渐揭去,从此踏上了不悔的精神成长之路。向大家推荐这部片子《面纱》,没有那些小电影精彩,但是绝对值得一看。为什么会想到它,只在乎于现在的心情。前面说了那么多,才接触到usb_init,有点一窥usb面纱下神秘容颜的味道。当然,我们并不需要去经历爱情、被判与死亡,所需要经历的只是忍受前面大段大段的唠叨。原创 2007-09-21 12:24:00 · 5282 阅读 · 1 评论 -
Linux那些事儿 之 戏说USB(12)从这里开始
任小强们说房价高涨从现在开始,股评家们说牛市从5000点开始。他们的开始需要我们的钱袋,我的开始只需要一台电脑,最好再有一杯茶,伴着几支小曲儿,不盯着钱总是会比较惬意的。生容易,活容易,生活不容易,因为要盯着钱。USB core从USB子系统的初始化开始,我们也需要从那里开始,它们在文件drivers/usb/core/usb.c938 subsys_initcall(usb_init);原创 2007-09-21 00:48:00 · 7853 阅读 · 3 评论 -
Linux那些事儿 之 戏说USB(11)不一样的core
“生活中肯定还有比睡觉更好玩的事情!”大小卡梅拉们一直都抱有这样的信念。他们执著地追求那些种群中认为不可想象的事情。去看大海、去摘星星、去追回逃逸的太阳……,一路上处处坎坷、历经艰难,但总是逢凶化吉、化险为夷。最后还能收获超乎想象的回报和异乎寻常的果实。卡梅拉已经被当作一种象征,一种成长路上必不可少的“伴侣”。读不一样的卡梅拉,成就与众不同的你!读不一样的core,成就特立独行的你!是不是像广原创 2007-09-20 09:38:00 · 7101 阅读 · 6 评论 -
Linux那些事儿 之 戏说USB(10)好戏开始了
上海的房价又在疯涨了,央行又加息了,邻居老大妈前几天丢的小狗居然自己跑回来了。多姿多彩的九月。每一天的太阳都会不同,每一天的股市也一样。昨天绿油油的,今天红彤彤的,终于可歌可泣的迎来了人生中的第一次涨停。心情舒畅的一天。有了这么好的大环境做铺垫,咱们的好戏也该开始了。这以后的岁月里,主要就是结合代码去聊了,当然,新气象要用新代码,就使用最新的2.6.22版本的内核了。新的总会比旧的好,原创 2007-09-19 16:05:00 · 7345 阅读 · 9 评论 -
Linux那些事儿 之 戏说USB(9)我是谁
我是谁?尼采一遍一遍的问着自己当了哲学家。我是谁?很多人一遍一遍的问着自己做了精神病人。我是谁?USB也一遍一遍问着自己,当然它不会真的是一颗树,它也不会是太阳,Linux里没有太阳,真要有的话也只能是Linus。USB只是Linux庞大家族里的一个小部落,host controller是它们的族长,族里的每个USB设备都需要被系统识别,被我们识别。虽然清朝老爷子们不知道闭关锁国没前途,可原创 2007-09-18 15:36:00 · 7066 阅读 · 6 评论 -
Linux那些事儿 之 戏说USB(8)最终奥义
奥义是什么?看过圣斗士不?人是人他妈生的,妖是妖他妈生的,大家都是讨口饭吃,不用这么耍我吧。那么打败圣斗士的最终奥义是什么?因为对圣斗士用过的招式第二次就不管用了,所以,你必须练9999999……种拳法,让星矢们搞不清哪个才是你的绝招。如果全部用完了,他们还没有死的话,千万不要慌张,请重复一次。因为那条定律已经被破解了。谁还记得你打过什么招式啊??这么强的话不是我说的,我也不是教大家怎么打原创 2007-09-17 17:08:00 · 9206 阅读 · 7 评论 -
Linux那些事儿 之 戏说USB(7)我是一棵树(二)
公元312年一天夜里,罗马附近的米尔维亚桥,忧思满腹的君士坦丁正在对第二天即将到来的大战感到发愁,当他眺望星空之际,突然看到苍茫的天空中突然出现了四个硕大无朋的火红色的十字架,伴随着这样的字样:依靠此,你将大获全胜。前几天看碟看到欧洲历史部分的君士坦丁,就google到了这么一段。当然这太玄乎了,介于宗教信仰自由,我还是持保留意见吧。不过真有这样的好事,我希望是这样情景:在公元2007年9月的原创 2007-09-17 00:24:00 · 7766 阅读 · 7 评论 -
Linux那些事儿 之 戏说USB(6)我是一棵树(一)
我是一棵树,静静的站在田野里,风儿吹过,我不知它的去向,人儿走过,我不知谁会为我停留。我多少多少年以前刚刚情窦初开的时候,在本本上留下过一篇我是一棵树,这是其中一句。当然经过了这些年的漫漫辛酸路,当时的心情早就被腐蚀掉了,现在只觉得自己居然也有过颇有才情的一段日子。USB子系统也是一颗树,比我幸运的是它不用再等待谁为它停留了,我会在这里深情款款的陪伴它的。从拓扑上来看,USB子系统并不以总原创 2007-09-17 00:22:00 · 8053 阅读 · 5 评论 -
Linux那些事儿 之 戏说USB(5)我型我秀
在2006这个选秀年里,超级女生也并不是一枝独秀,有个成语怎么说来着?好像是雨后春笋吧,现在的选秀节目就像这个笋,很多很多,不过有非常蔫的,有被雨水泡烂的,有刚发芽很嫩很嫩的,也有很成熟快枯萎的。我型我秀算是发育的比较好的一个了,虽然我愣是都没看过,超级女生我也是在叶一茜被淘汰后就再也不看了,不过俺从10进几来着才开始看。当然俺可绝对不是什么QQ糖,俺只是一个正常的man而已。如果你问什么是选秀节原创 2007-09-17 00:14:00 · 7235 阅读 · 5 评论 -
Linux那些事儿 之 戏说USB(4)漫漫辛酸路
USB的一生充满了PK,并在PK中发展,1.0、1.1、2.0,漫漫辛酸路,一把辛酸泪。我们又何尝不是,上学碰到实行自费,毕业碰到IT崩溃,工作碰到房价见鬼,现在又碰到股市泡沫,与房价PK,与庄家PK,从来的结局都只有失败一个,USB在PK中发展,我们在PK中只有变老。这张表是从USB2.0 spec里直接拿过来的,可以看出,它的高速模式最高已经达到了480Mbps,即60MBps,这原创 2007-09-16 23:53:00 · 8660 阅读 · 7 评论 -
Linux那些事儿 之 戏说USB(3)PK
2006最火的是超级女生,最流行的是PK。“她的一生充满了PK”——从湖南卫视在《大长今》预告片中铿锵地说出了这句旁白时起,PK已经不仅仅是PK。USB的一生也充满了PK,不过USB还不够老,说一生太早了些,发哥说的好,“我才刚上路呢”。USB最初的设计目标就是替代串行、并行等各种低速总线,以达到以一种单一类型的总线连接各种不同的设备。它现在几乎可以支持所有连接到PC上的设备,99年提出的原创 2007-09-16 23:50:00 · 8219 阅读 · 9 评论 -
Linux那些事儿 之 戏说USB(2)它从哪里来
你从哪里来,我的朋友,好像一只蝴蝶,飞进我的窗口。在毛阿姨的嘹亮歌声中,USB好像一只蝴蝶飞进了千家万户。它从哪里来,它从intel来。Intel不养蝴蝶,做CPU,它只是在蝴蝶的翅膀上烙上intel inside,蝴蝶让咱们的同胞去养了,然后带着intel飞进了千万家。没办法,别人的核心竞争力是技术,咱们的核心竞争力是房子,老外的技术占领了咱们的房子。别人留下的是各种各样乱花渐欲迷人眼的标准原创 2007-09-16 23:47:00 · 11155 阅读 · 7 评论 -
Linux那些事儿 之 戏说USB(1)说在前面
说在前面,在这里耗费二八青春码这些,并不是因为喜欢它,相反,对它是毫无感觉可言,虽然每天都必须和它相依为伴,不离不弃,不过那可是丝毫没有办法的事情,非我所愿。听着是不是说到心坎里去了,感情都是很无奈是吧。再说谁让现在几乎所有电脑相关好玩有用的东东都往它身上靠,好像沾上它就跟上了时尚。时尚是什么,时尚就是标准,没看很久很久以前,咱们的郭天王留着个小分头的时候,大街上看到的听到的都是标准的小分头么,喔原创 2007-09-16 23:30:00 · 10451 阅读 · 11 评论