新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > OMAP5910實(shí)時(shí)圖像系統(tǒng)中的DMA數(shù)據(jù)傳輸

OMAP5910實(shí)時(shí)圖像系統(tǒng)中的DMA數(shù)據(jù)傳輸

——
作者:公安部第一研究所,王艷艷 郅晨 于銳 時(shí)間:2007-01-26 來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏

引言

實(shí)時(shí)圖像處理系統(tǒng)的顯著特點(diǎn)是數(shù)據(jù)量大,有效地處理和傳輸圖像數(shù)據(jù)是實(shí)現(xiàn)實(shí)時(shí)圖像處理系統(tǒng)的關(guān)鍵,ti公司推出了高性能多媒體雙核處理器omap5910,是將高性能、低功耗的tms320c55x dsp與控制性能很強(qiáng)的arm925微處理器集成到同一芯片器件中如何有效地發(fā)揮雙核的優(yōu)勢(shì),合理利用omap5910的各種內(nèi)存配置dma控制器實(shí)時(shí)、高效傳輸大規(guī)模的圖像數(shù)據(jù)是本文研究的重點(diǎn)。

1 omap5910的內(nèi)存管理

由于omap5910支持多種內(nèi)存,因此在設(shè)計(jì)dma傳輸方案時(shí),必須對(duì)omap5910的內(nèi)存管理有一個(gè)詳細(xì)的了解。

omap5910的mpu存儲(chǔ)器片內(nèi)集成了192kb的sram,dsp存儲(chǔ)器片內(nèi)集成了64kb的雙向daram,96kb的單向saram,32kb的程序存儲(chǔ)器pdrom,mpu和dsp子系統(tǒng)的存儲(chǔ)器映射情況如圖1所示[1]。通過(guò)emiff和emifs接口,omap5910可以訪問(wèn)片外存儲(chǔ)器,但訪問(wèn)片外存儲(chǔ)器的速度與訪問(wèn)片內(nèi)存儲(chǔ)器的速度差別很大。

omap5910的片內(nèi)存儲(chǔ)器主要由存儲(chǔ)器管理單元tc管理。tc管理mpu、dsp、dma以及局部總線對(duì)omap5910系統(tǒng)存儲(chǔ)資源(sram、sdram、flash、rom等)的訪問(wèn),它的主要功能是確保處理器能夠高效訪外部存儲(chǔ)區(qū),避免產(chǎn)生瓶頸現(xiàn)象而降低片上處理速度,tc通過(guò)3種不同的接口-emifs、emiff或imif,支持處理器或dma單元對(duì)存儲(chǔ)器的訪問(wèn).其中emifs接口提供對(duì)flash、sram或rom的訪問(wèn),emiff接口提供對(duì)sdram的訪問(wèn),imif接口提供對(duì)omap5910片內(nèi)192kb sram的訪問(wèn),3種接口是完全獨(dú)立的[2],從任何一個(gè)處理器或dma單元都可以同時(shí)訪問(wèn)。

arm核訪問(wèn)dsp核的數(shù)據(jù)或內(nèi)存空間,需要arm和dsp之間進(jìn)行通信,主要有3種方式支持內(nèi)部雙核間的通信,第1種方式通過(guò)雙核共享郵箱寄存器mailbox來(lái)實(shí)現(xiàn),arm和dsp均可以通過(guò)mailbox觸發(fā)對(duì)方中斷,并同時(shí)傳遞兩個(gè)16位的參數(shù),以通知對(duì)方自己的狀態(tài)或傳遞某種請(qǐng)求,第2種方式是mpui方式,arm通過(guò)主機(jī)接口獲得對(duì)dsp存儲(chǔ)空間和i/o空間的訪問(wèn)權(quán),由arm完成數(shù)據(jù)在雙核間的搬移,第3種方式是設(shè)置dsp的mmu,將dsp的外部存儲(chǔ)空間映射到omap5910系統(tǒng)存儲(chǔ)資源中,共享dsp的地址空間,由dsp完成雙核間的數(shù)據(jù)搬移。

本文引用地址:http://2s4d.com/article/21275.htm


2 omap5910的dma控制器

