資源描述:
《linux系統(tǒng)pci設(shè)備驅(qū)動(dòng)程序開發(fā)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、維普資訊http://www.cqvip.com計(jì)算機(jī)測(cè)量與控制.2005.13(11)ComouterMeasurement&Control·1289·文章編號(hào):16714598(2005)11—1289—03中圖分類號(hào):文獻(xiàn)標(biāo)識(shí)碼:ALinux系統(tǒng)PCI設(shè)備驅(qū)動(dòng)程序開發(fā)董春橋,李凱(華中科技大學(xué)環(huán)境學(xué)院,湖北武漢430074)摘要:為了促進(jìn)“Linux+PCI”技術(shù)在工控領(lǐng)域中的應(yīng)用,通過對(duì)Linux系統(tǒng)中PCI局部總線規(guī)范實(shí)現(xiàn)機(jī)制和Linux設(shè)備驅(qū)動(dòng)模塊的分析,給出了PCI設(shè)備驅(qū)動(dòng)程序的基本結(jié)構(gòu)、內(nèi)容及開發(fā)方法;最后
2、用一個(gè)基于Linux的數(shù)據(jù)采集系統(tǒng)PCI設(shè)備驅(qū)動(dòng)程序開發(fā)實(shí)例證明該方法是可行的,而且具有通用性。關(guān)鍵詞:L~nux;BIOS;PCI;設(shè)備驅(qū)動(dòng)程序Development0fPCIDeviceDriversofLinuxDongChunqiao.LiKai(HuazhongUniversityofScienceandTechnology,Wuhan430074,China)Abstract:Inordertopromoteapplicationof“Linux+PCI”inindustrycontrol。theimpleme
3、ntationmechanismofPCILocalBusSpecificationinLinuxandthestructureofdevicedriversareanalyzed,andabasicframework,contentofPEIdevicedriverinLinuxanditsdevelopingmethodaregiven.Finally,allexampleofPCIdevicedriverforadatacollectionsystemt~tifiesthatthemethodisfeasiblean
4、duniversa1.Keywords:Linux;BIOS:PCI;devicedriver間由256個(gè)8位寄存器組成,分成“預(yù)定義頭標(biāo)區(qū)”(64字O引言節(jié))和“設(shè)備相關(guān)區(qū)”兩個(gè)部分。預(yù)定義頭標(biāo)區(qū)寄存器布局隨著PCI局部總線(PCILocalBus)技術(shù)在計(jì)算機(jī)系統(tǒng)中又可以分為3種,圖1為‘0’類型預(yù)定義頭標(biāo)區(qū)的寄存器布的廣泛采用,以PCI局部總線技術(shù)為接口的PCII/O設(shè)備也得局。其中有些寄存器是只可讀的,有些是可讀/寫的;有些寄到了廣泛的應(yīng)用。但大多數(shù)PCII/0設(shè)備廠商在提供PCI板卡存器是必選的,而有些是可選的。
5、其中,可選寄存器是否得到時(shí)只有比較詳細(xì)的Windows系統(tǒng)文檔,這些文檔包括Windows支持取決于PCI設(shè)備或卡的功能,但不論是否支持可選的寄存系統(tǒng)的驅(qū)動(dòng)程序和相應(yīng)的測(cè)試程序等,卻往往沒有相應(yīng)的器,每種類型的布局結(jié)構(gòu)必須保持一致。Linux系統(tǒng)設(shè)備驅(qū)動(dòng)程序或其他文檔,這就給以Linux系統(tǒng)為平臺(tái)的應(yīng)用帶來了阻礙。DeviceIDDeviceIDLinux系統(tǒng)經(jīng)過近幾年的快速發(fā)展,已非常成熟和穩(wěn)定,S啪8Command在各個(gè)領(lǐng)域得到了大量的應(yīng)用。在以Linux系統(tǒng)為平臺(tái)的虛擬a蚰lCodeRev.Ⅲ嘶咖mm喜寫礎(chǔ)儀表和控制
6、系統(tǒng)中,各種符合PCI局部總線規(guī)范的I/O卡或設(shè)BISTlH1eapder:備日益得到了廣泛的應(yīng)用。因而,研究PCI局部總線規(guī)范在Linux系統(tǒng)中的實(shí)現(xiàn)機(jī)制、開發(fā)Linux系統(tǒng)的PCI設(shè)備驅(qū)動(dòng)程序就具有非?,F(xiàn)實(shí)的應(yīng)用價(jià)值。BaseAdd~ssae~sten1PCI簡(jiǎn)介PCI局部總線規(guī)范是一種替代ISA總線的技術(shù)規(guī)范,其CardbusCISPointer目標(biāo)一是在計(jì)算機(jī)與外設(shè)之間提供性能更好的數(shù)據(jù)傳輸,二是SubsystemIDSubsystemv即dOrID使數(shù)據(jù)傳輸獨(dú)立于CPU體系平臺(tái),三是取消硬件跳線和手工Expans
7、ionROMBaseAddress配置,實(shí)現(xiàn)即插即用(PnP)的功能。為了實(shí)現(xiàn)上述目標(biāo),ReservedIReservedPCI局部總線規(guī)范詳細(xì)定義了PCI技術(shù)的硬件接口和相應(yīng)的軟Max件接13L2]。本文只介紹與PCI設(shè)備驅(qū)動(dòng)程序有關(guān)的基本內(nèi)容,_LatIMin_Gnt’IntLeirnreupt其他部分參見文獻(xiàn)[1]和文獻(xiàn)[2]。圖1‘0’類型預(yù)定義頭標(biāo)區(qū)的寄存器布局PCI局部總線規(guī)范通過對(duì)硬件接口的定義不僅實(shí)現(xiàn)了性能在上述各寄存器中,PCI設(shè)備驅(qū)動(dòng)程序最為關(guān)注的寄存器更好的數(shù)據(jù)傳輸和獨(dú)立于CPU平臺(tái)的目標(biāo),而且還利用
8、標(biāo)準(zhǔn)并不多。其中,“VendorID”和“DeviceID”用于標(biāo)識(shí)設(shè)備;化的配置空間(configur~ionspace)和對(duì)該空間操作函數(shù)的定“BaseAddressRegisters”用于標(biāo)識(shí)設(shè)備所占用存儲(chǔ)器或端13的義實(shí)現(xiàn)了對(duì)PCI設(shè)備的自動(dòng)配置和各種查詢功能。PCI配置空基址,共6個(gè)字,最多可