基于ARM9的視頻采集傳輸系統(tǒng)
隨著多媒體技術(shù)及寬帶網(wǎng)絡(luò)傳輸技術(shù)的發(fā)展,視頻采集及傳輸系統(tǒng)作為遠程視頻監(jiān)控、可視電話會議和工業(yè)自動控制領(lǐng)域的一項核心關(guān)鍵技術(shù),近年來也得到了飛速的發(fā)展。本文所提出的系統(tǒng)是在新一代基于ARM926EJ-S微處理核的嵌入式開發(fā)平臺上進行的,并將國際上流行的MPEG-4壓縮編解碼技術(shù)和流媒體傳輸技術(shù)相結(jié)合。該系統(tǒng)具有較強的實時性、可交互性及便攜性。
1 系統(tǒng)開發(fā)硬件平臺
本設(shè)計采用的開發(fā)平臺是Freescale i.MX家族的MC9328MX21,作為整個系統(tǒng)的核心微處理器,其ARM926EJ-S核提供了加速的Java支持和高度整合的系統(tǒng)功能模塊,如片上模塊包括圖像加速模塊、LCD控制器、USB控制模塊、CMOS傳感器接口及同步串口等,為開發(fā)者進行多媒體應(yīng)用開發(fā)提供了豐富的外圍接口。核心板上集成了64MB SDRAM以及16MBFlash存儲器,底板資源包括4個四線RS-232串口、1個10 Mbit·s-1/100 Mbit·s-1自適應(yīng)以太網(wǎng)接口及音視頻采集設(shè)備,為系統(tǒng)設(shè)計時的交叉編譯及多媒體數(shù)據(jù)的處理提供了方便。
系統(tǒng)的關(guān)鍵外圍設(shè)備、視頻數(shù)據(jù)的采集所使用的CMOS圖像傳感器OV9640,與傳統(tǒng)的CCD圖像傳感器相比,具有功耗低、體積小、集成度高等優(yōu)點,并且OV9640支持VGA、QVGA、CIF等多種解析度,支持的數(shù)據(jù)格式包括YCrCb 4:2:2、GRB 4:2:2和RGB:RawData這3種,圖像幀傳輸速率達30幀/s。傳感器通過CSI模塊進行圖像數(shù)據(jù)的采集,然后通過專用總線傳輸至PRP(eMMA Pre-processor),在PRP中調(diào)整圖像大小并轉(zhuǎn)換成合適的顏色空間。PRP的輸出分成2個通道,通道1輸出RGB565格式數(shù)據(jù)作為LCD的顯示,通道2輸出YUV420格式數(shù)據(jù)進行MPEG或者JPEG編碼。
MC9328MX21的CSI模塊有一個8位輸入端口,如果傳感器的傳輸超過8位數(shù)據(jù),圖像傳感器通常作為從設(shè)備通過I2C端口控制。底層的協(xié)議是I2C,高層的協(xié)議則由傳感器確定。在這里,圖像傳感器的主時鐘由MC9328MX21提供。
2 系統(tǒng)的軟件系統(tǒng)設(shè)計
2.1 搭建交叉編譯環(huán)境
由于嵌入式系統(tǒng)選用的是開源的基于ARM微處理器的系統(tǒng)內(nèi)核ARM-Linux,而在開發(fā)板上沒有足夠的資源運行開發(fā)調(diào)試工具,所以必須首先搭建好交叉編譯調(diào)試環(huán)境。首先,需要通過在編譯時指定target=arm-linux生成適合ARM平臺的binutils,它包括了ld、ar和as等一些生成和處理二進制文件的工具。然后,編譯生成GCC(GNU Compiler Collection),它能夠支持多種高級語言,如C,C++等,需要注意的是,在編譯GCC時需要ARM-linux內(nèi)核頭文件的支持,所以首先需要配置內(nèi)核#make menuconfig ARCH=ARM來生成對應(yīng)ARM內(nèi)核的頭文件,這樣就可以在配置編譯GCC時通過with-headers選項指定編譯所需頭文件。最后,還需要編譯生成許多用戶層應(yīng)用都要用到的函數(shù)庫glibc,所有動態(tài)鏈接的程序都要用到它,在編譯時需要注意的是打開--enable-add-ons選項,這個開關(guān)將打開glibc的附加包,因為我們需要用到linu-xthreads。這樣,一個嵌入式ARM-linux下的交叉編譯環(huán)境就已搭建成功。
2.2 編譯制作內(nèi)核及文件系統(tǒng)
通過make menuconfig配置內(nèi)核選項,其中的一些關(guān)鍵設(shè)置包括指定System Type時打開ARM926T CPUidle、I-Cache 0n和D-Cache,并且由于在進行應(yīng)用軟件開發(fā)時需要ARM-linux內(nèi)核支持frame buffer技術(shù),所以還需要打開Console drivers中的Frame-buffer sup-port。然后,make boot就可以編譯生成定制好的內(nèi)核映像文件Image,將制作好的系統(tǒng)內(nèi)核和文件系統(tǒng)通過宿主機的TFTP服務(wù)燒寫進開發(fā)板的Flash存儲器。這樣就完成了板上可獨立運行的操作系統(tǒng)的設(shè)計。
2.3 視頻數(shù)據(jù)的采集、編碼和傳輸?shù)膶崿F(xiàn)
這部分的工作是整個設(shè)計的核心。MPEG-4在1999年初正式成為國際標準,與之前的標準相比,它更加重視多媒體系統(tǒng)的交互性和靈活性,主要針對視頻會議、可視電話的超低比特率編碼等多媒體應(yīng)用。目前在嵌入式系統(tǒng)中,MPEG-4編解碼主要都是通過專用芯片實現(xiàn)的,其實現(xiàn)方法與MPEG-1、MPEG-2的硬件實現(xiàn)方法類似,將編碼算法固化在芯片的硬件電路中,所以導致它在使用中存在以下缺點:
a) 性價比不高。由于現(xiàn)在MPEG-4編碼技術(shù)還在不斷發(fā)展中,還沒有一個真正成熟的算法支持,所以市場上推出的MPEG-4編碼芯片都是在標準基礎(chǔ)上進行了修改和簡化,在性能上與H.263等編碼芯片上沒有明顯的優(yōu)勢,所以其性價比不高。
b) 可移植性差。由于各廠商所生產(chǎn)的編碼芯片都在固化時加入了自己對編碼算法的改進和優(yōu)化,所以在解碼端必須使用對應(yīng)的專用解碼器,這就導致出現(xiàn)了兼容性的問題。
c) 無可擴展性。隨著對MPEG-4編解碼標準的研究,必然提出許多新的算法及對原有算法的改進,但是現(xiàn)有的MPEG-4編碼芯片已將已有的算法固定在了芯片硬件電路中,所以無法方便地在芯片上進行算法的修改及擴展。
所以在設(shè)計該系統(tǒng)時,主要采用了軟件實現(xiàn)其編解碼,在嵌入式系統(tǒng)中采用軟件實現(xiàn)編解碼,可以彌補硬件編解碼上的諸多不足,而且便于對算法本身進行研究和改進。但是,也需要考慮幾個問題:首先,由于MPEG-4編碼算法運算量復雜,而嵌入式系統(tǒng)的資源有限,所以必須考慮所選平臺微處理器的運算能力;其次,在編碼軟件及數(shù)據(jù)采集硬件的接口部分,由于需要針對不同的采集硬件,所以需要做許多匯編級的優(yōu)化。
評論