详细解析windows usb驱动和linux usb驱动的相似和差异(一)

来源:互联网 发布:js 空格替换成换行符 编辑:程序博客网 时间:2024/04/30 10:17

版权信息:

   版权归smilestone322所有,保留所有权利,仅用来学习,请勿用于商业用途,欢迎转载,转载请注明出处。谢谢!连载ing。

 

 

0前言

   很早以前就想写点东西来总结windowsusb开发和linuxusb驱动开发的异同了,今天主要从相同点和不同点进行讲解吧,对于两个平台下usb驱动开发,usb协议是相同的,咱们先从usb协议开始谈起,然后讲解windowsusb驱动开发的方法,主要介绍3种方法,dw 3.2+DDKWDMDDK开发和WDFKMDF Usb驱动开发。

虽然dw已经被WDF赶下台了,但是我这里还是要讲讲dw开发驱动程序的东西,因为我的第一个驱动程序就是采用dw+ddk 2600开发的,至今我都记得当时开发驱动的情景,那种感觉真的希望神仙来指路啊。在开发第一个usb驱动程序之前我没有做过驱动的经验,甚至都不知道,驱动是干嘛的。但是临危受命,只有往前冲,没有回头路,那就往前走呗。

没有文档,没有原理图,甚至连数据手册都没有给我,就跟我讲了讲这个项目要做什么工作。当时一片茫然,真希望神仙来指路。拿到项目需求,其实是口头上的,呵呵,没有一行字的文档。没有办法,一边学习,一边做需求分析,请教做过这些事情的同事和同学。到csdn和国外的论坛发帖狂问。一边搜开发驱动的工具,比如ddkdw等等,那个时候国内还没有人用WDF模型做驱动开发。

那时的水平真的就是一个字来形容,菜。搜了一大通,感觉还是用dw吧,感觉还是挺比较容易用,选用了开发工具后,就不分昼夜的学习。有时工作到凌晨2点,雷锋同志说的好,时间就像乳沟,要挤还是有的,呵呵,中午也不休息了,干活,干活,干活。一个星期过去了没有一点进展,2个星期过去了,终于把需求搞明白了,这个时候,对dw+ddk+vc的开发环境也搭起来了,也买了几本书,每一本书都讲到关键的地方没了,呵呵,真气人啊。

神阿,救救我吧!老大每天都过来问一下,有什么进展了吗?唉,我每次都对着他笑笑,还好,老大还对我不错,要我好好的静下心来,理一理思路。当时他也帮我找找资料,但是后面证明都是没用的,呵呵,因为公司没有人做过usb驱动。

3个星期过去了,柳岸花明又一村,我终于可以往硬件发送控制命令了,但是硬件还没有给我回送数据。没办法,用bus hound 一抓包,看到有数据了,我兴奋了一吧。呵呵,终于看到了希望,看到了未来,那时候感谢党,感谢毛主席,心情澎湃了一个小时。

实验证明,希望越大,失望越大,我以为就要做出来了,但是没想到还是万里长征走完第一步,后面的路还很长,我们必须保留……。我后面就去写函数去读端点中的数据,但是一直都读不到,呵呵,调啊调啊。希望会有的,面包会有的,我一直坚信自己,从来不怀疑自己的能力。

4个星期的早上,我早早的就去上班了,还是坐在那里,安安静静的写代码,调程序,也不和别人说话,不断地看别人的代码,看dw上的例子,看ddk的例子。当时一个星期比我一个月看的东西还要多,总结一句话,静下心来看源码,源码就会像看故事会那样简单。第4个星期的星期3了。也是上午快吃中饭的时候,终于看到硬件不断的给我传数据了,我还是用bus hound抓包,数据是那么的正确,当时的心情是怎样的激动。一个驱动程序,一段不寻常的经历,让我想起一句话:没有压力,没有动力,不经历风雨怎能见彩虹。

以上就是我第一次做usb驱动的一段经历,那时流行采用dw+ddk开发驱动程序,现在开发dw软件的公司都停止开发了,多么可惜的一件事情啊,这么优秀的软件,这么易用的软件,就这样被淘汰了,最终将它的版本定格在3.2。但是国内现在还有一大拨人在使用dw开发驱动程序,我看网上有本书,叫圈圈教你玩usb,就是采用dw开发驱动的,粉丝还挺多的,证明dw还有一定的生命力,还有一定的市场,所以本文还是会讲到怎样采用dw做驱动开发。

虽然现在正规的商用软件都不采用dw了,因为它的版本不更新,出了bug都没有人维护了。但是用dw做研究还是挺不错的。开场白说完了。开始进入正题,本文的主要安排如下:首先介绍usb通信协议,同时介绍一款最简单的usb芯片,68013。然后接着讲解windows下的usb驱动开发。采用3种不同的方法开发usb驱动程序,最后讲解linuxusb驱动开发,当然两个平台开发usb驱动的异同点是贯穿全文的,不然就跑题了。

   作为驱动开发人员,不需要你有多高的算法基础,因为驱动里面的算法都是基本的算法,只要你熟悉原理图,熟悉datesheet,然后学习DDKWDK下自带的例子,就可以轻松上手,对于linux,同样也是这样,还有linux的源码是公开的,你可以编译,安装,就可以在/usr/src看到各种驱动的源码了,学习这些源码,不但可以提高我们的编程水平,而且使得我们写的驱动更有健壮性。下面我讲解的思路也是这样的,先将usb协议,在讲讲cy7c68013芯片,然后讲解dwddkwdk下的例子,只要将这些例子都学会,可以说,你具有写驱动的水平了,至于要成为高手,就必须多总结经验,多积累经验。

 

连载,未完待续。。。。。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 平安eq测试没过怎么办 物业在小区私自建房怎么办 婚后父母出钱买房离婚怎么办 情人忙工作没时间约会怎么办 情人很忙不主动联系我怎么办 丈夫毫不关心基督徒妻子怎么办 眼睛太小怎么办不整容 被野生猴子咬了怎么办 被野猴子抓伤了怎么办 孩子入学前疫苗补不全怎么办 额头肤色比脸黑怎么办 高跟鞋小了挤脚怎么办 老板欠工人工资不给怎么办 小孩吃了生豆子怎么办 拍夜晚的天空太亮怎么办 购房发票字体不清晰怎么办 接到客人电话预定时怎么办 产检资料弄丢了怎么办 工作中同事喜欢争风头怎么办 想出卖身体赚钱了怎么办 孩子生下来不想要了怎么办 舌头被铁管冻住怎么办 人被水泥冻住了怎么办 姑娘果孕妇吃了怎么办 纹身后吃了辣的怎么办 怀孕五个多月不想要了怎么办 失业后又干保安档案怎么办 前列大腺脓肿要怎么办 小动物死了孩子很伤心怎么办 向客人开错房间怎么办 工伤认定没有证人证言怎么办? 一个月没来月经怎么办14岁 刮了胡子下巴痒怎么办 月经多怎么办喝什么好 大姨妈不调怎么办来了 多人被骗没证据怎么办 一直坏肚子拉水怎么办 犯人在监狱有高危高血压怎么办 丈夫出轨他死都不承认怎么办 没写欠条的债该怎么办 被尾随回家知道住处怎么办