omap5910的dma控制器對(duì)實(shí)時(shí)圖像處理系統(tǒng)非常重要,它可以在沒(méi)有cpu參與的情況下完成映射存儲(chǔ)空間中數(shù)據(jù)搬移,靈活的使用dma控制器可以大大提高數(shù)據(jù)傳輸效率。

omap5910的dma控制器進(jìn)行通用功能傳輸時(shí)的特點(diǎn)如下:

1)單通道分割操作,具有通用和專(zhuān)用信道,不同的硬件資源端口。所有的數(shù)據(jù)交換都通過(guò)請(qǐng)求(request)、準(zhǔn)備就緒(ready)、中止(abort)信號(hào)進(jìn)行握手。dma信道是時(shí)分復(fù)用的,其傳輸?shù)幕玖鞒倘鐖D2所示。

2)多幀傳輸。傳輸?shù)拿總€(gè)數(shù)塊可以有多個(gè)數(shù)據(jù)幀。傳輸?shù)臄?shù)據(jù)大小為8位、16位和32位。可按字節(jié)打包、拆包、并對(duì)傳輸?shù)淖止?jié)計(jì)數(shù)??稍L問(wèn)所有的存儲(chǔ)器地址空間(物理地址映射和i/o空間)。

3)dma的讀、寫(xiě)和幀操作都有中斷觸發(fā),每個(gè)dma物理通道都可以產(chǎn)生一個(gè)中斷,使處理器對(duì)本次傳輸?shù)臓顟B(tài)作出反應(yīng),所有的dma中斷都是電平中斷[4]。

4)后臺(tái)傳輸、高吞吐率,dma可獨(dú)立于cpu工作和以pcu時(shí)鐘速度進(jìn)行數(shù)據(jù)吞吐。

實(shí)時(shí)圖像處理系統(tǒng)的圖像數(shù)據(jù)很大,同時(shí)圖像處理過(guò)程中也也會(huì)產(chǎn)生大量的中間數(shù)據(jù),而omap5910的片內(nèi)資源有限,不能容納幀的圖像數(shù)據(jù)和中間數(shù)據(jù),所以大量的圖像數(shù)據(jù)必須存儲(chǔ)在片外存儲(chǔ)器中,為了保證系統(tǒng)的實(shí)時(shí)性,由dma負(fù)責(zé)完成數(shù)據(jù)在不同存儲(chǔ)空間的搬移,不必占用cpu的時(shí)鐘周期,避免cpu大部分時(shí)間堵塞在對(duì)外存的訪問(wèn)上,同時(shí)dma對(duì)數(shù)據(jù)重排功能可以?xún)?yōu)化圖像數(shù)據(jù)在內(nèi)存中的存儲(chǔ),這不僅可以提高內(nèi)部存儲(chǔ)空間的利用效率,而且可以提高數(shù)據(jù)的傳輸速率。

3 omap5910內(nèi)、外存儲(chǔ)器數(shù)據(jù)交換分析

一個(gè)完整的實(shí)時(shí)圖像處理不僅能對(duì)圖像進(jìn)行實(shí)時(shí)采集,還能對(duì)圖像進(jìn)行實(shí)時(shí)處理,該實(shí)時(shí)圖像處理系統(tǒng)主要由圖像傳感器、a/d轉(zhuǎn)換器,復(fù)雜可編程邏輯器件fpga、omap5910雙核處理器,圖像顯示設(shè)備等構(gòu)成。該系統(tǒng)的主要功能是fpga實(shí)時(shí)接收紅外焦平面陣列傳感器輸出的14位視頻信號(hào),降頻后由omap5910的dsp處理器執(zhí)行圖像處理算法,同時(shí),omap5910的arm處理器執(zhí)行復(fù)雜控制指令,再由fpga緩存,經(jīng)d/a變換合成10位視頻信號(hào)輸出,另外,omap5910的arm處理器通過(guò)接口接收計(jì)算機(jī)的控制指令。

