精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在WINDOWS操作系統下基于PCI總線開發WDM驅動程序

電子設計 ? 來源:INTERNET ? 作者:王磊,朱齊丹,王 ? 2020-03-20 08:05 ? 次閱讀

1、引言

微型計算機界以INTEL公司為主推出了PCI總線規范。采用PCI總線設備所具有的配置空間以及PCI總線通過橋接電路與CPU相連的技術使PCI總線具有廣泛的適應性,并且PCI總線采用寬字節和高達33Mb的時鐘頻率的猝發和主控方式傳輸能滿足高速設備的要求。

在WINDOWS操作系統下,開發PCI設備的驅動程序最好的方案是WDM驅動程序。在一個系統中開發出WDM驅動程序,稍加修改即可在其他系統中編譯運行。

2WINDOWS驅動程序模型WDM

WDM(WINDOWSDriverProgramModel)是一個模塊化的、分層次類型的微型驅動程序結構,它是編寫設備驅動程序的主要模型。設備驅動程序是提供連接到計算機的硬件的軟件接口,它是操作系統的一部分,用戶應用程序以一種規范的方式訪問硬件,而不必考慮必須如何控制硬件。在WINDOWS中,驅動程序總是使設備看起來像是一個文件,可以打開設備的一個句柄,然后應用程序可以在設備句柄最后關閉之前向驅動程序發出讀寫請求。WDM是在WindowsNT驅動程序體系的基礎上發展而來的,修改或增加了即插即用、電源管理等功能,使之適應硬件和用戶的要求。

PCI總線是一種高性能、與CPU無關的32/64位地址數據復用的總線,它支持突發傳輸、即插即用、電源管理等功能,不但能滿足現在的應用需要,而且能夠適應未來的需求。PCI總線支持硬件資源動態自動配置,以支持即插即用。在PCI設備插入PCI插槽或上電后,PCI總線配置機構自動根據PCI設備的要求實現配置。PCI總線支持內存讀寫、I/O端口讀寫、中斷機制和DMA功能。由于這些硬件特點使PCI設備的WDM驅動程序的設計變得很復雜。在開發WDM驅動程序之前,還有必須掌握PCI設備的需要分配的資源等配置信息以及PCI設備的功能和操作方法。

在WDM中,采用了分層的驅動程序體系結構,總線驅動程序或類驅動程序在最底層直接與設備打交道,設備功能驅動程序在上層通過與低層驅動程序打交道,實現設備的功能,中間還可以有類過濾驅動程序或設備過濾驅動程序用于數據的過濾或轉換。在PCI總線的驅動程序層中,其層次圖如圖1所示:

在WINDOWS操作系統下基于PCI總線開發WDM驅動程序

在PCI設備的WDM驅動程序中,一般是編寫功能驅動程序。PCI總線驅動程序由操作系統實現,過濾驅動程序一般在特殊的情況下需要編寫。因此本文只討論PCI設備功能驅動程序的設計。在PCI設備功能驅動程序中,需要處理PCI設備的內存、端口的讀寫、中斷處理和DMA數據傳輸,實現PCI設備的功能,因此,PCI設備功能驅動程序是很標準的WDM設備驅動程序。

3、PCI設備資源的獲得及內存、I/O讀寫

PCI設備的硬件資源是由PCI配置機構動態分配的,由PCI設備實現PCI配置寄存器,提出需要分配的硬件資源,由PCI配置機構分配資源。驅動程序需要取得這些資源,才能操作硬件。因此,PCI設備的硬件資源分配與管理是驅動程序中很重要的部分。硬件資源主要包括映射內存空間、I/O空間、中斷。當系統的PNP管理器在取得設備的資源后會自動向驅動程序發出IRP_MN_START_DEVICE的IRP,在該IRP棧中包含了設備的資源信息。好的驅動程序都應該使用這種方法,每個支持PNP功能的驅動程序,都應實現IRP_MN_START_DEVICE處理。在該IRP處理中應先交給低層驅動程序處理后,再根據IRP棧內內容進行資源分配。

在PCI設備的驅動程序中,獲得的設備內存是一段映射物理內存,這是無法使用的,需要將其映射成系統可以訪問的非分頁內存。函數MmMapIoSpace完成該功能。該函數的原型為:

參數PhysicalAddress為物理地址;NumberOfBytes為地址的數量;CacheEnable為內存是否可以隱藏,取值可為MmNonCached,MmCached,MmWriteCombined,這里必須取為MmNonCached。

在PC上,I/O空間是一個64K字節的尋址空間。I/O端口的尋址方式與內存是不一樣的。但是在WDM驅動程序中,對其處理與內存是一樣的,把其看作寄存器,映射為設備內存。其映射方法和訪問函數的用法與內存資源一樣,只不過函數XXXREGISTERXXX改為XXXPORTXXX。

