《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > USB總線數(shù)據(jù)采集設備驅動程序的設計
USB總線數(shù)據(jù)采集設備驅動程序的設計
摘要: 隨著計算機應用技術的發(fā)展,虛擬儀器、自動測試系統(tǒng)、自動控制等領域,均越來越多的應用計算機來進行數(shù)據(jù)處理。USB總線標準的提出,解決了計算機傳統(tǒng)I/O接口通用性差、不易擴展、易受計算機插槽數(shù)量、地址和中斷資源的限制等缺點,使計算機在測控領域的重要性與日俱增,也使USB總線在數(shù)采測控業(yè)界備受關注,并在各種測控設備中迅速發(fā)展,但專用的USB設備不能像鼠標、鍵盤等HID類設備一樣使用Windows系統(tǒng)提供的標準驅動程序,而是需要開發(fā)專用的驅動程序。
Abstract:
Key words :

 

0 引言
    隨著計算機應用技術的發(fā)展,虛擬儀器、自動測試系統(tǒng)、自動控制等領域,均越來越多的應用計算機來進行數(shù)據(jù)處理。USB總線標準的提出,解決了計算機傳統(tǒng)I/O接口通用性差、不易擴展、易受計算機插槽數(shù)量、地址和中斷資源的限制等缺點,使計算機在測控領域的重要性與日俱增,也使USB總線在數(shù)采測控業(yè)界備受關注,并在各種測控設備中迅速發(fā)展,但專用的USB設備不能像鼠標、鍵盤等HID類設備一樣使用Windows系統(tǒng)提供的標準驅動程序,而是需要開發(fā)專用的驅動程序。開發(fā)驅動程序與開發(fā)Windows應用程序完全不同,驅動程序以系統(tǒng)的內核模式運行,任何細小的錯誤都可能引起操作系統(tǒng)的崩潰。因此,專用設備驅動程序開發(fā)的復雜性,成為了USB總線在該領域發(fā)展的瓶頸。隨著軍事裝備自動化、數(shù)字化、智能化程度越來越高,一種更為簡便的驅動程序開發(fā)方法的探討十分有益。基于軍用電站檢測儀中USB數(shù)據(jù)采集模塊的開發(fā),介紹了USB專用設備驅動程序開發(fā)的一般過程。

1 WDM驅動程序概述
    WDM(windows driver mode)是微軟推出的一種驅動程序模型,以簡化驅動程序的開發(fā)。它采用分層驅動的方式,即在應用程序和物理設備之間存在著幾個不同層次的驅動程序,且各層驅動程序有不同的優(yōu)先級,每個驅動程序對應一層,不同層上的驅動程序可以相互調用。USB系統(tǒng)的組成如圖1所示:應用程序通過API函數(shù)調用Win32系統(tǒng)子函數(shù),驅動程序分為設備驅動程序,總線驅動程序(USBD)和主控制器驅動程序(HCD)三層,它們均運行在系統(tǒng)的內核模式。設備驅動程序使用IRP(I/ORequest Packet)通過總線驅動程序提供的軟件接口(USBDI,USB Driver Interface)向總線驅動程序發(fā)出I/O請求,并根據(jù)數(shù)據(jù)傳輸方向提供一個或空或滿的內存緩沖區(qū);USBD負責管理數(shù)據(jù)的總線傳輸,也有設備驅動程序與其他軟件接口的功能單元進行通信,沒有直接調用USBD,但總有一個更低層的驅動軟件發(fā)生USBD調用。主控制器驅動程序處在USB系統(tǒng)軟件的最底層,直接與主控制器的硬件通信,它提供了只有總線驅動程序才能訪問的主控制器驅動程序軟件接口HCDI(Host Control Driver Interface)。其中,總線驅動程序和主控制器驅動程序是系統(tǒng)的底層驅動程序。設備驅動程序是針對某一USB設備的專用驅動程序。

 

 