按照人眼的視覺(jué)要求,成像系統(tǒng)每秒鐘至少要采集和處理25幀圖像數(shù)據(jù),才能避免圖像實(shí)時(shí)顯示時(shí)的視覺(jué)閃爍感,。對(duì)于320×240的點(diǎn)陣圖像,a/d為14位,每幀采集數(shù)據(jù)為320×240×14位=1 mb,按實(shí)時(shí)性的要求,進(jìn)行處理和顯示數(shù)據(jù)的速度為320×240×14位×25幀/s=3.125mb/s,即需要在64μs內(nèi)完成讀1行(320像素)和寫(xiě)1行(346象素)的操作,只有這樣圖像才不失連續(xù)性。

為了保證圖像處理和顯示的實(shí)時(shí)性,應(yīng)充分利用omap5910的各數(shù)據(jù)傳輸通道,omap5910的片內(nèi)、外存儲(chǔ)器的數(shù)據(jù)傳輸,如圖3所示,圖中給出了omap5910處理實(shí)時(shí)圖像時(shí)的所有數(shù)據(jù)傳輸通道,他們的傳輸速率與存儲(chǔ)器的類(lèi)型有關(guān)。為了充分認(rèn)識(shí)omap5910的數(shù)據(jù)傳輸通道的性能,筆者做了一系列的實(shí)驗(yàn),設(shè)置系統(tǒng)時(shí)鐘為150mhz,工作模式設(shè)為全同步模式,使能ca che的前提下,詳細(xì)測(cè)試了各傳輸通道傳輸1幀數(shù)據(jù)所用的時(shí)間,如表1所列。以此為依據(jù)來(lái)優(yōu)化數(shù)據(jù)的傳輸。

4 dma方式數(shù)據(jù)傳輸優(yōu)化方案

在詳細(xì)分析各數(shù)據(jù)傳導(dǎo)的數(shù)據(jù)傳輸速率性能的基礎(chǔ),本文提出了一種dma方式的數(shù)據(jù)傳輸優(yōu)化方案,把整幀劃分成多個(gè)塊,omap5910待處理的圖像數(shù)據(jù)完全放在omap5910的片內(nèi)數(shù)據(jù)存儲(chǔ)器中進(jìn)行處理,既減少了與外存的大量交互,又充分利用了片內(nèi)的高速存儲(chǔ)資源,在內(nèi)外存之間的數(shù)據(jù)傳輸使用dma在后臺(tái)進(jìn)行操作,大大提高omap5910的工作效率。

4.1 數(shù)據(jù)流程

a/d采樣的數(shù)據(jù)首先存放在外部緩沖中,當(dāng)采集到一定的數(shù)據(jù)量后,由復(fù)雜可編程邏輯器件觸發(fā)arm dma讀取數(shù)據(jù),依次輸入兩幀圖像保存在sdram中,從外掛flash中取得進(jìn)行圖像處理所需的參數(shù)a、b值保存在sdram中,與輸出幀存以8行為塊單位,觸發(fā)dsp dma將塊數(shù)據(jù)從omap5910的外部緩存區(qū)sdram搬運(yùn)到dsp核的雙向內(nèi)部緩存區(qū)daram,以供dsp核進(jìn)行計(jì)算。有關(guān)dma方式傳輸?shù)奶攸c(diǎn),dsp核進(jìn)行計(jì)算的同時(shí),dsp dma搬運(yùn)上一塊的圖像數(shù)據(jù)(8行)到sdram,arm核接收到輸出行數(shù)據(jù)后,觸發(fā)arm dma把數(shù)據(jù)搬移到fpga控制外部存儲(chǔ)區(qū),數(shù)據(jù)流程如圖4所示。

由于omap5910內(nèi)部和外部都采用雙緩沖機(jī)制,因此arm核和dsp核處理的dma傳輸上一幀數(shù)據(jù)的同時(shí),不影響dma進(jìn)行當(dāng)前幀數(shù)據(jù)的傳輸。這樣整個(gè)系統(tǒng)中a/d數(shù)據(jù)的采集,dma數(shù)據(jù)的傳輸及cpu數(shù)據(jù)的計(jì)算達(dá)到了高度的并行性。

4.2 操作時(shí)序

