PCI設(shè)備Windows通用驅(qū)動程序設(shè)計
發(fā)布時間:2007/9/10 0:00:00 訪問次數(shù):511
摘 要: 結(jié)合“通用高速PCI總線目標模塊”的驅(qū)動程序設(shè)計,全面地討論了Windows設(shè)備(特別是PCI設(shè)備)驅(qū)動程序編寫時所面臨的主要問題及解決方案,并提出了封裝設(shè)備驅(qū)動的方法。
關(guān)鍵詞: PCI設(shè)備驅(qū)動程序 端口 內(nèi)存 中斷 封裝
在設(shè)計和使用PCI設(shè)備時,經(jīng)常要在PC機的軟件中訪問和控制硬件設(shè)備,但Windows操作系統(tǒng)(包括Windows95/98、Windows NT、Windows 2000為了保證系統(tǒng)的安全性、穩(wěn)定性和可移植性,對應(yīng)用程序訪問硬件資源加以限制,這就要求設(shè)計設(shè)備驅(qū)動程序以實現(xiàn)PC機的軟件對PCI設(shè)備的訪問。
Windows下的驅(qū)動程序不僅僅包括物理設(shè)備的驅(qū)動程序,也包括為文件系統(tǒng)等非物理設(shè)備編寫的虛擬設(shè)備驅(qū)動程序。為了簡化問題,下面只討論硬件物理設(shè)備的驅(qū)動程序。本文將以撏ㄓ酶咚伲校茫勺芟吣勘昴?閿[1]的驅(qū)動設(shè)計為例,探討PCI設(shè)備的驅(qū)動程序設(shè)計方案。我們開發(fā)了一套通用的PCI設(shè)備驅(qū)動程序,它可以完成一般PCI設(shè)備驅(qū)動所需的功能,可以作為其它PCI設(shè)備驅(qū)動開發(fā)的框架。
1 驅(qū)動程序的模式和開發(fā)工具的選擇
設(shè)備驅(qū)動程序是指管理某個外圍設(shè)備的一段代碼。驅(qū)動程序不會獨立地存在,而是操作系統(tǒng)的一部分。通過設(shè)備驅(qū)動程序,多個進程可以同時使用這些資源,從而可以實現(xiàn)多進程并行運行。在下文中,將調(diào)用設(shè)備驅(qū)動程序的pc機程序稱為用戶程序。
Windows 95和Windows NT采用的驅(qū)動程序體系不同,所以大多數(shù)情況下驅(qū)動程序也不能通用。如果設(shè)備需要在Windows 9X/NT下使用,一般至少要設(shè)計Windows 9X和Windows NT兩個驅(qū)動程序版本。wINDOWS 98 可以兼容Windows 95的驅(qū)動程序,同時它又推出一個新的Win32 Drivers Mode (WDM)驅(qū)動類型。Windows 98中有些設(shè)備(如USB設(shè)備)的驅(qū)動程序必須為WDM模式。這個新的類型實際是在Windows NT的驅(qū)動模型的基礎(chǔ)上增加了即插即用等內(nèi)容。WDM驅(qū)動也可以用在Windows 2000(先前叫Windows NT5.0)中。從長遠的角度看。今后開發(fā)人員只要開發(fā)WDM驅(qū)動就可以了,但從目前的市場情況來看,Windws 95是無法放棄的,所以WDM在近一兩年還無法替代其它類型的設(shè)備驅(qū)動。
Intel 80386以上的微處理器有4個優(yōu)先級別:0級、1級、2級和3級,一般操作系統(tǒng)運行于優(yōu)先級0級上,而用戶程序運行在3級上,在對硬件操作上有一些限制(具體的限制在不同的操作系統(tǒng)中是不同的)。Windows 95支持的驅(qū)動類型很多,但針對一般硬件設(shè)備而言,主要是VxD和打印機驅(qū)動兩類。VxD指的是Virtual Device Drivers。VxD運行在Intel系統(tǒng)的0級上,可以執(zhí)行特權(quán)級指令,對任何I/O設(shè)備有全部訪問權(quán),所以大多數(shù)硬件驅(qū)動程序都是VxD。VxD驅(qū)動通常以.vxd為擴展名,放在Windows\System目錄下,可以在Windws 95啟動時裝入,也可以在程序運行時根據(jù)需要動態(tài)地載入。動態(tài)加載有助于節(jié)約系統(tǒng)內(nèi)存和資源。但打印機驅(qū)動程序不是VxD,它運行在3級上。同Windows 95類似,Windows NT的驅(qū)動也有可以運行在0級的內(nèi)核模式(Kernel Mode)和運行在3極的用戶模式(User Mode)之分。由于Windows NT禁止用戶模式的程序訪問I/O端口(wINDOWS 95/98則允許用戶程序直接訪問I/O端口),直接控制物理設(shè)備的驅(qū)動程序都是內(nèi)核模式的。而我們設(shè)計的PCI通用驅(qū)動程序要求對各種硬件資源訪問,所以應(yīng)該選擇工作在0級的驅(qū)動程序模式。
開發(fā)設(shè)備驅(qū)動采用的主要開發(fā)工具是微軟為設(shè)備開發(fā)者提供的軟件包Device Driver Kit (DDK)。這個軟件包包括有關(guān)設(shè)備開發(fā)的文檔、編譯需要的頭文件和庫文件、調(diào)試工具和程序范例。在DDK中還定義了一些設(shè)備驅(qū)動可以調(diào)用的系統(tǒng)底層服務(wù),象DMA服務(wù)、中斷服務(wù)、內(nèi)存管理服務(wù)、可安裝文件系統(tǒng)服務(wù)等等。這些都是編寫設(shè)備驅(qū)動所必須的。但Windows 95的DDK由于主要使用匯編語言描述。開發(fā)起來比較困難。因此,我們在Windows 95操作系統(tǒng)中同時采用了Numega公司的產(chǎn)品VtoolsD。VtoolsD是基于C/C++的,支持Borland C++和Visual C++,使用和維護都較Windows DDK容易。
摘 要: 結(jié)合“通用高速PCI總線目標模塊”的驅(qū)動程序設(shè)計,全面地討論了Windows設(shè)備(特別是PCI設(shè)備)驅(qū)動程序編寫時所面臨的主要問題及解決方案,并提出了封裝設(shè)備驅(qū)動的方法。
關(guān)鍵詞: PCI設(shè)備驅(qū)動程序 端口 內(nèi)存 中斷 封裝
在設(shè)計和使用PCI設(shè)備時,經(jīng)常要在PC機的軟件中訪問和控制硬件設(shè)備,但Windows操作系統(tǒng)(包括Windows95/98、Windows NT、Windows 2000為了保證系統(tǒng)的安全性、穩(wěn)定性和可移植性,對應(yīng)用程序訪問硬件資源加以限制,這就要求設(shè)計設(shè)備驅(qū)動程序以實現(xiàn)PC機的軟件對PCI設(shè)備的訪問。
Windows下的驅(qū)動程序不僅僅包括物理設(shè)備的驅(qū)動程序,也包括為文件系統(tǒng)等非物理設(shè)備編寫的虛擬設(shè)備驅(qū)動程序。為了簡化問題,下面只討論硬件物理設(shè)備的驅(qū)動程序。本文將以撏ㄓ酶咚伲校茫勺芟吣勘昴?閿[1]的驅(qū)動設(shè)計為例,探討PCI設(shè)備的驅(qū)動程序設(shè)計方案。我們開發(fā)了一套通用的PCI設(shè)備驅(qū)動程序,它可以完成一般PCI設(shè)備驅(qū)動所需的功能,可以作為其它PCI設(shè)備驅(qū)動開發(fā)的框架。
1 驅(qū)動程序的模式和開發(fā)工具的選擇
設(shè)備驅(qū)動程序是指管理某個外圍設(shè)備的一段代碼。驅(qū)動程序不會獨立地存在,而是操作系統(tǒng)的一部分。通過設(shè)備驅(qū)動程序,多個進程可以同時使用這些資源,從而可以實現(xiàn)多進程并行運行。在下文中,將調(diào)用設(shè)備驅(qū)動程序的pc機程序稱為用戶程序。
Windows 95和Windows NT采用的驅(qū)動程序體系不同,所以大多數(shù)情況下驅(qū)動程序也不能通用。如果設(shè)備需要在Windows 9X/NT下使用,一般至少要設(shè)計Windows 9X和Windows NT兩個驅(qū)動程序版本。wINDOWS 98 可以兼容Windows 95的驅(qū)動程序,同時它又推出一個新的Win32 Drivers Mode (WDM)驅(qū)動類型。Windows 98中有些設(shè)備(如USB設(shè)備)的驅(qū)動程序必須為WDM模式。這個新的類型實際是在Windows NT的驅(qū)動模型的基礎(chǔ)上增加了即插即用等內(nèi)容。WDM驅(qū)動也可以用在Windows 2000(先前叫Windows NT5.0)中。從長遠的角度看。今后開發(fā)人員只要開發(fā)WDM驅(qū)動就可以了,但從目前的市場情況來看,Windws 95是無法放棄的,所以WDM在近一兩年還無法替代其它類型的設(shè)備驅(qū)動。
Intel 80386以上的微處理器有4個優(yōu)先級別:0級、1級、2級和3級,一般操作系統(tǒng)運行于優(yōu)先級0級上,而用戶程序運行在3級上,在對硬件操作上有一些限制(具體的限制在不同的操作系統(tǒng)中是不同的)。Windows 95支持的驅(qū)動類型很多,但針對一般硬件設(shè)備而言,主要是VxD和打印機驅(qū)動兩類。VxD指的是Virtual Device Drivers。VxD運行在Intel系統(tǒng)的0級上,可以執(zhí)行特權(quán)級指令,對任何I/O設(shè)備有全部訪問權(quán),所以大多數(shù)硬件驅(qū)動程序都是VxD。VxD驅(qū)動通常以.vxd為擴展名,放在Windows\System目錄下,可以在Windws 95啟動時裝入,也可以在程序運行時根據(jù)需要動態(tài)地載入。動態(tài)加載有助于節(jié)約系統(tǒng)內(nèi)存和資源。但打印機驅(qū)動程序不是VxD,它運行在3級上。同Windows 95類似,Windows NT的驅(qū)動也有可以運行在0級的內(nèi)核模式(Kernel Mode)和運行在3極的用戶模式(User Mode)之分。由于Windows NT禁止用戶模式的程序訪問I/O端口(wINDOWS 95/98則允許用戶程序直接訪問I/O端口),直接控制物理設(shè)備的驅(qū)動程序都是內(nèi)核模式的。而我們設(shè)計的PCI通用驅(qū)動程序要求對各種硬件資源訪問,所以應(yīng)該選擇工作在0級的驅(qū)動程序模式。
開發(fā)設(shè)備驅(qū)動采用的主要開發(fā)工具是微軟為設(shè)備開發(fā)者提供的軟件包Device Driver Kit (DDK)。這個軟件包包括有關(guān)設(shè)備開發(fā)的文檔、編譯需要的頭文件和庫文件、調(diào)試工具和程序范例。在DDK中還定義了一些設(shè)備驅(qū)動可以調(diào)用的系統(tǒng)底層服務(wù),象DMA服務(wù)、中斷服務(wù)、內(nèi)存管理服務(wù)、可安裝文件系統(tǒng)服務(wù)等等。這些都是編寫設(shè)備驅(qū)動所必須的。但Windows 95的DDK由于主要使用匯編語言描述。開發(fā)起來比較困難。因此,我們在Windows 95操作系統(tǒng)中同時采用了Numega公司的產(chǎn)品VtoolsD。VtoolsD是基于C/C++的,支持Borland C++和Visual C++,使用和維護都較Windows DDK容易。
熱門點擊
- AMCCS5933在PCI板卡設(shè)計中的應(yīng)用
- USB端口的EMC解決方案
- 可編程多協(xié)議收發(fā)器MAX3160的原理與應(yīng)用
- HD7279A的原理與應(yīng)用
- 基于AVR單片機SPI的串行ADC接口設(shè)計
- 基于IP核的PCI總線接口設(shè)計與實現(xiàn)
- M-Bus終端收發(fā)芯片TSS721的原理及應(yīng)
- SN75176在微機多點通訊中的應(yīng)用
- USB總線的體系結(jié)構(gòu)
- 三電平SIM/SMART 卡接口電路
推薦技術(shù)資料
- 高頻、高效音頻功放IC模塊
- 8英寸180納米GaN固態(tài)變壓器(SST)
- 新一代光纖通信光收發(fā)器接收器芯
- 第三代半導(dǎo)體SiC(碳化硅)和
- 全球半導(dǎo)體產(chǎn)業(yè)終端市場需求及技
- GaN與SiC材料單片集成技術(shù)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究