實時圖像處理系統(tǒng)的顯著特點是數(shù)據(jù)量大,有效地處理和傳輸圖像數(shù)據(jù)是實現(xiàn)實時圖像處理系統(tǒng)的關(guān)鍵,TI公司推出了高性能多媒體雙核處理器OMAP5910,是將高性能、低功耗的TMS320C55x DSP與控制性能很強的ARM925微處理器集成到同一芯片器件中如何有效地發(fā)揮雙核的優(yōu)勢,合理利用OMAP5910的各種內(nèi)存配置DMA控制器實時、高效傳輸大規(guī)模的圖像數(shù)據(jù)是本文研究的重點。 1 OMAP5910的內(nèi)存管理 由于OMAP5910支持多種內(nèi)存,因此在設(shè)計DMA傳輸方案時,必須對OMAP5910的內(nèi)存管理有一個詳細的了解。 OMAP5910的MPU存儲器片內(nèi)集成了192KB的SRAM,DSP存儲器片內(nèi)集成了64KB的雙向DARAM,96KB的單向SARAM,32KB的程序存儲器PDROM,MPU和DSP子系統(tǒng)的存儲器映射情況如圖1所示。通過EMIFF和EMIFS接口,OMAP5910可以訪問片外存儲器,但訪問片外存儲器的速度與訪問片內(nèi)存儲器的速度差別很大。 OMAP5910的片內(nèi)存儲器主要由存儲器管理單元TC管理。TC管理MPU、DSP、DMA以及局部總線對OMAP5910系統(tǒng)存儲資源(SRAM、SDRAM、Flash、ROM等)的訪問,它的主要功能是確保處理器能夠高效訪外部存儲區(qū),避免產(chǎn)生瓶頸現(xiàn)象而降低片上處理速度,TC通過3種不同的接口-EMIFS、EMIFF或IMIF,支持處理器或DMA單元對存儲器的訪問.其中EMIFS接口提供對Flash、SRAM或ROM的訪問,EMIFF接口提供對SDRAM的訪問,IMIF接口提供對OMAP5910片內(nèi)192KB SRAM的訪問,3種接口是完全獨立的,從任何一個處理器或DMA單元都可以同時訪問。 ARM核訪問DSP核的數(shù)據(jù)或內(nèi)存空間,需要ARM和DSP之間進行通信,主要有3種方式支持內(nèi)部雙核間的通信,第1種方式通過雙核共享郵箱寄存器MailBox來實現(xiàn),ARM和DSP均可以通過MailBox觸發(fā)對方中斷,并同時傳遞兩個16位的參數(shù),以通知對方自己的狀態(tài)或傳遞某種請求,第2種方式是MPUI方式,ARM通過主機接口獲得對DSP存儲空間和I/O空間的訪問權(quán),由ARM完成數(shù)據(jù)在雙核間的搬移,第3種方式是設(shè)置DSP的MMU,將DSP的外部存儲空間映射到OMAP5910系統(tǒng)存儲資源中,共享DSP的地址空間,由DSP完成雙核間的數(shù)據(jù)搬移。 2 OMAP5910的DMA控制器 OMAP5910的DMA控制器對實時圖像處理系統(tǒng)非常重要,它可以在沒有CPU參與的情況下完成映射存儲空間中數(shù)據(jù)搬移,靈活的使用DMA控制器可以大大提高數(shù)據(jù)傳輸效率。 OMAP5910的DMA控制器進行通用功能傳輸時的特點如下: 1)單通道分割操作,具有通用和專用信道,不同的硬件資源端口。所有的數(shù)據(jù)交換都通過請求(Request)、準備就緒(ready)、中止(abort)信號進行握手。DMA信道是時分復(fù)用的,其傳輸?shù)幕玖鞒倘鐖D2所示。 2)多幀傳輸。傳輸?shù)拿總數(shù)塊可以有多個數(shù)據(jù)幀。傳輸?shù)臄?shù)據(jù)大小為8位、16位和32位。可按字節(jié)打包、拆包、并對傳輸?shù)淖止?jié)計數(shù)。可訪問所有的存儲器地址空間(物理地址映射和I/O空間)。 3)DMA的讀、寫和幀操作都有中斷觸發(fā),每個DMA物理通道都可以產(chǎn)生一個中斷,使處理器對本次傳輸?shù)臓顟B(tài)作出反應(yīng),所有的DMA中斷都是電平中斷。 4)后臺傳輸、高吞吐率,DMA可獨立于CPU工作和以PCU時鐘速度進行數(shù)據(jù)吞吐。 實時圖像處理系統(tǒng)的圖像數(shù)據(jù)很大,同時圖像處理過程中也也會產(chǎn)生大量的中間數(shù)據(jù),而OMAP5910的片內(nèi)資源有限,不能容納幀的圖像數(shù)據(jù)和中間數(shù)據(jù),所以大量的圖像數(shù)據(jù)必須存儲在片外存儲器中,為了保證系統(tǒng)的實時性,由DMA負責完成數(shù)據(jù)在不同存儲空間的搬移,不必占用CPU的時鐘周期,避免CPU大部分時間堵塞在對外存的訪問上,同時DMA對數(shù)據(jù)重排功能可以優(yōu)化圖像數(shù)據(jù)在內(nèi)存中的存儲,這不僅可以提高內(nèi)部存儲空間的利用效率,而且可以提高數(shù)據(jù)的傳輸速率。 3 OMAP5910內(nèi)、外存儲器數(shù)據(jù)交換分析 一個完整的實時圖像處理不僅能對圖像進行實時采集,還能對圖像進行實時處理,該實時圖像處理系統(tǒng)主要由圖像傳感器、A/D轉(zhuǎn)換器,復(fù)雜可編程邏輯器件FPGA、OMAP5910雙核處理器,圖像顯示設(shè)備等構(gòu)成。該系統(tǒng)的主要功能是FPGA實時接收紅外焦平面陣列傳感器輸出的14位視頻信號,降頻后由OMAP5910的DSP處理器執(zhí)行圖像處理算法,同時,OMAP5910的ARM處理器執(zhí)行復(fù)雜控制指令,再由FPGA緩存,經(jīng)D/A變換合成10位視頻信號輸出,另外,OMAP5910的ARM處理器通過接口接收計算機的控制指令。 按照人眼的視覺要求,成像系統(tǒng)每秒鐘至少要采集和處理25幀圖像數(shù)據(jù),才能避免圖像實時顯示時的視覺閃爍感,。對于320×240的點陣圖像,A/D為14位,每幀采集數(shù)據(jù)為320×240×14位=1 MB,按實時性的要求,進行處理和顯示數(shù)據(jù)的速度為320×240×14 位×25幀/s=3.125MB/s,即需要在64μs內(nèi)完成讀1行(320像素)和寫1行(346象素)的操作,只有這樣圖像才不失連續(xù)性。 為了保證圖像處理和顯示的實時性,應(yīng)充分利用OMAP5910的各數(shù)據(jù)傳輸通道,OMAP5910的片內(nèi)、外存儲器的數(shù)據(jù)傳輸,如圖3所示,圖中給出了OMAP5910處理實時圖像時的所有數(shù)據(jù)傳輸通道,他們的傳輸速率與存儲器的類型有關(guān)。為了充分認識OMAP5910的數(shù)據(jù)傳輸通道的性能,筆者做了一系列的實驗,設(shè)置系統(tǒng)時鐘為150MHz,工作模式設(shè)為全同步模式,使能Ca che的前提下,詳細測試了各傳輸通道傳輸1幀數(shù)據(jù)所用的時間,如表1所列。以此為依據(jù)來優(yōu)化數(shù)據(jù)的傳輸。 4 DMA方式數(shù)據(jù)傳輸優(yōu)化方案 在詳細分析各數(shù)據(jù)傳導(dǎo)的數(shù)據(jù)傳輸速率性能的基礎(chǔ),本文提出了一種DMA方式的數(shù)據(jù)傳輸優(yōu)化方案,把整幀劃分成多個塊,OMAP5910待處理的圖像數(shù)據(jù)完全放在OMAP5910的片內(nèi)數(shù)據(jù)存儲器中進行處理,既減少了與外存的大量交互,又充分利用了片內(nèi)的高速存儲資源,在內(nèi)外存之間的數(shù)據(jù)傳輸使用DMA在后臺進行操作,大大提高OMAP5910的工作效率。 4.1 數(shù)據(jù)流程 A/D采樣的數(shù)據(jù)首先存放在外部緩沖中,當采集到一定的數(shù)據(jù)量后,由復(fù)雜可編程邏輯器件觸發(fā)ARM DMA讀取數(shù)據(jù),依次輸入兩幀圖像保存在SDRAM中,從外掛Flash中取得進行圖像處理所需的參數(shù)A、B值保存在SDRAM中,與輸出幀存以8行為塊單位,觸發(fā)DSP DMA將塊數(shù)據(jù)從OMAP5910的外部緩存區(qū)SDRAM搬運到DSP核的雙向內(nèi)部緩存區(qū)DARAM,以供DSP核進行計算。有關(guān)DMA方式傳輸?shù)奶攸c,DSP核進行計算的同時,DSP DMA搬運上一塊的圖像數(shù)據(jù)(8行)到SDRAM,ARM核接收到輸出行數(shù)據(jù)后,觸發(fā)ARM DMA把數(shù)據(jù)搬移到FPGA控制外部存儲區(qū),數(shù)據(jù)流程如圖4所示。 由于OMAP5910內(nèi)部和外部都采用雙緩沖機制,因此ARM核和DSP核處理的DMA傳輸上一幀數(shù)據(jù)的同時,不影響DMA進行當前幀數(shù)據(jù)的傳輸。這樣整個系統(tǒng)中A/D數(shù)據(jù)的采集,DMA數(shù)據(jù)的傳輸及CPU數(shù)據(jù)的計算達到了高度的并行性。 4.2 操作時序 從數(shù)據(jù)傳輸?shù)牟僮鲿r序上,可以看出該優(yōu)化方案另一個優(yōu)勢,將原來的幾個輸入過程(每個輸入過程指的是輸入1行像素)合并為1個輸入過程(1次輸入幾行像素),并且將原來集中完成的輸出過程分散到輸入過程中間完成,進一步提高的性能。 具體配置操作為:OMAP5910中ARM DMA讀過程1次輸入12行數(shù)據(jù),用20次將1幀圖像輸入到SDRAM中。ARM DMA的寫過程在讀過程中間啟動。即1幀中的第1次DMA讀過程結(jié)束的中斷中啟動行號和幀號的添加以及 DMA的寫過程,這一次只寫2行,在1幀中的第2次到第20次DMA讀過程結(jié)束的中斷中啟動寫過程,每次寫15行,其操作時序圖5所示。 具體的時間計算是:讀12行數(shù)據(jù)為17.07μs×12=204.84μs,寫15行數(shù)據(jù)為27.68μs×15=415.2μs,1次讀寫及中斷的處理所需時間為204.84μS+415.2μs≈700μs,1次讀寫及中斷的處理允許時間為68μS×12=816μs。經(jīng)計算700μ<816μs,能夠保證實時圖像處理系統(tǒng)的實時性。 5 優(yōu)化方案中的代碼設(shè)計與實現(xiàn) 5.1 ARM端的主程序 ARM核主要實現(xiàn)OMAP5910系統(tǒng)的配置,與FPGA接口的數(shù)據(jù)輸入/輸出,與SDRAM的數(shù)據(jù)保存、幀模式的控制與轉(zhuǎn)換等優(yōu)化方案的功能。 5.2 DSP端的主程序 DSP核主要實現(xiàn)DSP DMA在I SRAM和DARAM之間 數(shù)據(jù)的輸入/輸出,紅外圖像的兩點校正算法和疵點剔除等算法,以及紅外圖像的亮度和對比度參數(shù)的計算等功能。 5.3 調(diào)試與配置DMA通道的經(jīng)驗總結(jié) 1)測試DMA通道的數(shù)據(jù)傳輸是否正確,可編寫SDRAM到SDRAM的內(nèi)部DMA數(shù)據(jù)搬移測試程序來初步測試DMA通道的初始設(shè)置和數(shù)據(jù)傳輸是否正確。 2)測試DMA與FPGA接口數(shù)據(jù)的傳輸速率,示波器讀取讀信號或?qū)懶盘柕男蕰r,應(yīng)注意查看讀信號和寫信號的個數(shù)是否是傳輸數(shù)據(jù)的個數(shù)。 3)測試DMA的外部中斷,外部中斷的引腳是復(fù)用引腳,應(yīng)提前設(shè)置此引腳。 4)測試DMA操作的讀操作和寫操作的相互配合,查看輸出的傳輸是否正確。 5)使用指定內(nèi)存不同的數(shù)據(jù)測試視頻圖像的輸出是否正確。 6)DMA中斷的觸發(fā)事件是上升沿有效。 7)為保證DMA傳輸數(shù)據(jù)的完整性,要對DMA的優(yōu)先級進行設(shè)置。 結(jié)語 實時圖像處理系統(tǒng)實現(xiàn)了此數(shù)據(jù)傳輸?shù)膬?yōu)化方案,實時顯示圖像的速度為25幀/s,圖像的視覺效果比較理想,通過靈活地控制DMA,不僅能夠提高圖像數(shù)據(jù)的傳輸效率,而且能夠充分發(fā)揮OMAP5910的高速性能。 |