嵌入式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,最好的资料是源代码。
分享到:
相关推荐
USB开发大全 (USB设备驱动开发深度解析-宋宝华.pdf usb 中文协议 USB结构体系.pdf 嵌入式Linux的USB驱动程序开发.pdf linux设备驱动开发详解-usb篇.pdf 快速USB学习.doc
嵌入式linux驱动开发教程--源代码.rar 嵌入式linux驱动开发教程--源代码.rar
嵌入式linux驱动开发教程---学习.zip
嵌入式Linux应用完全开发手册--韦东山
收集的几个好的USB开发学习的资料,并且包括USB中文协议. USB开发合集 (包括usb 中文协议 USB结构体系.pdf 嵌入式Linux的USB驱动程序开发.pdf linux设备驱动开发详解-usb篇.pdf 快速USB学习.doc)
嵌入式设计及linux驱动开发指南--基于ARM9处理,嵌入式设计及linux驱动开发指南--基于ARM9处理
嵌入式开发之USB基础---USB基础,对从事USB嵌入式开发的人很有帮助
基于嵌入式Linux的USB摄像头驱动开发
嵌入式Linux设备驱动开发详解-光盘代码 书籍里面的光盘 实例代码: ----本书部分实例的源代码 工具: ----2410处理器的交叉编译工具 ----vivi ----busybox1.00 技术手册: ----本章实例中用到的器件手册 gcc...
嵌入式Linux内核及其驱动开发
嵌入式linux设备驱动开发详解 嵌入式开发资料
嵌入式Linux应用程序开发详解-第11章(嵌入式Linux设备驱动开发).pdf 嵌入式Linux应用程序开发详解-第12章(Qt图形编程).pdf 由于包比较大,采用.tar.bz2类型的压缩.压缩包绝对没有问题,我自己曾经下来解压.由于没有...
-国嵌课程4(嵌入式LINUX内核驱动进阶班-下) -第3天(内核开发基础) -国嵌内核驱动进阶班-3-1(嵌入式linux内核制作).avi -国嵌内核驱动进阶班-3-2(根文件系统制作).avi -国嵌内核驱动进阶班-3-3(内核启动流程...
ARM嵌入式Linux系统开发技术详解------随书代码
【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0-20191009.rar 1500多页的文档,Linux嵌入式开发非常详细的资料
嵌入式Linux系统开发技术详解--基于ARM(完整版). 嵌入式应用程序的好东西啊
再献上本人的嵌入式Linux设备驱动开发笔记,希望对希望学Linux设备驱动的朋友有帮助!我的邮箱:hqulyc@126.com
嵌入式Linux系统开发技术详解--基于ARM(完整版嵌入式Linux系统开发技术详解--基于ARM(完整版
嵌入式Linux下USB摄像头驱动实现.pdf