在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PCI總線電機控制卡的WDM設備驅動程序設計

      PCI總線電機控制卡的WDM設備驅動程序設計

      作者: 時間:2012-05-15 來源:網絡 收藏

      摘要:結合基于的精密運動,介紹了設備的程序的設計過程,設備的獲得,I/O端口的讀寫,內存的讀寫以及中斷的處理,和程序的安裝。

      本文引用地址:http://www.biyoush.com/article/149064.htm

      關鍵詞:PCI;

      1引言

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

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

      2WINDOWS驅動程序模型WDM

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

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

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

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

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

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

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

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

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

      4中斷的處理

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

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

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


      上一頁 1 2 下一頁

      評論


      相關推薦

      技術專區(qū)

      關閉