2 數(shù)據(jù)采集設備驅動程序的開發(fā)
    Windows為USB設備提供了底層驅動程序,與底層驅動程序接口的是I/O請求包(IRP),Windows為應用程序提供的接口則是API函數(shù)。因此必須在它們之間建立一個驅動程序,在底層驅動與Win32應用程序之間傳遞消息,即設備驅動程序。VC++、VB等軟件開發(fā)的應用程序,在設備驅動程序的支持下,都可以調用ReadFile()、WriteFile()、DeviceIoControl()等API函數(shù)向設備傳遞主機請求。Windows系統(tǒng)自動將API調用轉化為IRP,設備驅動程序把它向下層驅動傳遞。直到完成其所指定的功能再沿驅動程序棧返回主機。
    設備驅動程序的開發(fā)
    開發(fā)設備驅動程序一般采用以下幾種方法:1)直接使用Windows DDK,這種方法開發(fā)難度較大,設計者必須對整個體系結構有很好的理解和把握。2)使用Driver Studio,該工具軟件可為設計者提供驅動程序的整體框架,設計者只需要專心于功能代碼設計。3)使用win Driver,這種方法開發(fā)驅動程序很容易,但工作效率不是很高。這里采用第二種方法。
    Driver Studio生成驅動程序框架主要由兩個類組成,一個是Driver類,另一個是Device類Driver類。
    1)Driver類用于初始化驅動程序,它包括:入口函數(shù)Driver Entry和Add Device函數(shù)。當設備驅動程序被加載時,操作系統(tǒng)調用Driver Entry函數(shù);當創(chuàng)建設備對象并把它連接到設備堆棧時調用Add Device函數(shù)。函數(shù)代碼如下:

 


    2)Device類是設備類KDvice的派生類,這個類包含了電源管理、設備讀寫、設備控制等具有特定功能的例程。限于篇幅只介紹批量讀寫端點函數(shù)。

    INF文件的編寫
    INF文件是一個文本文件,它含有安裝一個設備驅動程序需要的所有必需的安裝信息。包括要復制的文件列表,要創(chuàng)建的注冊表項等。用以告訴系統(tǒng)安裝哪一個驅動程序,INF文件由若干區(qū)段組成,下面列出幾個區(qū)段及其功用:
    1)Version區(qū)段是INF文件的開始,其Class和ClassGuid指出了驅動程序所屬的設備類別及設備的GUID。GUID(Global Unique Identi-fier)用以標識不同的驅動程序,它是全局且唯一的,系統(tǒng)就是通過GUID把應用程序的I/O請求傳達給相應的驅動程序的。
    2)Mantifacturer區(qū)段指明供應商及其對應Models字節(jié)的名稱。
    3)Install.AddReg/Install.Services指明注冊表添加內容及安裝驅動的詳細信息。
    該驅動程序應用于數(shù)據(jù)采集模塊采集電站的電壓信號,部分采集數(shù)據(jù)如表1所示:


    測量誤差主要來源于模塊的A/D,與驅動無關系,數(shù)據(jù)傳輸結果表明:數(shù)據(jù)可以在該驅動下及時正確的傳輸,模塊工作正常。

3 結束語
    該設備驅動程序用于電站檢測儀中USB數(shù)據(jù)采集模塊的效果良好,用這種方法提高了開發(fā)效率,縮短了開發(fā)周期,使開發(fā)者可將主要精力集中于實現(xiàn)設備功能上,為非軟件專業(yè)開發(fā)者開發(fā)基于USB總線的檢測儀驅動提供了很好的借鑒。也為USB總線在測控領域的應用開創(chuàng)了光明的前景。相信以計算機為數(shù)據(jù)處理核心,以USB總線為數(shù)據(jù)通信方法的測控儀器將成為測控業(yè)發(fā)展主流。

此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: 国产无套粉嫩白浆| 巨年少根与艳妇全文阅| 亚洲欧美成人影院| 老司机精品导航| 国产精品免费一级在线观看 | 菠萝蜜视频在线看| 国产精品第一区揄拍无码| 三级极精品电影| 日韩在线电影网| 亚洲小说区图片区另类春色| 第一章岳婿之战厨房沈浩| 国产伦精品一区二区三区免费迷 | 无码国产伦一区二区三区视频| 亚洲国产精品久久久久婷婷软件| 精品一区精品二区| 国产乱人伦app精品久久| 五月天综合网站| 国内自产少妇自拍区免费| 一区二区三区影院| 日日噜狠狠噜天天噜AV| 五月开心激情网| 欧美精品videossex欧美性| 免费无码不卡视频在线观看| 色哟哟视频在线| 国产成人无码AV一区二区| 55夜色66夜色国产精品视频| 天天爽亚洲中文字幕| 两个丫头稚嫩紧窄小说| 日本三人交xxx69| 五月婷婷亚洲综合| 欧美成在线观看| 亚洲高清中文字幕| 精品亚洲福利一区二区| 国产91精品久久久久999| 香蕉视频免费看| 国产无遮挡又黄又爽在线视频| 5g影院天天爽天天| 在线视频网址免费播放| xxxxx日本人| 成人做受视频试看60秒| 久久99精品福利久久久|