關(guān)于ISA設(shè)備的驅(qū)動(dòng)程序轉(zhuǎn)換為PCI設(shè)備的Windows驅(qū)動(dòng)程序設(shè)計(jì)
發(fā)布時(shí)間:2007/8/30 0:00:00 訪問次數(shù):903
摘要:本文主要針對(duì)已經(jīng)研制好的ISA設(shè)備通過加上一個(gè)簡單的PCI接口芯片便能正常工作在PCI模式下,實(shí)現(xiàn)由ISA擴(kuò)展板到PCI擴(kuò)展板的轉(zhuǎn)換。這時(shí)我們必須重新編寫設(shè)備的驅(qū)動(dòng)程序才能使設(shè)備在Windows/Nt操作系統(tǒng)下正常工作。這里主要給出Windows下的解決方案和程序?qū)嵗?br>
關(guān)鍵詞:ISA設(shè)備驅(qū)動(dòng)程序 PCI設(shè)備驅(qū)動(dòng)程序 IRQ PCI配置空間
隨著計(jì)算機(jī)和通信技術(shù)的高速發(fā)展,ISA總線在速度、功能上已經(jīng)成為系統(tǒng)的瓶頸,而功能更強(qiáng)大的PCI總線成為首選。這時(shí)對(duì)現(xiàn)有的ISA設(shè)備稍加設(shè)計(jì)就可在PCI總線下工作就顯得非?傄,但我們必須重新編寫設(shè)備的驅(qū)動(dòng)程序才能使設(shè)備在Windows/Nt操作系統(tǒng)下正常工作。
開發(fā)的驅(qū)動(dòng)程序是Win32 Drivers Mode(WDM)類型,使用的開發(fā)工具是微軟提供的Device Driver Kit(DDK)和Vc++6.0,在進(jìn)行驅(qū)動(dòng)程序的調(diào)試時(shí)使用Numega公司的SoftIce產(chǎn)品。
1 .ISA設(shè)備與PCI設(shè)備的Windows驅(qū)動(dòng)程序的比較
(1).ISA設(shè)備與PCI設(shè)備驅(qū)動(dòng)程序獲得硬件資源途徑不同
一個(gè)ISA設(shè)備驅(qū)動(dòng)程序的資源是固定不變的,它是通過.inf文件的[logconfig]節(jié)來配置的。如下面的例子:
[Xxx.LogConfig]
IOConfig=220-22f
IRQConfig=6
.inf中此節(jié)說明此硬件資源的I/O地址范圍是220H到22FH,IRQ為6。
一個(gè)PCI設(shè)備驅(qū)動(dòng)程序的資源是操作系統(tǒng)自動(dòng)分配的,它是通過設(shè)備ID號(hào)和廠商ID號(hào)獲得設(shè)備的物理位置:總線號(hào)、器件號(hào)和功能號(hào),并利用它們尋址PCI配置空間,接著從配置空間獲得硬件資源。其中包括:中斷號(hào)、端口地址等。
(2).ISA設(shè)備與PCI設(shè)備驅(qū)動(dòng)程序?qū)χ袛嗵幚聿煌?br>
一個(gè)ISA設(shè)備驅(qū)動(dòng)程序的中斷模式可以是LevelSensitive也可以是Latched,而且中斷向量是否與其它設(shè)備共享都可以。
但是一個(gè)PCI設(shè)備驅(qū)動(dòng)程序的中斷模式必須是LevelSensitive,而且中斷向量必須是共享的。
(3).ISA設(shè)備與PCI設(shè)備驅(qū)動(dòng)程序安裝時(shí)需要編寫的.inf文件不同
對(duì)于ISA設(shè)備,在安裝時(shí).inf文件必須有[logconfig]節(jié),而對(duì)于PCI設(shè)備,在安裝時(shí).inf文件必須有[Manufacturer]節(jié),來指明設(shè)備ID號(hào)和廠商ID號(hào),以便使硬件獲取系統(tǒng)資源。如:
[Manufacturer]
%PLX% = PLX.Mfg
[PLX.Mfg]
"PCI 9052RDK-860 Board" =DDInstall_9052,PCI\VEN_10b5&DEV_9050
其設(shè)備ID號(hào)為9050H,廠商ID號(hào)為10B5H。
2 驅(qū)動(dòng)程序的實(shí)現(xiàn)
通過上面的比較,我們知道只要對(duì)原有的ISA設(shè)備的驅(qū)動(dòng)程序的獲取資源部分作一定的改變,并在安裝時(shí)對(duì)inf文件進(jìn)行必要的修改就可以完成PCI模式的驅(qū)動(dòng)程序。
以下示例僅供參考。
NTSTATUS StartDevice(PDEVICE_OBJECT fdo,
PCM_PARTIAL_RESOURCE_LIST ResourceListRaw,
PCM_PARTIAL_RESOURCE_LIST ResourceListTranslated)
{
U32 i;
 
摘要:本文主要針對(duì)已經(jīng)研制好的ISA設(shè)備通過加上一個(gè)簡單的PCI接口芯片便能正常工作在PCI模式下,實(shí)現(xiàn)由ISA擴(kuò)展板到PCI擴(kuò)展板的轉(zhuǎn)換。這時(shí)我們必須重新編寫設(shè)備的驅(qū)動(dòng)程序才能使設(shè)備在Windows/Nt操作系統(tǒng)下正常工作。這里主要給出Windows下的解決方案和程序?qū)嵗?br>
關(guān)鍵詞:ISA設(shè)備驅(qū)動(dòng)程序 PCI設(shè)備驅(qū)動(dòng)程序 IRQ PCI配置空間
隨著計(jì)算機(jī)和通信技術(shù)的高速發(fā)展,ISA總線在速度、功能上已經(jīng)成為系統(tǒng)的瓶頸,而功能更強(qiáng)大的PCI總線成為首選。這時(shí)對(duì)現(xiàn)有的ISA設(shè)備稍加設(shè)計(jì)就可在PCI總線下工作就顯得非?傄,但我們必須重新編寫設(shè)備的驅(qū)動(dòng)程序才能使設(shè)備在Windows/Nt操作系統(tǒng)下正常工作。
開發(fā)的驅(qū)動(dòng)程序是Win32 Drivers Mode(WDM)類型,使用的開發(fā)工具是微軟提供的Device Driver Kit(DDK)和Vc++6.0,在進(jìn)行驅(qū)動(dòng)程序的調(diào)試時(shí)使用Numega公司的SoftIce產(chǎn)品。
1 .ISA設(shè)備與PCI設(shè)備的Windows驅(qū)動(dòng)程序的比較
(1).ISA設(shè)備與PCI設(shè)備驅(qū)動(dòng)程序獲得硬件資源途徑不同
一個(gè)ISA設(shè)備驅(qū)動(dòng)程序的資源是固定不變的,它是通過.inf文件的[logconfig]節(jié)來配置的。如下面的例子:
[Xxx.LogConfig]
IOConfig=220-22f
IRQConfig=6
.inf中此節(jié)說明此硬件資源的I/O地址范圍是220H到22FH,IRQ為6。
一個(gè)PCI設(shè)備驅(qū)動(dòng)程序的資源是操作系統(tǒng)自動(dòng)分配的,它是通過設(shè)備ID號(hào)和廠商ID號(hào)獲得設(shè)備的物理位置:總線號(hào)、器件號(hào)和功能號(hào),并利用它們尋址PCI配置空間,接著從配置空間獲得硬件資源。其中包括:中斷號(hào)、端口地址等。
(2).ISA設(shè)備與PCI設(shè)備驅(qū)動(dòng)程序?qū)χ袛嗵幚聿煌?br>
一個(gè)ISA設(shè)備驅(qū)動(dòng)程序的中斷模式可以是LevelSensitive也可以是Latched,而且中斷向量是否與其它設(shè)備共享都可以。
但是一個(gè)PCI設(shè)備驅(qū)動(dòng)程序的中斷模式必須是LevelSensitive,而且中斷向量必須是共享的。
(3).ISA設(shè)備與PCI設(shè)備驅(qū)動(dòng)程序安裝時(shí)需要編寫的.inf文件不同
對(duì)于ISA設(shè)備,在安裝時(shí).inf文件必須有[logconfig]節(jié),而對(duì)于PCI設(shè)備,在安裝時(shí).inf文件必須有[Manufacturer]節(jié),來指明設(shè)備ID號(hào)和廠商ID號(hào),以便使硬件獲取系統(tǒng)資源。如:
[Manufacturer]
%PLX% = PLX.Mfg
[PLX.Mfg]
"PCI 9052RDK-860 Board" =DDInstall_9052,PCI\VEN_10b5&DEV_9050
其設(shè)備ID號(hào)為9050H,廠商ID號(hào)為10B5H。
2 驅(qū)動(dòng)程序的實(shí)現(xiàn)
通過上面的比較,我們知道只要對(duì)原有的ISA設(shè)備的驅(qū)動(dòng)程序的獲取資源部分作一定的改變,并在安裝時(shí)對(duì)inf文件進(jìn)行必要的修改就可以完成PCI模式的驅(qū)動(dòng)程序。
以下示例僅供參考。
NTSTATUS StartDevice(PDEVICE_OBJECT fdo,
PCM_PARTIAL_RESOURCE_LIST ResourceListRaw,
PCM_PARTIAL_RESOURCE_LIST ResourceListTranslated)
{
U32 i;
 
熱門點(diǎn)擊
- VxWorks下UDP協(xié)議棧效率的研究與改進(jìn)
- 硬實(shí)時(shí)操作系統(tǒng)-RTLinux
- 指針、結(jié)構(gòu)體、聯(lián)合體的安全規(guī)范
- 基于Qt/Embedded的微波信號(hào)發(fā)生器軟
- 單片機(jī)IP技術(shù)在智能小區(qū)系統(tǒng)中的應(yīng)用
- 關(guān)于ISA設(shè)備的驅(qū)動(dòng)程序轉(zhuǎn)換為PCI設(shè)備的W
- 在MOTOROLA A68K系列MCU上移植
- 嵌入式Linux的動(dòng)態(tài)擴(kuò)展技術(shù)研究
- 矢量字庫在嵌入式機(jī)頂盒中的應(yīng)用
- 具有DSP功能的16位微控制器80296SA
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究