首页>>论坛 >>技术社区 >>x86 >>驱动及BIOS
|
我要发帖  | 我要投票  | 我要回复  | 收藏

嵌入式linux下usb驱动开发方法--看完少走弯路

版主: whynot  genius7  max_lpy  lintel  max_lpy001 
嵌入式linux下usb驱动开发方法--看完少走弯路
 

嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至少需要个把月的时间,不信?那是你没做过。

本人做过2年的嵌入式驱动开发,usb占了一大半的时间。期间走了不少弯路,下面将我的血的经验教训总结下,为要从事和正在从事的战友们做一点点贡献吧:)

首先,扫盲;

要做的是阅读usb Spec(英文的哦,其实很多文章、书籍和资料真有水平的还是原创的好,就像食品往往经过加工就变了味,之前如果没有接触过的话可以先看看中文的,大概先有个印象),这个工作其实是很复杂很枯燥的一部分。看Spec的同时可以到网上大概浏览下usb开发的相关知识,这个阶段就是扫盲,不求精进。至少你得知道usb的四种传输类型吧,你得知道usb从上电开始的几个状态吧,你得知道usb设备都有哪些吧,等等。

第二步,窥全貌;

usb设备是如何工作起来的?其实usb子系统是分层次工作的,他们配合默契,做好自己的份内之事,一切以大局为重。usb驱动可以分为usb设备驱动,usb控制器驱动,hub驱动,总线驱动等等。我建议你还是顺着设备驱动的这根主线往下走吧。

在真正开始分析usb驱动代码这之前,你需要了解linux模块机制,linux驱动的platform总线构架,之类。一个模块被加载后,从driver的角度来说,真正将设备驱动起来是从probe开始的。这个你该知道。你得知道为什么usb可以即插即用,做软件的朋友该知道线程这个东西吧,和她有关系的。usb系统里面一个最重要的角色该出场了,urb。一切的一切都要围绕她进行。pipe为她铺路,数据由她承载。usb设备驱动的工作就是准备好这个urb后她的使命就基本完成了,那她把urb给了谁?这就是之前提到的usb控制器驱动,host。

至于host,现在市场上有很多款,如果你老板给你用的是市面上用的最成熟的像EHCI,那么你太幸运了。这个基本不用你写,只要稍加修改,把她注册到总线上即可。如果你很不幸,使用了像musb这样的host,你惨了,有你苦头吃了。呵呵。如果有用的可以联系我,之前研究过,兴许可以帮上什么忙啊。

第三步,精益求精;

这个时候驱动你也调过了,也许这时候已经跑起来了,也许还没跑起来。可能你开始浮躁了,到这个时候咋的也过去个把月了,如果还没出成果难免心急。好,这时候如果是这样,你该做什么呢?    重新看Spec,重新看整个驱动过程,重复之前做过的事情。这次你再看绝对和之前不一样了。这时候你要学会的是,坚持,耐力.................

最后,给大家介绍一下我自认为不错的资料,你可以参考。像复旦一哥们写的linux那点事儿(附件里有,大家嫌麻烦可以到我这里下载Linux那些事儿之我是U盘.pdf),ldd3,最好的资料是源代码。

需要资料的朋友可以给回复留言,我可以发给大家,我库里一堆资料,我喜欢看电子版的,所以如果你也和我一样喜欢看电子书籍的话,我很乐于奉献的哦~~

 

于2010-03-12 08:06前回复此主题可获赠1积分。
附件:请先登陆查看附件!
 
相关主题
人生只有走出来的美丽,没有等出来的辉煌
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
好详细,学习了~~
 
跟随psoc.eefocus.com社区一起玩转PSoC3/5开发板
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
学习一下。
 
站在ARM的平台上看DSP,我们还需要奋进。
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
学习一下。
 
站在ARM的平台上看DSP,我们还需要奋进。
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

好有难度,不懂的飘过~~~~~~~~~

 
我不想说!
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
正需要这个
仔细研读
 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
不错,支持,很有价值!
 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

学习 雪下

学习 雪下

学习 雪下

学习 雪下

 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

赞楼主个人签名。

 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

很有启发。请发送到sylva2004@sina.com. 谢谢楼主

BTW:eefocus博客上也有不少牛人,你可以在博客发表文章,这样成系统,我们也好检索查看,然后bbs里面只要加一个链接就行了。相信楼主也会是一个明星博主哦。哈哈。

回复第 1 楼 whynot于2010-03-12 08:06:38发表:
 

嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至少需要个把月的时间,不信?那是你没做过。

本人做过2年的嵌入式驱动开发,usb占了一大半的时间。期间走了不少弯路,下面将我的血的经验教训总结下,为要从事和正在从事的战友们做一点点贡献吧:)

首先,扫盲;

要做的是阅读usb Spec(英文的哦,其实很多文章、书籍和资料真有水平的还是原创的好,就像食品往往经过加工就变了味,之前如果没有接触过的话可以先看看中文的,大概先有个印象),这个工作其实是很复杂很枯燥的一部分。看Spec的同时可以到网上大概浏览下usb开发的相关知识,这个阶段就是扫盲,不求精进。至少你得知道usb的四种传输类型吧,你得知道usb从上电开始的几个状态吧,你得知道usb设备都有哪些吧,等等。

第二步,窥全貌;

usb设备是如何工作起来的?其实usb子系统是分层次工作的,他们配合默契,做好自己的份内之事,一切以大局为重。usb驱动可以分为usb设备驱动,usb控制器驱动,hub驱动,总线驱动等等。我建议你还是顺着设备驱动的这根主线往下走吧。

在真正开始分析usb驱动代码这之前,你需要了解linux模块机制,linux驱动的platform总线构架,之类。一个模块被加载后,从driver的角度来说,真正将设备驱动起来是从probe开始的。这个你该知道。你得知道为什么usb可以即插即用,做软件的朋友该知道线程这个东西吧,和她有关系的。usb系统里面一个最重要的角色该出场了,urb。一切的一切都要围绕她进行。pipe为她铺路,数据由她承载。usb设备驱动的工作就是准备好这个urb后她的使命就基本完成了,那她把urb给了谁?这就是之前提到的usb控制器驱动,host。

至于host,现在市场上有很多款,如果你老板给你用的是市面上用的最成熟的像EHCI,那么你太幸运了。这个基本不用你写,只要稍加修改,把她注册到总线上即可。如果你很不幸,使用了像musb这样的host,你惨了,有你苦头吃了。呵呵。如果有用的可以联系我,之前研究过,兴许可以帮上什么忙啊。

第三步,精益求精;

这个时候驱动你也调过了,也许这时候已经跑起来了,也许还没跑起来。可能你开始浮躁了,到这个时候咋的也过去个把月了,如果还没出成果难免心急。好,这时候如果是这样,你该做什么呢?    重新看Spec,重新看整个驱动过程,重复之前做过的事情。这次你再看绝对和之前不一样了。这时候你要学会的是,坚持,耐力.................

最后,给大家介绍一下我自认为不错的资料,你可以参考。像复旦一哥们写的linux那点事儿(附件里有,大家嫌麻烦可以到我这里下载Linux那些事儿之我是U盘.pdf),ldd3,最好的资料是源代码。

需要资料的朋友可以给回复留言,我可以发给大家,我库里一堆资料,我喜欢看电子版的,所以如果你也和我一样喜欢看电子书籍的话,我很乐于奉献的哦~~

 

 
 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

斑竹的研发历程确实有些借鉴价值.

以后还需要想斑竹多多请教一下这方面的问题.

谢谢斑竹分享.

 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 
最后,给大家介绍一下我自认为不错的资料,你可以参考。像复旦一哥们写的linux那点事儿(附件里有,大家嫌麻烦可以到我这里下载Linux那些事儿之我是U盘.pdf),ldd3,最好的资料是源代码。

请问“这哥们儿”的联系方式有吗?

 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
还没实践过,正在学习,没想到真是个耐力活儿。。。
我也喜欢电子版
强烈要求lz共享资料!!
 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

这个和linux内核的版本有关系吗?

貌似2.6以后对驱动的支持已经很好啦。

 
懒做但不好吃,上进但不积极。
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

       顶!!!

 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

拜读一下,自学成才

 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

非常感谢分享, 學习一下.

 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
附件在哪?想学习学习
 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
正需要,受教了,看看!
 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
学习一下,学习一下
 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

好东东吗,休息休息嘻嘻嘻

 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
谢谢大哥,小弟甘拜下风
 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

看一看再说,先谢谢楼主了

 
回复 链接 收藏
 
回复:嵌入式linux下usb驱动开发方法--看完少走弯路
 

谢谢,字数不够!

 
回复 链接 收藏
 
RE:嵌入式linux下usb驱动开发方法--看完少走弯路
 
也来学下,多谢分享
 
回复 链接 收藏
 
我要发帖  | 我要投票  | 我要回复  | 收藏