您的位置 首页 测评

我学习USB规划的进程

最初想学习USB的原因在于当时非常非常想有一台通用编程器,商用的编程器虽然功能好,但是价格昂贵,仅仅为了编程几种芯片就去买一个似

开始想学习USB的原因在于其时十分十分想有一台通用编程器,商用的编程器尽管功用好,可是价格昂贵,仅仅为了编程几种芯片就去买一个好像很惋惜(我现在现已买了编程器了:))。所以想自己做一个很简略的,用串口?并口?一想到要加个又大又笨的外置电源就不喜爱,用USB,不错,有总线供电,这点很吸引人,便是其时我对USB一无所知,那就找材料看看吧。

其时USB技能刚刚鼓起,USB器材在电子市场上仍是很少见,在网上逛了许多天,终究决议用Philips公司的PDIUSBD12作为USB操控器,首要原因是Philips供给的技能文档比较详细。看了Philips公司的相关材料,好像硬件电路并不难,所以自己画了原理图,查看了N遍,应该没问题了,然后制PCB,开始硬件调试,全部都很顺畅。接下来便是考虑软件怎样写。一说到软件,这下头大了。看了几天PDIUSBD12的数据手册,天啊,这么多八怪七喇的寄存器都是些什么呀,见鬼。看来不了解USB的协议底子就无法去对PDIUSBD12进行程序规划。所以只好去翻USB1.1规范,那可是200多页的英文哪,又不是74系列的手册那样几个参数一看就OK了,好在我的专业英语还不算太差,硬着头皮看吧。其时看了近一个月,几乎象进了迷宫相同,底子搞不清东西南北。其时书店关于USB的书只需一本国防科大的USB总线接口开发攻略,买回来回来细心一看,天,几乎是英文USB1.1规范的中文简化版,有些英文的术语一翻译过来怎样着看都不舒畅,并且省掉了许多部分,相同看的不得其门而入,所以扔掉了书(委屈国防科大的这本书了,后来讲USB的书满天飞,我都翻过,不敢说它们都是废物,可是我以为国大的书的编者言语之间对USB的确仍是了解很深的,其他大多数书的编者/译者,有的居然能把pullup resistor of collector翻译成“向上电阻收集器”,嘿嘿,我就不多说了),持续研讨E文。其时别的一个朋友在我的竭力鼓吹下也跟我一同没日没夜热情高涨地研讨了许多天,惋惜后来没有修成正果:)。其时身边尽管博士教授们一大堆,可是没有人研讨过USB,只好装上猎狗的鼻子,去网上四处查找,却是有一些头绪,可是没有很有用的。

这时一个网友给了我一份传说是Philips的C51固件代码,我喜从天降,兴冲冲编译一下,天,许多的Error。硬着头皮去改,发现源文件残缺不全,注释也十分的少,一点点地自己探索着把代码补上来,这期间我把代码和USB规范结合着看,模模糊糊有些了解了,就这样磕磕绊绊地又搞了一个月,熬了许多通宵,程序总算编译通过了。当我哆嗦着手把我的板插上USB电缆的时分,奇观居然呈现了,硬盘一阵狂响之后,Windows赫然蹦出一个发现新硬件的对话筐。My God!我成功了也!!欢欣还没曩昔,装上Philips的驱动程序,想看看我的板上的开关呀、灯呀的动一动,这才发现我的硬件和Philips的不彻底相同,所以和Philips的使用程序不能彻底兼容,尽管驱动装上了,板子上的灯啊、开关呀却无法操控。看来得改改程序了。

这一改程序才知道自己现在对USB协议不过仅仅是略懂了一些皮裘,当依照自己的了解去做了修正今后,PC底子就不能正确识别出我的设备。然后我了解,没有真实了解USB协议,就不会真实地写出自己的程序,更谈不上开发USB接口产品。好在这一段时刻的探索得到了一些阅历,对USB也有了一些根本正确的知道,精神上受到了一些鼓动,所以我持续研讨USB E文规范。一个月曩昔了,又一个月曩昔了,我感觉尽管了解了许多了,可是有些要害的当地依然没有真实透彻了解,好像只差薄薄的一层半透明的纸了,只需稍稍有人点拨一下就能彻悟了,惋惜仙人没有呈现,因而我的程序一直存在问题,此刻我真的有些失望了,USB开发暂时放置。

