時間:2008-07-22 09:57:00來源:yangliu
圖1 WDM設備對象和驅動程序的層次結構[/align]
1.2 開發(fā)工具簡介
開發(fā)驅動程序的軟件很多,如NuMega公司的DriverStudio、Jungo公司的WinDriver和Microsoft公司的DDK等。在使用中,雖然利用DDK開發(fā)的驅動程序代碼非常簡潔,結構清晰,效率也高,但是開發(fā)難度較大[3]。利用DriverStudio、WinDriver等第三方開發(fā)工具則使用簡單,開發(fā)速度較快。因此選用NuMega公司提供的DriverStudio作為開發(fā)工具。
NuMega公司的DriverStudio是一套用來簡化微軟Windows平臺下設備驅動程序的開發(fā)、調試和測試的工具包。DriverStudio包括DriverWorks、DriverNetworks、SoftICE和VToolsD等工具模塊。其中,DriverWorks包含一個非常完善的源代碼生成工具(DriverWizard)以及相應的類庫和驅動程序樣本,它提供了在C++下進行設備驅動程序開發(fā)的支持。
2 運動控制卡的硬件結構
所設計的運動控制卡采用TI公司的TMS320LF2407 DSP芯片為核心處理器。該運動控制卡的硬件系統(tǒng)包括PCI接口子模塊、數(shù)字信號處理器(DSP)子模塊和軸控制接口子模塊。
該運動控制卡的PCI接口采用PLX公司的PCI9052接口芯片,這是PLX技術公司為擴展適配板卡推出的能提供一種混合高性能PCI總線目標模式的接口芯片。它可與多種局部總線相連,并具有異步操作、中斷產(chǎn)生器、FIFO等特點。運動控制卡與上位PC機通過PCI總線進行連接,PCI接口子模塊通過雙端口存儲器RAM器件IDT7026與DSP子模塊連接。雙端口存儲器(RAM)是一個雙向FIFO數(shù)據(jù)存儲器,起數(shù)據(jù)緩沖的作用。軸控制接口子模塊則通過CPLD(復雜可編程邏輯器件)與DSP子模塊連接。運動控制卡硬件結構示意圖如圖2所示[4]。
[align=center]
圖2 運動控制卡硬件結構示意圖[/align]
3 運動控制卡驅動程序的設計
使用DriverWorks為該運動控制卡開發(fā)WDM驅動程序主要有三個步驟:創(chuàng)建WDM驅動程序框架;實現(xiàn)驅動程序的具體功能;生成WDM驅動程序。下面是借助DriverWorks設計運動控制卡WDM驅動程序的具體方法。
3.1 使用DriverWizard生成WDM驅動程序框架
DriverWizard是DriverWorks創(chuàng)建WDM框架程序的工具。在創(chuàng)建一個PCI設備的WDM驅動程序框架時,共有十一步,其中以下幾點需特別注意:
?。?)第四步:選擇硬件設備所支持的總線類型,這里選PCI,并根據(jù)具體硬件填寫PCI Vendor ID、PCI Device ID、PCI Subsystem ID和PCI Revision ID。這些參數(shù)可以從硬件生產(chǎn)廠家得到,如果所填寫的參數(shù)和目標PCI設備寄存器中不一致的話系統(tǒng)將安裝不上此驅動程序。
(2)第六步:選擇驅動程序支持的功能項,選中Read、Write、Device IO Control和Clean up四個復選框。
?。?)第七步:選擇I/O請求IRP處理的方式,選擇DriverManaged,由驅動程序管理的StartIO處理排隊隊列,并選擇讀寫請求分別進行排隊隊列處理。
?。?) 第九步:選擇設備文件中的類名和接口類型,類名通常取默認值,選擇GUID接口方式作為應用程序打開設備的方式。在資源欄中分別點擊Add IO Port (s)、Add Memory Range. . .和Add IRQ. . .聲明所需的資源。
?。?) 第十一步:為了調試方便和更好地了解WDM驅動程序的運行過程,選擇讓系統(tǒng)生成控制臺測試程序和用SoftICE調試的跟蹤代碼 (Trace Code)。
至此,驅動程序框架已形成。DriverWizard生成了兩個類:一個是驅動程序文件中的類,主要完成WDM的DriverEntry和AddDevice例程;另一個是設備文件中的類,主要完成與硬件交互的例程。
3.2 驅動程序功能的實現(xiàn)
DriverWizard創(chuàng)建的WDM驅動程序框架中包含了很多例程。這些例程可分為兩種:必需的基本例程和根據(jù)需要可選擇的擴展例程。根據(jù)需要修改相應的例程即可實現(xiàn)該運動控制卡驅動程序的具體功能。
3.2.1初始化驅動程序——DriverEntry例程
DriverEntry例程負責驅動程序的初始化,所有的驅動程序都必須包含DriverEntry例程。當裝載驅動程序時,PnP管理器為每個驅動程序調用一次DriverEntry例程。DriverEntry用以初始化驅動程序范圍的數(shù)據(jù)結構和資源。
DriverEntry例程主要有以下三個功能:
(1) 設置AddDevice、Unload、Dispatch和其他例程的入口指針
?。?) 可以從注冊表中獲取一些必要的信息以初始化驅動程序
?。?) 初始化其他的在驅動程序范圍內的數(shù)據(jù)結構和資源
3.2.2 串行讀例程——SerialRead例程
在該驅動程序中,對IRP進行串行處理采用的是由驅動程序管理的IRP隊列。當硬件設備處于忙狀態(tài)時,將IRP排隊;當硬件設備處于空閑狀態(tài)時,將排隊的IRP取出處理。SerialRead例程是擴展例程,向SerialRead例程中添加功能代碼就可以實現(xiàn)PC機對運動控制卡的串行讀操作,應用程序可以通過該WDM驅動程序讀取雙端口RAM中的數(shù)據(jù)及參數(shù)。
3.2.4 串行寫例程——SerialWrite例程
在該驅動程序中,要實現(xiàn)PC機對運動控制卡的串行寫,需要使用SerialWrite例程。串行寫操作主要負責處理運動函數(shù)原型的解讀,并將解讀后的指令寫入雙端口RAM中。
3.3 生成WDM驅動程序
設計完成后的WDM驅動程序將生成一個工作區(qū) (Workspace)和兩個工程 (Project),生成的工作區(qū)包括了驅動程序工程和應用程序工程。分別選擇兩個工程,并分別將其設置成為當前活動工程,用Visual C++6.0對其進行編譯。對于驅動程序的編譯,不用進行任何設置,單擊Build圖標即可生成后綴名為.sys的驅動程序文件。
4 運動控制卡驅動程序的安裝與應用
生成后綴名為.sys的驅動程序后,安裝之前,首先要修改INF文件,然后將其拷貝到“. .\sys\objchk\i386”目錄下。修改INF文件只要將文件雙引號中的提示改為相應的內容即可生成設備信息文件。對該驅動程序的INF文件作如下修改:
[Strings]
ProviderName =“數(shù)控研究中心” //公司名稱
MfgName =“華南理工大學機械與工程學院” //硬件制造商名稱
DeviceDesc =“高級運動控制卡V3.2” //設備描述
DeviceClassName =“高級運動控制” //設備類描述
SvcDesc="運動控制" //服務描述
使用控制面板中的添加新硬件來搜索新硬件,根據(jù)提示指定INF文件和編譯后生成的.sys驅動程序文件,系統(tǒng)就可以自動安裝新硬件的驅動程序。
驅動程序安裝好之后,在Windows 2000環(huán)境下對運動控制卡及其設備驅動程序進行實際測試[4]。測試結果表明,此設備驅動程序能使運動控制卡在Windows 2000環(huán)境穩(wěn)定工作,并能對多軸的運動位置和速度進行準確控制。同時,將該驅動程序移植到Windows 98/XP系統(tǒng)中,也能驅動運動控制卡正常工作。
5 結束語
傳統(tǒng)的驅動程序都是用DDK開發(fā),開發(fā)效率不高。本文以基于PCI總線的運動控制卡為研究對象,以DriverWorks為工具,方便快捷地設計完成了設備驅動程序。在Windows環(huán)境下對運動控制卡及其驅動程序進行測試,結果表明,此驅動程序能使該運動控制卡在Windows環(huán)境下穩(wěn)定工作。實質上,驅動程序仍滿足DDK對WDM的要求,調用的仍是DDK所提供的基本函數(shù)。利用DriverStudio對數(shù)控系統(tǒng)中的運動控制卡開發(fā)驅動程序,對數(shù)控系統(tǒng)實現(xiàn)開放式軟件結構及人機界面具有重要意義。
本文作者創(chuàng)新點:利用DriverStudio來設計運動控制卡的WDM驅動程序,實現(xiàn)了在Windows 2000環(huán)境下,上位機和運動控制卡的正常通訊,并能根據(jù)上位機的指令通過運動控制卡對多軸運動位置和速度進行準確控制。
參考文獻:
[1] 司玉美,鄒榮士,郭立紅. PCI串口通信卡WDM 驅動程序設計與實現(xiàn)[ J]. 微計算機信息,2005,22,第145頁
[2] 武安河,邰銘,于洪濤. Windows 2000/XP WDM設備驅動程序開發(fā)[ M]. 電子工業(yè)出版社,2003
[3] 武安河,周利莉. Windows設備驅動程序(VxD與WDM)開發(fā)實務[M]. 電子工業(yè)出版社,2001
[4] 朱金華. 基于PCI總線的DSP運動控制卡研發(fā)[D]. 廣州:華南理工大學機械工程學院,2004
基于PCI總線運動控制卡WDM驅動程序設計標簽:
傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為傳動網(wǎng)(www.surachana.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產(chǎn)品新聞
更多>2025-10-31
2025-10-22
2025-10-17
2025-10-11
2025-10-09
2025-09-23