VxWorks操作系統(tǒng)下ComPactPCI總線驅(qū)動(dòng)程序設(shè)計(jì)
引言
VxWorks是美國Wind River公司專門為嵌入式處理器設(shè)計(jì)的一種模塊化、高性能的實(shí)時(shí)多任務(wù)操作系統(tǒng)。嵌入式軟件多采用交叉開發(fā)的方式,即主機(jī)運(yùn)行開發(fā)工具Tonado,通過某種連接方式連接目標(biāo)機(jī),硬件平臺(tái)為PC/104+架構(gòu)。這里提出一種VxWorks操作系統(tǒng)下CompactPCI總線驅(qū)動(dòng)程序的設(shè)計(jì)及實(shí)現(xiàn)。該設(shè)計(jì)使用德國Kontron DT-64,它是一款高性能嵌入式計(jì)算機(jī)。采用Dual PentiLim 3 CPU,工作頻率高達(dá)866 MHz,具有128 KB一級(jí)高速緩存和128 KB二級(jí)高速緩存。KontronDT-64與PC/AT標(biāo)準(zhǔn)完全兼容,并遵從PC/104+標(biāo)準(zhǔn)。具有PC/104結(jié)構(gòu)的優(yōu)點(diǎn),適用于各種復(fù)雜的工作環(huán)境。
2 BSP與VxWorks的關(guān)系
板級(jí)支持包BSP(board support packet)通常是針對(duì)具體的硬件平臺(tái),是用戶所編寫的啟動(dòng)代碼和部分設(shè)備驅(qū)動(dòng)程序的集合。在VxWorks操作系統(tǒng)中,BSP是介于底層硬件環(huán)境和VxWorks之間的一個(gè)軟件接口,它的主要功能是系統(tǒng)加電后初始化目標(biāo)機(jī)硬件、初始化操作系統(tǒng)及提供部分硬件的驅(qū)動(dòng)程序。BSP與VxWorks之間的關(guān)系如圖1所示。從圖1發(fā)現(xiàn),BSP不是一個(gè)設(shè)備驅(qū)動(dòng)程序。它只能運(yùn)行于指定設(shè)備的硬件環(huán)境中,對(duì)其進(jìn)行控制和初始化。這里主要闡述在PCM發(fā)送,接收模塊的設(shè)計(jì)過程中,如何利用DT-64 BSP來實(shí)現(xiàn)PCI總線的驅(qū)動(dòng)程序。
3 總線及接口技術(shù)
由于CompactPCI規(guī)范定義基于PCI總線方式的復(fù)印加堅(jiān)固而耐用的PCI版本,并且適用于工業(yè)和嵌入式應(yīng)用,本設(shè)計(jì)采用此規(guī)范。CompactPCI總線是3種技術(shù)的集成:通用PCI局部總線(Local Bus)的高性能,安裝牢固的歐卡結(jié)構(gòu),接觸可靠的針孔連接器(pin-antl-soeket connector)。
PCI局部總線是一種地址和數(shù)據(jù)復(fù)用的高性能32,64位總線,它在高度集成的外圍控制器件、外圍插件板和處理器/存儲(chǔ)器之間起連接作用。PCI總線為CPU和板上外設(shè)提供了方便的高速通信連接,工作頻率為66 MHz或更高。PCI作為一種同步的、獨(dú)立于處理器的32 bit或64 bit局部總線,在工作頻率為33 MHz總線寬度為32 bit最低規(guī)格時(shí)其峰值吞吐速率可達(dá)到132 MB/s,適用于網(wǎng)絡(luò)適配器、硬盤驅(qū)動(dòng)器、視頻卡、圖形卡等各類高速外設(shè)。連接到PCI總線上的設(shè)備分為主控和目標(biāo)兩類,PCI支持多主系統(tǒng)。PCI總線的一個(gè)重要特點(diǎn)是存在配置空間,它提供一種配置關(guān)聯(lián),適合于目前或?qū)淼南到y(tǒng)配置機(jī)制,實(shí)現(xiàn)參數(shù)自動(dòng)配置。系統(tǒng)軟件通過讀取配置空間中相應(yīng)參數(shù),即可確定PCI總線上掛接了什么設(shè)備以及需要哪些資源,通過對(duì)地址空間的重定位分配資源避免競(jìng)爭(zhēng),實(shí)現(xiàn)PCI設(shè)備的即插即用。
連接到PCI總線的用戶功能板卡需要使用PCI總線接口控制器和PCI總線進(jìn)行交互,在應(yīng)用系統(tǒng)設(shè)計(jì)時(shí)采用OL5064器件。QL5064是一款32 bit/33 MHz的通用PCI總線控制器,符合PCI規(guī)范2.2版,本突發(fā)傳輸速率達(dá)到132 MB/s??勺鳛镻CI總線的主控設(shè)備控制總線,也可作為目標(biāo)設(shè)備響應(yīng)總線。Ql5064提供了PCI總線、E2ROM、LOCAL總線3個(gè)接口。LOCAL總線支持復(fù)用/非復(fù)用的32 bit地址/數(shù)據(jù),有3種工作模式:M、C和J。在系統(tǒng)實(shí)際數(shù)據(jù)采集時(shí),將LOCAl總線設(shè)置為C模式,這是一種目標(biāo)設(shè)備模式。選用NM93CS56L型串行E2PROM作為QL5064的配置器件,該器件通過E2ROM接口和QL5064相連。QL5064的長配置方式要求68個(gè)字節(jié)的信息,主要包括:設(shè)備識(shí)別號(hào)、供應(yīng)商代碼號(hào)、LO-CAL總線3個(gè)空間的性質(zhì)、范圍以及基址等,這些配置信息內(nèi)容一般要預(yù)先設(shè)計(jì)并用編程器事先寫入配置器件中。在計(jì)算機(jī)啟動(dòng)時(shí),系統(tǒng)將根據(jù)配置信息分配器件所申請(qǐng)的資源。Q155064作為一種橋接器件,在PCI總線和LOCAL總線之間有3種主要數(shù)據(jù)傳輸模式:
(1)PCI Initiator數(shù)據(jù)傳輸模式 主控模式,LOCAL總線主設(shè)備通過QL5064訪問PCI總線存儲(chǔ)空間和I/O空間;
(2)PCI Target數(shù)據(jù)傳輸模式PCI總線主設(shè)備通過QL5064訪問LOCAL總線存儲(chǔ)空問和I/O空間;
(3)DMA數(shù)據(jù)傳輸模式QL5064作為兩總線的主設(shè)備,從PCI總線存儲(chǔ)空間讀數(shù)據(jù)到LOCAL總線存儲(chǔ)空間或者從LOCAL總線存儲(chǔ)空間讀數(shù)據(jù)到PCI總線存儲(chǔ)空間。在系統(tǒng)設(shè)計(jì)中,使用PCI Target數(shù)據(jù)傳輸模式讀寫控制模塊中的寄存器。
4 設(shè)備的配置技術(shù)
VxWorks是專門為實(shí)時(shí)嵌人式系統(tǒng)設(shè)計(jì)開發(fā)的操作系統(tǒng)軟件,提供高效的實(shí)時(shí)任務(wù)調(diào)度、中斷管理、實(shí)時(shí)的系統(tǒng)資源分配以及實(shí)時(shí)的任務(wù)間通信。程序員可將主要精力放在應(yīng)用程序本身,而不用關(guān)心對(duì)系統(tǒng)資源的管理。
為闡明在VxWorks操作系統(tǒng)下如何實(shí)現(xiàn)CompaetPCI總線設(shè)備的驅(qū)動(dòng),需了解PCI設(shè)備的配置寄存器空間。PCI設(shè)備有3種物理存儲(chǔ)空間:配置寄存器空間、存儲(chǔ)器空間和I/O空間。PCI局部總線設(shè)備中配置寄存器空間是一容量為256 KB并具有特定記錄結(jié)構(gòu)的地址空間,該空間分為頭標(biāo)區(qū)和設(shè)備有關(guān)區(qū)兩部分,空間頭標(biāo)區(qū)的定義如圖2所示。
在配置空間中,只讀空間有設(shè)備標(biāo)識(shí)、供應(yīng)商代碼、修改版本、分類代碼以及頭標(biāo)類型。其中供應(yīng)商代碼用來標(biāo)識(shí)設(shè)備供應(yīng)商;設(shè)備標(biāo)識(shí)用來標(biāo)識(shí)某一特殊的設(shè)備;修改版本標(biāo)識(shí)設(shè)備的版本號(hào);分類代碼用來標(biāo)識(shí)設(shè)備的種類;而頭標(biāo)類型用來標(biāo)識(shí)頭類型以及是否為多功能設(shè)備。除供應(yīng)商代碼之外,其他字段的值由供應(yīng)商分配。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論