關于ISA設備的驅動程序轉換為PCI設備的Windows驅動程序設計
發布時間:2007/8/30 0:00:00 訪問次數:884
摘要:本文主要針對已經研制好的ISA設備通過加上一個簡單的PCI接口芯片便能正常工作在PCI模式下,實現由ISA擴展板到PCI擴展板的轉換。這時我們必須重新編寫設備的驅動程序才能使設備在Windows/Nt操作系統下正常工作。這里主要給出Windows下的解決方案和程序實例。
關鍵詞:ISA設備驅動程序 PCI設備驅動程序 IRQ PCI配置空間
隨著計算機和通信技術的高速發展,ISA總線在速度、功能上已經成為系統的瓶頸,而功能更強大的PCI總線成為首選。這時對現有的ISA設備稍加設計就可在PCI總線下工作就顯得非常總要,但我們必須重新編寫設備的驅動程序才能使設備在Windows/Nt操作系統下正常工作。
開發的驅動程序是Win32 Drivers Mode(WDM)類型,使用的開發工具是微軟提供的Device Driver Kit(DDK)和Vc++6.0,在進行驅動程序的調試時使用Numega公司的SoftIce產品。
1 .ISA設備與PCI設備的Windows驅動程序的比較
(1).ISA設備與PCI設備驅動程序獲得硬件資源途徑不同
一個ISA設備驅動程序的資源是固定不變的,它是通過.inf文件的[logconfig]節來配置的。如下面的例子:
[Xxx.LogConfig]
IOConfig=220-22f
IRQConfig=6
.inf中此節說明此硬件資源的I/O地址范圍是220H到22FH,IRQ為6。
一個PCI設備驅動程序的資源是操作系統自動分配的,它是通過設備ID號和廠商ID號獲得設備的物理位置:總線號、器件號和功能號,并利用它們尋址PCI配置空間,接著從配置空間獲得硬件資源。其中包括:中斷號、端口地址等。
(2).ISA設備與PCI設備驅動程序對中斷處理不同
一個ISA設備驅動程序的中斷模式可以是LevelSensitive也可以是Latched,而且中斷向量是否與其它設備共享都可以。
但是一個PCI設備驅動程序的中斷模式必須是LevelSensitive,而且中斷向量必須是共享的。
(3).ISA設備與PCI設備驅動程序安裝時需要編寫的.inf文件不同
對于ISA設備,在安裝時.inf文件必須有[logconfig]節,而對于PCI設備,在安裝時.inf文件必須有[Manufacturer]節,來指明設備ID號和廠商ID號,以便使硬件獲取系統資源。如:
[Manufacturer]
%PLX% = PLX.Mfg
[PLX.Mfg]
"PCI 9052RDK-860 Board" =DDInstall_9052,PCI\VEN_10b5&DEV_9050
其設備ID號為9050H,廠商ID號為10B5H。
2 驅動程序的實現
通過上面的比較,我們知道只要對原有的ISA設備的驅動程序的獲取資源部分作一定的改變,并在安裝時對inf文件進行必要的修改就可以完成PCI模式的驅動程序。
以下示例僅供參考。
NTSTATUS StartDevice(PDEVICE_OBJECT fdo,
PCM_PARTIAL_RESOURCE_LIST ResourceListRaw,
PCM_PARTIAL_RESOURCE_LIST ResourceListTranslated)
{
U32 i;
 
摘要:本文主要針對已經研制好的ISA設備通過加上一個簡單的PCI接口芯片便能正常工作在PCI模式下,實現由ISA擴展板到PCI擴展板的轉換。這時我們必須重新編寫設備的驅動程序才能使設備在Windows/Nt操作系統下正常工作。這里主要給出Windows下的解決方案和程序實例。
關鍵詞:ISA設備驅動程序 PCI設備驅動程序 IRQ PCI配置空間
隨著計算機和通信技術的高速發展,ISA總線在速度、功能上已經成為系統的瓶頸,而功能更強大的PCI總線成為首選。這時對現有的ISA設備稍加設計就可在PCI總線下工作就顯得非常總要,但我們必須重新編寫設備的驅動程序才能使設備在Windows/Nt操作系統下正常工作。
開發的驅動程序是Win32 Drivers Mode(WDM)類型,使用的開發工具是微軟提供的Device Driver Kit(DDK)和Vc++6.0,在進行驅動程序的調試時使用Numega公司的SoftIce產品。
1 .ISA設備與PCI設備的Windows驅動程序的比較
(1).ISA設備與PCI設備驅動程序獲得硬件資源途徑不同
一個ISA設備驅動程序的資源是固定不變的,它是通過.inf文件的[logconfig]節來配置的。如下面的例子:
[Xxx.LogConfig]
IOConfig=220-22f
IRQConfig=6
.inf中此節說明此硬件資源的I/O地址范圍是220H到22FH,IRQ為6。
一個PCI設備驅動程序的資源是操作系統自動分配的,它是通過設備ID號和廠商ID號獲得設備的物理位置:總線號、器件號和功能號,并利用它們尋址PCI配置空間,接著從配置空間獲得硬件資源。其中包括:中斷號、端口地址等。
(2).ISA設備與PCI設備驅動程序對中斷處理不同
一個ISA設備驅動程序的中斷模式可以是LevelSensitive也可以是Latched,而且中斷向量是否與其它設備共享都可以。
但是一個PCI設備驅動程序的中斷模式必須是LevelSensitive,而且中斷向量必須是共享的。
(3).ISA設備與PCI設備驅動程序安裝時需要編寫的.inf文件不同
對于ISA設備,在安裝時.inf文件必須有[logconfig]節,而對于PCI設備,在安裝時.inf文件必須有[Manufacturer]節,來指明設備ID號和廠商ID號,以便使硬件獲取系統資源。如:
[Manufacturer]
%PLX% = PLX.Mfg
[PLX.Mfg]
"PCI 9052RDK-860 Board" =DDInstall_9052,PCI\VEN_10b5&DEV_9050
其設備ID號為9050H,廠商ID號為10B5H。
2 驅動程序的實現
通過上面的比較,我們知道只要對原有的ISA設備的驅動程序的獲取資源部分作一定的改變,并在安裝時對inf文件進行必要的修改就可以完成PCI模式的驅動程序。
以下示例僅供參考。
NTSTATUS StartDevice(PDEVICE_OBJECT fdo,
PCM_PARTIAL_RESOURCE_LIST ResourceListRaw,
PCM_PARTIAL_RESOURCE_LIST ResourceListTranslated)
{
U32 i;