基于PCI的單板計算機應(yīng)用中起到系統(tǒng)控制器作用的實
硬件結(jié)構(gòu)圖
本文引用地址:http://m.butianyuan.cn/article/202343.htm
直接存儲器存取(DMA)是提高接口中數(shù)據(jù)傳送帶寬的關(guān)鍵,因為它在傳送數(shù)據(jù)時所需內(nèi)核處理器的干預(yù)最小。這種采集或傳送數(shù)據(jù)的設(shè)備可以利用其自帶的DMA控制器,自動地從處理器來回傳送數(shù)據(jù)。DMA通過利用PCI的突發(fā)能力來存取接口中的大塊數(shù)據(jù),從而極大地提高了性能。這種能力推動了諸如實時視頻處理等應(yīng)用的發(fā)展。
對多處理器系統(tǒng)的內(nèi)在支持
通過用PCI總線連接多個嵌入式處理器,就能實現(xiàn)一個多處理器系統(tǒng)。采用這種直接的連接方式很容易就能使計算能力成倍增加。有了附加的數(shù)據(jù)總線以及每個處理器訪問存儲器的能力,就能處理數(shù)據(jù)流。采用這種方法,無須增加算法的編程復(fù)雜度就可以在每個處理器之間對數(shù)據(jù)進行分區(qū)。另外,即使是在視頻吞吐速率,仍然有足夠的可用空間用于與控制有關(guān)的傳送開銷。
從系統(tǒng)控制器的角度看PCI
PCI存儲器模式
PCI協(xié)議使用基地址寄存器(BAR)為各設(shè)備分配存儲器和I/O范圍。在配置期間,主機會詢問各個設(shè)備以便決定每個設(shè)備所需資源。如果主機可以提供所有這些資源需求,它就會在每個設(shè)備的存儲器BAR和I/O BAR中寫入相應(yīng)的起始地址。然后,通過對其存儲器或者I/O范圍內(nèi)發(fā)起一次傳送就可以訪問每個設(shè)備了。此外,每個PCI代理都可以訪問總線上的所有其他代理。
ADSP-BF533是一個PCI設(shè)備,它有BAR0(存儲器BAR)和BAR2(I/O BAR)兩個寄存器,以及相應(yīng)的屏蔽寄存器。這些屏蔽寄存器可用于指定每個區(qū)域所需要的存儲數(shù)量。
因為主機是在其PCI存儲器空間內(nèi)為設(shè)備分配一個地址,所以該設(shè)備(在這里就是指BF533)需要將此地址映射到它的內(nèi)部或者外部存儲器空間中。對BF533來說,存儲器空間包括芯片內(nèi)的L2存儲器以及外部的SDRAM和(或)異步存儲器,并且I/O空間會映射到處理器的存儲器映射寄存器(MMR)區(qū)域。在這些定義的引導(dǎo)下,一個內(nèi)部事務(wù)就會被控制在適當(dāng)?shù)膮^(qū)域。
當(dāng)ADSP-BF533作為給定事務(wù)的目標(biāo)機(受控器)時可以應(yīng)用上述討論的方法。當(dāng)它發(fā)起傳送時,會在其PCI外部存儲器BAR或者I/O BAR中寫入它希望訪問的代理地址。無論是對PCI存儲器還是I/O空間的一次讀或?qū)懚紩l(fā)起一次以該PCI代理的存儲器或者I/O區(qū)域為目標(biāo)的事務(wù)。
在主機模式中,外發(fā)事務(wù)的發(fā)生方式與上面的描述類似。對內(nèi)送事務(wù)(ADSP-BF533作為受控器)的方案稍微有些區(qū)別。在主機模式中,BF533不使用BAR寄存器,而是使用主機存儲控制寄存器將其資源開放給外部代理。它可以接受或者不接受對其存儲器和I/O空間的訪問。在有些情況下,它還能指示那些開放資源還有多少可以被外部PCI代理訪問。這就為保護關(guān)鍵的代碼或者數(shù)據(jù)段免遭其他PCI代理的更改提供了一種機制。
在PCI存儲空間中開窗口
一旦初始化完成后,每個PCI設(shè)備都有對主機或總線上其他PCI設(shè)備“開放”的存儲資源。這些存儲資源可以包括內(nèi)部存儲器和外部存儲器。例如,在BF533中,內(nèi)部或者外部L2存儲器中的“窗口”可以被PCI總線上的任何其他設(shè)備共享。然后每個總線主控器就可以直接訪問這些開放的存儲器空間,就像是在訪問它自己的內(nèi)部存儲器一樣。一旦主機完成了初始化進程,各設(shè)備之間的所有存儲器地址都能被PCI接口翻譯出來。
術(shù)語“窗口”用于表示該設(shè)備可能還有不允許別的總線主控器共享的其他受保護資源。這種開放的窗口清楚地表示了可以直接進行傳送的存儲資源。這種方法是很重要的,因為對任何給定設(shè)備都不需要內(nèi)核處理器參與每一件事務(wù)。
圖2的簡單實例示出了主機中的窗口指向設(shè)備資源以及設(shè)備中的窗口指向主機資源。這就是允許單個的內(nèi)核處理器能將外部資源當(dāng)做簡單的存儲器地址來訪問的機制。
主機中的窗口指向設(shè)備資源以及設(shè)備中的窗口指向主機資源原理圖
通常采用郵箱中斷方式來協(xié)調(diào)總線主控器與PCI設(shè)備之間的數(shù)據(jù)傳送,這就使接收設(shè)備知道數(shù)據(jù)什么時候可用以及什么時候準(zhǔn)備用于處理。
數(shù)據(jù)傳送路徑
BF533有一組專用的外部主控器總線,允許外部的總線主控器直接從(或?qū)?內(nèi)部的L2存儲器或者芯片外的SDRAM傳送數(shù)據(jù)而無需內(nèi)核處理器的介入。另外,可以建立PCI映射以便允許訪問某些系統(tǒng)資源,例如,共享的外圍設(shè)備。上述每種數(shù)據(jù)傳送方法都只需要不多的初始化代碼。內(nèi)核處理器只需要管理信號量以便指示什么時候可以交換數(shù)據(jù),以及什么時候可以將數(shù)據(jù)從該系統(tǒng)中傳送出去。
除了上述傳送路徑外,還有一種內(nèi)部的存儲器DMA控制器可以用于發(fā)起任一方向的數(shù)據(jù)傳送。這種數(shù)據(jù)傳送路徑能支持外圍設(shè)備間的突發(fā)傳送。
在支持PCI的嵌入式媒體處理器上實現(xiàn)視頻捕獲
下面將給出一種能執(zhí)行主機控制器和信號處理器任務(wù)的嵌入式媒體處理器的具體實例,目的是要說明一種帶有集成PCI接口的嵌入式處理器是如何用在具有各種不同接口要求的系統(tǒng)中的。這里的重點是數(shù)據(jù)搬移以及接入許多基于PCI的主流外圍設(shè)備的能力。因為安裝PCI接口就跟安裝存儲器一樣,所以通過把這些外圍設(shè)備映射到一些存儲器的位置就極大地簡化了編程模式。初始化完成后,每個外圍設(shè)備都會對主機處理器開放一個窗口用于雙向的數(shù)據(jù)交換。
在本例中,采用Momentum Data Systems (MDS)公司的Eagle-35主板來迅速實現(xiàn)一個系統(tǒng),該PCB的原理示意圖參見圖3和圖4。Eagle-35是一個單板計算機(SBC)的主處理器,該SBC有4個內(nèi)部PCI插槽,板內(nèi)還包含了一個以太網(wǎng)控制器,并且連接到PCI總線,采用一個廉價的PLD實現(xiàn)5設(shè)備的PCI判決器。它還包括了一個可連接SDRAM內(nèi)存模塊的插座,可以提供128MB的外部存儲器。
首先可以把一個視頻畫面捕獲卡安裝到其中一個PCI插槽中。利用照相機數(shù)據(jù)源或者視頻源的多路復(fù)用流,可以一次把一幀的視頻數(shù)據(jù)直接送入SDRAM。另外,每一路數(shù)據(jù)都可以直接進入外部存儲器用于處理。為了說明清楚,假定有一個安全應(yīng)用,它有一路輸入的CIF視頻流,從10MB/s數(shù)量級的數(shù)據(jù)壓縮至KB/s數(shù)量級范圍(具體取決于期望的壓縮圖像質(zhì)量等級)。該視頻畫面捕獲卡上的一個DMA控制器直接將數(shù)據(jù)傳送到SDRAM中。因為BF533有一個雙MAC/ALU的內(nèi)核處理器,所以可以實時地完成每一輸入幀的數(shù)據(jù)壓縮??梢蕴幚淼膲嚎s類型有好幾種,包括MJPEG、MPEG-2以及MPEG-4。采用這些算法進行CIF格式的壓縮僅消耗內(nèi)核處理器資源的很小一部分。
PCI接口有多種方法可以將壓縮后的數(shù)據(jù)從處理器傳送出去。一種方法是利用以太網(wǎng)控制器把壓縮數(shù)據(jù)流送到遠程網(wǎng)絡(luò)地點,另一種方法是利用一個IDE驅(qū)動器來保存視頻,這兩種方法都接受PCI數(shù)據(jù)流,這樣就簡化了需要的編程模式。因為BF533的DSP處理能力既支持編碼也支持解碼,所以壓縮圖像可以重新傳回給同樣的系統(tǒng)。
在SDRAM中可提供多個輸入和輸出幀的緩沖器,這些緩沖器采用一種反復(fù)的方式輪流保存數(shù)據(jù)。當(dāng)一個輸入緩沖器充滿了來自視頻捕獲設(shè)備的數(shù)據(jù)時,另外一個緩沖器的數(shù)據(jù)正在被壓縮。兩個輸出緩沖器允許輸出方向的并行操作。當(dāng)一個輸出緩沖器充滿了壓縮數(shù)據(jù)時,另一個緩沖器中的數(shù)據(jù)可以被傳送到IDE驅(qū)動器或者以太網(wǎng)接口中。
Eagle-35主板是一種ATX型的設(shè)備,所以適合于做一個PC機箱中的主板。為了方便訪問,音頻編解碼接口等所有的附加接口都放到了電路板的外部。有了板內(nèi)的編解碼器,就可以完成音頻的壓縮以便匹配視頻流。
評論