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