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