4、中斷的處理

在PCI總線中,很多設備共享一個中斷,這就需要在中斷處理函數要格外小心,處理不當,就會導致系統崩潰。驅動程序首先要在IRPMNSTARTDEVICE中獲得中斷資源,然后需要連接到中斷處理函數中,使其當有中斷請求時,進入中斷服務例程。連接中斷的函數為IoConnectInterrupt,具體用法見上段程序中的“中斷資源”部分。十分需要注意的是在連接中斷之前,一定要確定PCI設備不會產生中斷請求,最好在PCI設備上電后,中斷為屏蔽狀態。在連接中斷后,調用開啟中斷請求的函數需要同步處理,以防在函數的執行中,出現運行時間上的錯誤,而且在開啟中斷時,一定要在所有的硬件資源分配以后,否則如果有中斷產生,系統就會立即調用中斷處理例程,如果例程中使用了還沒有分配的資源,就會出現意想不到的結果。

在中斷服務例程中,相應的處理最好簡潔快速,因為中斷例程運行的級別很高,當有中斷請求時,不但會打斷應用程序的執行,而且會打斷在硬件中斷級以下的所有運行程序。在WDM中,提供了DPC(DeferredProcedureCall)例程,將在中斷例程中耗時的但不需要立即處理的任務延時處理。比如,驅動程序接受應用程序的寫PCI設備的數據,當寫完后,硬件產生中斷標志執行完畢,這時需要結束該IRP,就可以將結束IRP這個耗時的任務交給DPC完成。

在該實例中,由應用程序調用函數WriteFile,將數據傳遞給驅動程序,驅動程序的DispatchWrite例程負責處理該IRP,在該例程中,由于需要中斷的配合,假定無法立即執行完畢,必須將IRP串行化,StartIo例程如果沒有其他任務,就開始處理該IRP,處理完畢后立即返回,但不能結束IRP,當PCI設備完成操作后,就會產生中斷,在中斷服務例程中把IRP交給DPC,在DPC中處理完后結束該IRP。

5、驅動程序的安裝與應用

Windows98和Windows2000是依靠INF文件來得到硬件設備驅動程序的安裝信息的一個設備信息文件(INF)。只要將文件中雙引號中的提示改為相應的內容即可生成我們自己的設備信息文件。

[Strings]

ProviderName=“yourcompanynamehere”//公司名稱

MfgName=“NameofHWmanufacturerhere”//硬件制造商名稱

DeviceDesc=“Descriptionofdevicehere”//設備描述

DeviceClassName=“Descriptionofdeviceclasshere”//設備類的描述

當系統加電時,WINDOWS操作系統會自動檢測所有外設,當第一次檢測到我們的設備時系統會提示用戶指定新硬件的驅動程序。根據提示指定了我們修改過的INF文件,以及編譯后生成的.sys系統文件系統就自動安裝好了新硬件的驅動程序。或者可以用控制面板中的添加新硬件來搜索新硬件。

驅動程序安裝好以后,在應用程序中就可以像打開其他驅動程序(如虛擬設備驅動程序VxD)一樣用CreateFile打開設備。

6、基于PCI總線的電機運動控制卡

圖2為該系統硬件組成框圖,該控制卡采用PCI總線實現主計算機與控制卡之間的信息傳遞。控制卡上有2個伺服控制專用芯片LM628,分別用于控制伺服電機;來自2個伺服電機的增量式碼盤輸入信號(A相、B相和Z脈沖),經電平變換后分別送入LM628經四倍頻和計數后作為反饋信號,由LM628根據主計算機給定的位置、速度、加速度生成梯形軌跡速度曲線作為給定值,實現伺服電機的反饋控制。主計算機對該控制器發送命令,伺服控制器即按給定的運動形式輸出相應的數字信號,本卡中LM628工作于8位工作方式,產生輸出到功率放大器件。

在WINDOWS操作系統下基于PCI總線開發WDM驅動程序

應用PCI總線目標接口芯片PCI9052完成控制卡的接口部分,專用運動控制處理芯片LM628完成對電機的控制,再加上相應的電路,即實現了基于PCI總線的精密電機運動控制卡的硬件設計。

7、結束語

WDM用一個相對獨立的模塊來處理設備數據的傳輸,驅動程序在這個模塊中啟動或停止設備,并實現中斷或其他方式的輸入輸出操作。WDM使驅動程序的結構非常清晰、完整,也使中斷I/O方式的設備驅動程序的設計和實現更加方便、快捷。應用WDM編制的設備驅動程序在本電機控制卡得到很好的應用。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    6742

    瀏覽量

    123194
  • PCI
    PCI
    +關注

    關注

    4

    文章

    662

    瀏覽量

    130185
  • 總線
    +關注

    關注

    10

    文章

    2868

    瀏覽量

    87994
