基于PCI總線的數(shù)據(jù)采集卡設(shè)計
(4)在“Define and Test Resources for Your Device”窗口中,設(shè)置采集卡的I/O地址及變量名,對于即插即用(Plug-and-play)設(shè)備,Windriver會自動發(fā)現(xiàn)其所用到的硬件資源(如:I/O范圍,存儲器范圍及中斷號等)(如圖3)。在此可對采集卡的I/O地址進行讀寫測試,以便驗證硬件設(shè)計是否正確。
(5)在“Select Code Generation Options”窗口中,選中合適的開發(fā)語言及開發(fā)平臺。在此選擇“Ms Developer Studic6,5”(即Microsoft VisualC++6/5),以便Windriver生成合適的驅(qū)動程序框架及相應(yīng)的API函數(shù)(如圖4)。
(6)保存Windriver產(chǎn)生的驅(qū)動開發(fā)工程后,Windriver會自動打開相應(yīng)的開發(fā)環(huán)境(此處為:Microsoft VisualC++6),以便開發(fā)人員進行后續(xù)開發(fā)。
通過以上步驟,Windriver生成一個基于Visual C++語言的程序框架,開發(fā)人員可以在此框架的基礎(chǔ)上進行修改,加入自己的程序,實現(xiàn)對硬件的操作?,F(xiàn)以筆者編制的程序(工程文件名為ADC)為例進行介紹。
在程序初始化階段,先調(diào)用PCI_Get_WD_handle(),判斷驅(qū)動程序windrvr6.sys是否已被加載,如果驅(qū)動程序已被加載,則調(diào)用ADC_LocateAndOpenBoard()函數(shù),打開數(shù)據(jù)采集卡。在退出應(yīng)用程序前,需先調(diào)用ADC_Close()函數(shù),關(guān)閉數(shù)據(jù)采集卡。
對MAX1338和8路I/O的寄存器操作可通過ADC_ReadByte()、ADC_WriteByte()兩個函數(shù)完成。對CH365內(nèi)部配置寄存器的讀寫可通過ADC_Read-PCIReg()、ADC_WritePCIReg()兩個函數(shù)完成。完成應(yīng)用程序的開發(fā)后,數(shù)據(jù)采集卡在其他的PC機上工作時,需提供windrvr6.sys、windrvr6.inf、wd_utils.dll、數(shù)據(jù)采集卡的,inf文件以及自己開發(fā)的應(yīng)用程序或DLL。以便于PC機安裝相應(yīng)的驅(qū)動程序,對板卡進行配置、操作。本文根據(jù)筆者的實踐經(jīng)驗,簡要介紹了PCI擴展卡的開發(fā)流程,給出了一套快速可行的解決方案。該方案簡單易行、調(diào)試方便,可使工程技術(shù)人員迅速掌握PCI總線的開發(fā)技術(shù),從而設(shè)計出符合工程需求的PCI擴展卡。
tcp/ip相關(guān)文章:tcp/ip是什么
評論