• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于WinDriver的USB驅(qū)動(dòng)程序開發(fā)

      2015-06-24 08:37:21楊新友鄒嵐鐘建軍
      電腦知識(shí)與技術(shù) 2015年11期
      關(guān)鍵詞:驅(qū)動(dòng)程序

      楊新友 鄒嵐 鐘建軍

      摘要:隨著計(jì)算機(jī)技術(shù)的更新?lián)Q代,USB接口已經(jīng)成為個(gè)人計(jì)算機(jī)上最重要的外部設(shè)備擴(kuò)展接口,但Windows操作系統(tǒng)中,通常采用驅(qū)動(dòng)程序作橋梁。文章對USB驅(qū)動(dòng)程序開發(fā)的方法進(jìn)行了對比分析,得出各種方法的優(yōu)缺點(diǎn)和適應(yīng)情況。重點(diǎn)對基于WinDriver的USB驅(qū)動(dòng)程序開發(fā)進(jìn)行了深入研究,分析了WinDriver開發(fā)設(shè)備驅(qū)動(dòng)程序時(shí)的體系結(jié)構(gòu),給出了基于WinDriver的USB驅(qū)動(dòng)程序的開發(fā)步驟和具體工作流程。

      關(guān)鍵詞:WinDriver;USB;驅(qū)動(dòng)程序;回調(diào)函數(shù)

      中圖分類號(hào):TP311.11 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0231-02

      The Exploitation of USB Drivers Based on WinDriver

      YANG Xin-you1,ZOU Lan 2,ZHONG Jian-jun3

      (1.Unit 92771 of PLA, Qingdao 266405, China; 2.College of Software Technology, Qingdao University, Qingdao 266061, China; 3.Unit 92038 of PLA, Qingdao 266405, China)

      Abstract: USB Interface has become the most important peripheral equipment extended interface of personal computer with the development of computer technology. But in Windows operating system, cannot operate on hardware interface directly, so must use drivers as bridge. The comparison analysis of USB driver development methods is given in the paper, obtaining advantages, disadvantages and adaptation situation of different method. USB drivers based on WinDriver further research. The architecture of equipment drivers using WinDriver is analysised, and the development step and working flow of USB drivers based on WinDriver is given in the paper.

      Key words: WinDriver; USB; drivers; call-back function.

      1 概述

      Windows操作系統(tǒng)通常采用驅(qū)動(dòng)程序作為橋梁來對硬件進(jìn)行操作。主機(jī)程序和和計(jì)算機(jī)的硬件資源通過驅(qū)動(dòng)程序來進(jìn)行通信和交換數(shù)據(jù)。因此對USB設(shè)備開發(fā)需要進(jìn)行USB驅(qū)動(dòng)程序的設(shè)計(jì),來實(shí)現(xiàn)主機(jī)程序?qū)ν獠縐SB設(shè)備的控制和數(shù)據(jù)傳輸[1]。

      目前,主流驅(qū)動(dòng)程序開發(fā)方式有3種:微軟公司的DDK(Driver Development Kit,驅(qū)動(dòng)開發(fā)工具包)工具、Compuware公司的Driver Studio工具和KRFTECH公司的WinDriver工具。其中,WinDriver軟件最為簡單,可以快速創(chuàng)建驅(qū)動(dòng)程序。所以本系統(tǒng)采用WinDriver軟件開發(fā)USB設(shè)備驅(qū)動(dòng)程序[2]。

      本文結(jié)構(gòu)安排如下:第2節(jié)對使用WinDriver開發(fā)設(shè)備驅(qū)動(dòng)程序時(shí)的體系結(jié)構(gòu)進(jìn)行了詳細(xì)分析;第3節(jié)給出了USB驅(qū)動(dòng)程序開發(fā)的步驟和具體實(shí)現(xiàn);第4節(jié)對全文進(jìn)行了總結(jié)。

      2 WinDriver體系結(jié)構(gòu)

      圖1 WinDriver體系結(jié)構(gòu)圖

      考慮到WinDriver工具能夠自動(dòng)探測硬件并產(chǎn)生從應(yīng)用程序訪問硬件的驅(qū)動(dòng),很大程度上降低開發(fā)驅(qū)動(dòng)程序和應(yīng)用程序的難度。所以本文使用WinDriver工具對USB驅(qū)動(dòng)程序的進(jìn)行開發(fā),實(shí)現(xiàn)主機(jī)程序?qū)ν獠縐SB設(shè)備的控制和數(shù)據(jù)傳輸。

      圖1是使用WinDriver開發(fā)設(shè)備驅(qū)動(dòng)程序時(shí)的體系結(jié)構(gòu)圖。通過應(yīng)用程序訪問WinDriver用戶態(tài)函數(shù),再訪問WinDriver內(nèi)核,從而實(shí)現(xiàn)對硬件的訪問 [3]。

      3 USB驅(qū)動(dòng)開發(fā)

      應(yīng)用程序通過設(shè)備驅(qū)動(dòng)程序這一統(tǒng)一的軟件接口訪問硬件設(shè)備,可以不用具體考慮設(shè)備通信所需要的協(xié)議細(xì)節(jié)。目前,主流驅(qū)動(dòng)程序開發(fā)方式有3種:微軟公司的DDK(Driver Development Kit,驅(qū)動(dòng)開發(fā)工具包)工具、Compuware公司的Driver Studio工具和KRFTECH公司的WinDriver工具。采用DDK方法開發(fā)需要深入掌握操作系統(tǒng)內(nèi)核工作方式,因此開發(fā)周期很長。Driver Studio對DDK進(jìn)行了簡化,在開發(fā)向?qū)У幕A(chǔ)上進(jìn)行設(shè)計(jì),可以有效縮短開發(fā)周期。而采用WinDriver開發(fā)工具包能夠有效降低開發(fā)驅(qū)動(dòng)程序和應(yīng)用程序的工作量。WinDriver開發(fā)方式包括兩部分:向?qū)?、代碼產(chǎn)生工具,通過自動(dòng)檢測硬件,再生成應(yīng)用程序訪問硬件的驅(qū)動(dòng)。本文選用WinDriver方式開發(fā)USB設(shè)備驅(qū)動(dòng)程序。

      WinDriver是Jungo公司為驅(qū)動(dòng)程序開發(fā)提供的一個(gè)工具,它把PC硬件系統(tǒng)的驅(qū)動(dòng)程序開發(fā)和調(diào)試進(jìn)行了集成和封裝,不涉及底層的操作,所要做的工作僅僅是保證設(shè)備的硬件和相應(yīng)固件設(shè)計(jì)正確,然后進(jìn)行應(yīng)用程序的設(shè)計(jì)[4]。WinDriver開發(fā)的驅(qū)動(dòng)程序適用性廣,支持PCM-CIA/PCI/ISA/ISA Pnp/CompactPCI /EISA和USB等總線連接方式,適合于Linux,VxWorks,WindowsNT/2000/XP/CE/7, Solaris等操作系統(tǒng)。

      對于開發(fā)者來說,通過采用windrvr.sys或windrvr.vxd文件操作指令和數(shù)據(jù)來驅(qū)動(dòng)硬件,從而實(shí)現(xiàn)WinDriver開發(fā)設(shè)備驅(qū)動(dòng)程序, 因此,開發(fā)者不需要擁有系統(tǒng)級(jí)的編程知識(shí)和熟悉操作系統(tǒng)內(nèi)核運(yùn)行方式[5, 6]。

      圖2 USB設(shè)備驅(qū)動(dòng)程序工作流程圖

      3.1 開發(fā)步驟

      使用WinDriver USB驅(qū)動(dòng)訪問硬件時(shí),應(yīng)用程序通過調(diào)用WinDriver USB API函數(shù),來訪問WinDriver內(nèi)核模塊(windrvr6.sys),從而訪問USB設(shè)備?;赪inDriver開發(fā)的訪問硬件USB驅(qū)動(dòng)程序和應(yīng)用程序的流程如下:

      1)打開DirverwiZard,探測硬件資源;

      2)使用DirverwiZard自動(dòng)生成USB驅(qū)動(dòng)代碼;

      3)在應(yīng)用程序中調(diào)用生成的函數(shù)。

      3.2 具體開發(fā)

      本系統(tǒng)USB驅(qū)動(dòng)程序是在DirverwiZard產(chǎn)生的設(shè)備驅(qū)動(dòng)代碼的基礎(chǔ)上進(jìn)行開發(fā)的,只需從用戶模式應(yīng)用程序中調(diào)用產(chǎn)生的函數(shù)進(jìn)行相應(yīng)的處理就完成了本系統(tǒng)USB驅(qū)動(dòng)程序的開發(fā)。

      使用DirverwiZard產(chǎn)生的設(shè)備驅(qū)動(dòng)代碼的工作流程如圖2所示,首先在main()中調(diào)用WDU_Init()函數(shù)對WinDriver進(jìn)行初始化,WinDriver()通知detach()用戶當(dāng)前插入的設(shè)備,這時(shí)detach()發(fā)送Signal Attach(插入設(shè)備消息)給main(),同時(shí)可能通過回調(diào)函數(shù)attach()返回插入設(shè)備響應(yīng)給WinDriver();此時(shí),當(dāng)有新USB設(shè)備插入時(shí),WinDriver()通知detach()用戶新插入的設(shè)備,這時(shí)detach()發(fā)送Signal Attach (插入設(shè)備消息)給main(),同時(shí)可能通過回調(diào)函數(shù)attach()1返回插入設(shè)備響應(yīng)給WinDriver();然后,main()調(diào)用WDU_SetInterface()2函數(shù)設(shè)置接口,調(diào)用WDU_Transfer()2進(jìn)行傳輸,同時(shí)main()可能通知WinDriver進(jìn)行其它響應(yīng);當(dāng)有USB設(shè)備拔出時(shí),WinDriver()通知attach()用戶拔出的USB設(shè)備,這時(shí)attach()發(fā)送Signal Detach(拔出設(shè)備消息)給main(),同時(shí)可能通過回調(diào)函數(shù)device_detach()1返回拔出設(shè)備響應(yīng)給WinDriver();最后main()調(diào)用WDU_Ininit()結(jié)束WinDriver的調(diào)用。

      應(yīng)用程序的設(shè)計(jì)可以在WinDriver產(chǎn)生的Debug基礎(chǔ)上進(jìn)行開發(fā)而得到。WinDriver的缺點(diǎn)是生成的驅(qū)動(dòng)程序都基于用戶態(tài),意味著在電腦上安裝制作好的驅(qū)動(dòng)程序必須首先設(shè)置WinDriver的驅(qū)動(dòng)環(huán)境,不過將來軟件編制完成后和驅(qū)動(dòng)程序一起打包分發(fā)給用戶也不是什么難事。

      實(shí)際應(yīng)用情況說明,使用WinDriver軟件開發(fā)效率高,能有效保證性能指標(biāo),快速地開發(fā)出高效高質(zhì)量的驅(qū)動(dòng)程序。

      4 結(jié)論

      本文對USB驅(qū)動(dòng)程序開發(fā)進(jìn)行了分析研究。通過采用驅(qū)動(dòng)程序橋梁實(shí)現(xiàn)應(yīng)用程序、計(jì)算機(jī)硬件資源間的通信和數(shù)據(jù)交換。本文選用WinDriver USB v8.02開發(fā)設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)了驅(qū)動(dòng)程序的快速創(chuàng)建。

      參考文獻(xiàn):

      [1] 薛圓圓. USB應(yīng)用開發(fā)技術(shù)大全[M]. 北京: 人民郵電出版社, 2007: 91-99.

      [2] 周立功. PDIUSBD12 USB固件編程與驅(qū)動(dòng)開發(fā)[M]. 北京:北京航空航天大學(xué)出版社,2003:54-55.

      [3] 潘偉峰,江渝,劉和平,等.用WinDriver開發(fā)ISA總線數(shù)據(jù)采集卡驅(qū)動(dòng)程序[J].電測與儀表,2003(6):46-47.

      [4] 蘭曉紅. Windows下基于WinDriver驅(qū)動(dòng)的USB程序設(shè)計(jì)[J]. 重慶師范大學(xué)學(xué)報(bào):自然科學(xué)版,2004, 21(4): 31-33.

      [5] 王澤兵,齊和平. 基于PDIUSBD12芯片的USB接口設(shè)計(jì)[J]. 機(jī)械管理開發(fā),2007(3):89-90.

      [6] 居錦武.基于Windriver的USB設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)[J].沈陽化工學(xué)院學(xué)報(bào),2009,23(3):271-274.

      猜你喜歡
      驅(qū)動(dòng)程序
      計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
      電子制作(2018年17期)2018-09-28 01:56:58
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      如何為老顯卡安裝Windows7驅(qū)動(dòng)程序? 等
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序的真心話和大冒險(xiǎn)
      大石桥市| 石林| 临武县| 马龙县| 环江| 宜春市| 德兴市| 台中市| 孟津县| 嘉峪关市| 丹巴县| 绥化市| 凤凰县| 丰原市| 天台县| 武冈市| 荔波县| 屯门区| 滦平县| 黑龙江省| 万宁市| 江孜县| 尚志市| 稻城县| 乌鲁木齐市| 阳原县| 海城市| 五河县| 兰溪市| 罗源县| 仁化县| 法库县| 伊金霍洛旗| 通州市| 辽阳县| 瑞金市| 盱眙县| 容城县| 龙里县| 奇台县| 确山县|