收藏 人收藏

    評論

    相關推薦

    PCI設備的WINDOWS驅動程序開發

    PCI設備WINDOWS驅動程序開發摘要:本文主要介紹了Windows9x
    發表于 05-03 12:10

    分享:基于PCI總線的雙DSP系統WDM驅動程序設計

    如圖3所示。 2 基于WDMPCI驅動程序設計 WDM是新一代的驅動程序構架,它是一個跨平臺的驅動程
    發表于 09-24 22:18

    WDM設備驅動程序開發,Windows 2000/XP WD

    Windows 2000/XP WDM設備驅動程序開發主要介紹DriverStudio開發工具開發
    發表于 09-13 22:58 ?0次下載
    <b class='flag-5'>WDM</b>設備<b class='flag-5'>驅動程序</b><b class='flag-5'>開發</b>,<b class='flag-5'>Windows</b> 2000/XP WD

    WINDOWSPCI接口卡WDM驅動程序的DMA編程技術

    本文主要討論了Windows環境開發PCI接口卡DMA應用的WDM編程技術,并給出了一個應用
    發表于 08-07 08:37 ?28次下載

    Windows環境開發PCI接口卡DMA應用的WDM編程技

    本文主要討論了Windows環境開發PCI接口卡DMA應用的WDM編程技術,并給出了一個應用
    發表于 10-06 10:14 ?24次下載

    VxWorksPCI總線設備驅動程序設計

    隨著VxWorks操作系統嵌入式系統中的應用,VxWorks產品的開發和應用也越來越廣泛.本文描述了VxWorks
    發表于 11-28 16:36 ?17次下載

    PCI設備WINDOWS驅動程序開發

    PCI設備WINDOWS驅動程序開發 本文主要介紹了Windows9x
    發表于 05-03 11:54 ?3313次閱讀

    PCI傳輸卡的WDM驅動程序設計

    PCI傳輸卡的WDM驅動程序設計 PCI總線規范是為提高微機總線的數據傳輸速度而制定的一種局部
    發表于 10-27 11:04 ?1005次閱讀

    PCI設備的WDM驅動程序開發

    本文簡要介紹了WDM驅動程序的結構體系,之后結合PCI設備的結構特點,通過實例說明如何利用驅動程序開發工具DriverWorks
    發表于 05-19 18:11 ?0次下載

    Windows WDM設備驅動程序開發指南

    書主要介紹Windows 98和Windows 2000新的驅動程序模型(WDM)。描述了WDM設備驅動
    發表于 12-12 15:31 ?0次下載
    <b class='flag-5'>Windows</b> <b class='flag-5'>WDM</b>設備<b class='flag-5'>驅動程序</b><b class='flag-5'>開發</b>指南

    Windows 2000WDM驅動程序的研究與開發

    本文分析研究了 Windows 2000 WDM 驅動程序的基本原理。以 Microsoft 的 DDK 為開發工具,
    發表于 04-18 10:02 ?0次下載

    基于操作系統PCI程序開發

    Vxworks是WindRiver公司開發的嵌入式實時操作系統,廣泛地應用于航空航天、工業控制、通信等領域;分析了VxWorksPCI設備驅動程序
    發表于 09-22 16:31 ?9次下載
    基于<b class='flag-5'>操作系統</b>的<b class='flag-5'>PCI</b><b class='flag-5'>程序</b><b class='flag-5'>開發</b>

    基于WDM驅動程序模型實現過濾器驅動程序開發設計

    的升級,WDM已經成為Windows 2000系統驅動程序開發的主流。作為
    的頭像 發表于 09-19 15:54 ?3134次閱讀
    基于<b class='flag-5'>WDM</b><b class='flag-5'>驅動程序</b>模型實現過濾器<b class='flag-5'>驅動程序</b>的<b class='flag-5'>開發</b>設計

    VxWorks操作系統CompactPCI總線驅動程序的設計

    VxWorks操作系統CompactPCI總線驅動程序的設計(電源技術應用 期刊)-該文檔為VxWorks操作系統
    發表于 08-31 16:09 ?17次下載
    VxWorks<b class='flag-5'>操作系統</b><b class='flag-5'>下</b>CompactPCI<b class='flag-5'>總線</b><b class='flag-5'>驅動程序</b>的設計

    VxWorks操作系統CompactPCI總線驅動程序設計

    VxWorks操作系統CompactPCI總線驅動程序設計(高頻開關電源技術指標)-該文檔為VxWorks操作系統
    發表于 09-27 17:24 ?8次下載
    VxWorks<b class='flag-5'>操作系統</b><b class='flag-5'>下</b>CompactPCI<b class='flag-5'>總線</b><b class='flag-5'>驅動程序</b>設計