高速PCI總線接口卡的開(kāi)發(fā)
1.5.2 DSP程序開(kāi)發(fā)
TI公司提供了DSP專用仿真器和仿真開(kāi)發(fā)系統(tǒng),C2000系列的開(kāi)發(fā)系統(tǒng)最新版本為CCS2.2。對(duì)于不同的仿真器,只要安裝驅(qū)動(dòng)程序即可使用該開(kāi)發(fā)系統(tǒng)進(jìn)行仿真。仿真器選用最新款的帶USB接口的ICETEK51000USBV2.0仿真器。由于該仿真器使用USB接口,所以不需外接供電電源,實(shí)用又方便。
由于硬件設(shè)計(jì)時(shí)擴(kuò)展了可轉(zhuǎn)換的存儲(chǔ)器,進(jìn)行仿真時(shí)把存儲(chǔ)器接成程序存儲(chǔ)器,程序可以直接轉(zhuǎn)載到擴(kuò)展的存儲(chǔ)器中進(jìn)行調(diào)試,免去了往FLASH中燒寫的麻煩,程序調(diào)試完畢后再固化到FLASH中。
2 PCI總線接口卡的軟件驅(qū)動(dòng)開(kāi)發(fā)
PCI卡的硬件調(diào)試需要結(jié)合軟件程序的調(diào)試來(lái)完成。PCI卡的驅(qū)動(dòng)程序開(kāi)發(fā)有多種途徑,驅(qū)動(dòng)開(kāi)發(fā)工具也有多種選擇。
2.1 驅(qū)動(dòng)開(kāi)發(fā)工具的選取
(1)DDK(Driver Device Kit)
許多VMM服務(wù)都使用寄存器的調(diào)用方式,使用起來(lái)不是很方便,沒(méi)有4深厚的匯編語(yǔ)言及硬件基礎(chǔ)很難在短時(shí)間內(nèi)開(kāi)發(fā)出設(shè)備驅(qū)動(dòng)程序。Micorosoft公司提供了設(shè)備驅(qū)動(dòng)程序工具箱(DDK),它是基于匯編語(yǔ)言的編程方式的,DDK的優(yōu)點(diǎn)是可以開(kāi)發(fā)核心態(tài)的真正意義上的驅(qū)動(dòng)程序,開(kāi)發(fā)出來(lái)的驅(qū)動(dòng)程序效率是最高的。
(2)DS(Driver Studio)
DS是一個(gè)驅(qū)動(dòng)程序集成開(kāi)發(fā)包,其中包括了DriverAgent、VtoolsD、DriverWorks、SoftICE Driver Edition、BoundsChecker Driver Edition、DriverWorkbenc、FieldAgent for Drivers等。幾中常見(jiàn)的DS驅(qū)動(dòng)開(kāi)發(fā)工具介紹如下:
·Drivergent為Win32應(yīng)用程序提供了訪問(wèn)硬件的接口。
·VtoolsD支持Windows95和Windows98的驅(qū)動(dòng)程序開(kāi)發(fā)(VxD)。VtoolsD包括代碼生成器、實(shí)時(shí)接口庫(kù)和可以作為開(kāi)發(fā)一類驅(qū)動(dòng)程序的例子程序。
·DriverWorks包括為Windows NT和Win32 Driver Model(WDM)開(kāi)發(fā)驅(qū)動(dòng)程序的完整的開(kāi)發(fā)框架,同時(shí)也支持Windows98和Windows2000下驅(qū)動(dòng)程序的開(kāi)發(fā)。DriverWorks包含一個(gè)復(fù)雜的代碼生成工具(Driver Wizard),其中含有支持C++下編程的類庫(kù)和例子程序。
(3) WinDriver
WinDriver是KRF-Tech公司的一套PCI驅(qū)動(dòng)程序開(kāi)發(fā)包。它改變了傳統(tǒng)驅(qū)動(dòng)程序開(kāi)發(fā)的方法和思路,極大地簡(jiǎn)化了驅(qū)動(dòng)程序的編制;同時(shí)又沒(méi)有犧牲驅(qū)動(dòng)程序的性能,是一套高效、快捷的PCI驅(qū)動(dòng)程序開(kāi)發(fā)軟件包,特別適合專業(yè)硬件人員使用。
利用WinDriver開(kāi)發(fā)驅(qū)動(dòng)程序不需要熟悉操作系統(tǒng)的內(nèi)核,整個(gè)驅(qū)動(dòng)程序中的所有函數(shù)都是工作在用戶態(tài)下的,通過(guò)與WinDriver的.Vxd或者.Sys文件交互可達(dá)到驅(qū)動(dòng)硬件的目的。由于是一個(gè)用戶態(tài)程序,效率的高低也就成了人們選擇WinDriver時(shí)關(guān)心的問(wèn)題。大量實(shí)踐數(shù)據(jù)表明,WinDriver并沒(méi)有通過(guò)犧牲系統(tǒng)性能來(lái)?yè)Q取驅(qū)動(dòng)程序的快速開(kāi)發(fā)。本設(shè)計(jì)中選用WinDriver來(lái)開(kāi)發(fā)驅(qū)動(dòng)程序。
2.2 WinDriver開(kāi)發(fā)驅(qū)動(dòng)程序
在WinDriver的體系結(jié)構(gòu)中,WinDriver Kernet處于中心位置,它提供的用戶態(tài)庫(kù)函數(shù)(API)實(shí)際就是對(duì)WinDriver Kernel中實(shí)現(xiàn)的功能進(jìn)行調(diào)用。幾乎所有用戶同硬件的交互都是通過(guò)WinDriverKernel來(lái)實(shí)現(xiàn)的,這樣就極大地解放了開(kāi)發(fā)人員。用戶的主要任務(wù)就是利用WinDriver提供的用戶動(dòng)態(tài)函數(shù)庫(kù)(API函數(shù)庫(kù))在用戶態(tài)實(shí)現(xiàn)自己的驅(qū)動(dòng)程序代碼,完成硬件驅(qū)動(dòng)的功能。
基于WinDriver的設(shè)備驅(qū)動(dòng)程序主要分為驅(qū)動(dòng)程序和應(yīng)用程序兩部分。利用DriverWizard生成.inf驅(qū)動(dòng)程序,安裝該驅(qū)動(dòng)程序后,系統(tǒng)就根據(jù)EEPROM中的配置信息給板卡分配資源,接下來(lái)就可以進(jìn)行應(yīng)用程序的開(kāi)發(fā)了。利用DriverWizard生成應(yīng)用程序框架后,用戶把生成的框架整理到自己的程序中,再添加實(shí)際應(yīng)用中需要的功能就完成了軟件的開(kāi)發(fā)。
PCI總線是計(jì)算機(jī)總線的樞紐,其速度是一般總線望塵莫及的,其應(yīng)用也十分廣泛。利用本文介紹的方法開(kāi)發(fā)出的板卡可以運(yùn)用于各種高速數(shù)據(jù)傳輸場(chǎng)合中,發(fā)雷達(dá)系統(tǒng)仿真控制、工業(yè)總線控制、高速數(shù)據(jù)采集、圖像采集等。本設(shè)計(jì)在對(duì)芯片的選型時(shí)本著經(jīng)濟(jì)實(shí)用的原則,開(kāi)發(fā)出的板卡性價(jià)比較高。
評(píng)論