不久我到一家公司从事USB方面的作业,触摸到了一种SOC的USB程序规划。生计的压力使我不得不尽力去战胜对USB通讯的心思惊骇,细心研读USB协议,此刻USB的相关材料也逐渐丰厚了,并且现在手边有了逻辑分析仪、高级示波器等设备,我乃至用逻辑分析仪细心捕捉过USB通讯的协议完结的物理进程,也用Verilog HDL写过USB host的行为仿真模型供给给FPGA体系模仿。两个月今后,我总算对USB的了解有了质的腾跃,对USB传输数据流进程现已很熟悉,对那片SOC,我可以仅用不到600字节的代码使PC发现新硬件。

后来我捡起早年的那块PDIUSBD12 USB板,依照自己对USB的了解彻底从头做了程序规划,这次十分顺畅,完结PC主机对USB设备的枚举进程现已是轻松的作业了。可是要彻底完结一个USB设备的规划,这仅仅走过了第一个阶段,下一个艰苦的进程则是驱动程序的规划,没有驱动程序,用PC软件操控USB设备底子便是天方夜谈。开始我用Windriver做了硬件确诊,全部都OK之后,可以挑选用Windriver生成一个驱动程序和测试台使用程序,可是Windriver的驱动程序装置办法让我觉得很别扭,我以为一个可以商用级的USB设备不应该选用这种办法。别的,Windriver502版别好像和Xilinx的ISE6.1软件抵触,ISE装置进程常常蓝屏,并且这个版别的Windriver在Win2K SP3以上体系中装置必定会导致体系黑屏。别的有一个近于专业级的驱动程序开发东西DriverStudio,我看过一段时刻,感觉它表面和Windows DDK彻底不同,可是实际上它并没有把DDK做过于严实的封装,处处可以看到DDK的影子,把握DriverStudio其实也相同需求对DDK有较多的了解。我挑选了Windows DDK作为驱动规划东西,尽管我还没有方案做一个专业级的驱动程序规划者,可是在这方面多做一些深化的了解决没有害处。DDK有许多驱动程序的比如,其间有一个bulkusb的比如,细心看过之后,其实把它修正一下就可以变成自己设备的驱动,这也正是Microsoft引荐驱动规划者开发设备驱动程序的办法。DDK的确过于博学多才,我想,可以到达自己的设备驱动可以正常作业这个意图就可以了,没有必要搞清楚驱动程序规划中的每一个细节。其时我也从前花了很大的力气才总算到达这个意图,其间的困难到读者自己去阅历的时分就可以体会了(你或许会把Microsoft声称十分安稳的Win2K整的起死回生:))。好,现在是终究一个阶段了:规划使用程序。这个应该是整个规划中最轻松的阶段了,通过驱动程序操控硬件设备,VC++是很好的东西,当然这个并不是每个人都必定的挑选。当写完终究一句代码,运转程序,看到设备在鼠标键盘点动之间为所欲为受你的操控的时分,那种令人飘然的成就感真的是难以形容。

现在,带USB接口的器材许多了,并且有许多现已是USB2.0 High speed设备了。我有幸才智了许多USB器材的使用,感觉不论是USB full speed仍是High speed,也不论这个器材究竟仅仅一个USB操控器仍是杂乱的SOC,USB通讯部分其实我们都是迥然不同的。现在USB OTG技能通过几年有些缄默沉静的开展之后总算山穷水尽,开发USB OTG设备应该是USB通讯技能下一阶段的热门。其间还曾呈现了一类USB Host器材,算是补偿USB1.1和USB OTG之间暂时的空白吧。

或许我领悟太差,学习USB的进程真的是十分困难,还有许多朋友或许会有和我相同的苦楚,我把自己的USB学习阅历写出来,期望可以给后来者一些有利的启示,一起也期望可以给我们一些鼓动:再大的困难,只需肯尽力,也是可以战胜的;USB通讯彻底不同RS232,要可以硬着头皮看E文,要有懂USB的朋友点拨,要有很好的参阅代码,要自己肯动脑筋去考虑,要有激烈的爱好和恒心,这样的话,即便时刻稍长一点,终究你也是能把握USB的。

我不期望我的阅历让想学习USB的朋友感到恐惧,在你学习USB之前,先要给自己定一个即将到达的规范:假如你期望自己可以彻底把握USB通讯技能,到达可以规划USB physical和SIE部分的水平,那麽这便是USB硬件规划的至高境地了,不过只需IC规划公司会集若干人力花费若干年时刻投入若干经费才可以做得了的。假如你想把握硬固件编程、驱动程序规划,那么你需求预备吃点苦;假如你不需求关怀USB通讯的详细进程,仅仅固件使用中和底层简略的进行数据交换,或者是PC使用程序规划,呵呵,祝贺了,你会发现USB通讯其实很简略。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/234125.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部