從數(shù)據(jù)傳輸?shù)牟僮鲿r(shí)序上,可以看出該優(yōu)化方案另一個(gè)優(yōu)勢(shì),將原來(lái)的幾個(gè)輸入過(guò)程(每個(gè)輸入過(guò)程指的是輸入1行像素)合并為1個(gè)輸入過(guò)程(1次輸入幾行像素),并且將原來(lái)集中完成的輸出過(guò)程分散到輸入過(guò)程中間完成,進(jìn)一步提高的性能。

具體配置操作為:omap5910中arm dma讀過(guò)程1次輸入12行數(shù)據(jù),用20次將1幀圖像輸入到sdram中。arm dma的寫(xiě)過(guò)程在讀過(guò)程中間啟動(dòng)。即1幀中的第1次dma讀過(guò)程結(jié)束的中斷中啟動(dòng)行號(hào)和幀號(hào)的添加以及 dma的寫(xiě)過(guò)程,這一次只寫(xiě)2行,在1幀中的第2次到第20次dma讀過(guò)程結(jié)束的中斷中啟動(dòng)寫(xiě)過(guò)程,每次寫(xiě)15行,其操作時(shí)序圖5所示。

具體的時(shí)間計(jì)算是:讀12行數(shù)據(jù)為17.07μs×12=204.84μs,寫(xiě)15行數(shù)據(jù)為27.68μs×15=415.2μs,1次讀寫(xiě)及中斷的處理所需時(shí)間為204.84μs+415.2μs≈700μs,1次讀寫(xiě)及中斷的處理允許時(shí)間為68μs×12=816μs。經(jīng)計(jì)算700μ<816μs,能夠保證實(shí)時(shí)圖像處理系統(tǒng)的實(shí)時(shí)性。

5 優(yōu)化方案中的代碼設(shè)計(jì)與實(shí)現(xiàn)

5.1 arm端的主程序

arm核主要實(shí)現(xiàn)omap5910系統(tǒng)的配置,與fpga接口的數(shù)據(jù)輸入/輸出,與sdram的數(shù)據(jù)保存、幀模式的控制與轉(zhuǎn)換等優(yōu)化方案的功能[5]。

5.2 dsp端的主程序

dsp核主要實(shí)現(xiàn)dsp dma在i sram和daram之間數(shù)據(jù)的輸入/輸出,紅外圖像的兩點(diǎn)校正算法和疵點(diǎn)剔除等算法,以及紅外圖像的亮度和對(duì)比度參數(shù)的計(jì)算等功能[6]。

5.3 調(diào)試與配置dma通道的經(jīng)驗(yàn)總結(jié)

1)測(cè)試dma通道的數(shù)據(jù)傳輸是否正確,可編寫(xiě)sdram到sdram的內(nèi)部dma數(shù)據(jù)搬移測(cè)試程序來(lái)初步測(cè)試dma通道的初始設(shè)置和數(shù)據(jù)傳輸是否正確。

2)測(cè)試dma與fpga接口數(shù)據(jù)的傳輸速率,示波器讀取讀信號(hào)或?qū)懶盘?hào)的效率時(shí),應(yīng)注意查看讀信號(hào)和寫(xiě)信號(hào)的個(gè)數(shù)是否是傳輸數(shù)據(jù)的個(gè)數(shù)。

3)測(cè)試dma的外部中斷,外部中斷的引腳是復(fù)用引腳,應(yīng)提前設(shè)置此引腳。

4)測(cè)試dma操作的讀操作和寫(xiě)操作的相互配合,查看輸出的傳輸是否正確。

5)使用指定內(nèi)存不同的數(shù)據(jù)測(cè)試視頻圖像的輸出是否正確。

6)dma中斷的觸發(fā)事件是上升沿有效。

7)為保證dma傳輸數(shù)據(jù)的完整性,要對(duì)dma的優(yōu)先級(jí)進(jìn)行設(shè)置。

結(jié)語(yǔ)

實(shí)時(shí)圖像處理系統(tǒng)實(shí)現(xiàn)了此數(shù)據(jù)傳輸?shù)膬?yōu)化方案,實(shí)時(shí)顯示圖像的速度為25幀/s,圖像的視覺(jué)效果比較理想,通過(guò)靈活地控制dma,不僅能夠提高圖像數(shù)據(jù)的傳輸效率,而且能夠充分發(fā)揮omap5910的高速性能。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