王小龍,邵春偉,朱 琛
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
?
基于TMS320DM8168嵌入式圖像處理系統(tǒng)的軟件設計
王小龍,邵春偉,朱 琛
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
摘 要:視頻信息具有直觀性、確切性、高效性、廣泛性等優(yōu)點,其開發(fā)、利用具有重要的應用價值。TMS320DM8168是一款處理能力強、運算速度快的DSP+ARM平臺,支持多路視頻數(shù)據(jù)采集和編碼。該系統(tǒng)是一個基于TMS320DM8168平臺實現(xiàn)兩路高清視頻捕獲、H.264編碼、存儲和傳輸?shù)裙δ艿南到y(tǒng)方案。系統(tǒng)功能強大,支持兩路cameralink接口視頻數(shù)據(jù)輸入、高速固態(tài)硬盤數(shù)據(jù)存儲和千兆網口數(shù)據(jù)傳輸,可廣泛應用于視頻監(jiān)控領域。
關鍵詞:TMS320DM8168;視頻;編碼
TMS320DM8168嵌入式圖像處理系統(tǒng)的軟件是指在TMS320DM8168 SoC芯片中的Cortex-A8處理器上運行的嵌入式軟件系統(tǒng)[1]。這部分軟件是以嵌入式Linux操作系統(tǒng)為基礎的。
嵌入式軟件主要是構建于嵌入式Linux操作系統(tǒng)之上的應用軟件,主要實現(xiàn)的功能是:通過 cameralink接口獲取信號源的視頻數(shù)據(jù),對數(shù)據(jù)進行H.264編碼并以文件的形式進行存儲,然后按照相關的網絡協(xié)議和計算機進行網絡通信,傳輸圖像文件。
TMS320DM8168運行Linux操作系統(tǒng),支持SD卡、固態(tài)硬盤等存儲設備,支持兩路千兆網口。由于視頻源采用cameralink接口進行視頻信號傳輸,系統(tǒng)選用解碼芯片DS288進行解碼;需對H.264編碼之后的圖像進行存儲,故搭配固態(tài)盤;需通過網絡傳輸存儲的視頻文件,故選用ET1011C千兆網絡芯片。硬件原理圖設計如圖1所示。
圖1 硬件原理設計圖
TMS320DM8168 SoC芯片中的Cortex-A8處理器需要構建嵌入式Linux操作系統(tǒng),才能讓應用軟件在其上運行,從而完成視頻捕獲、編碼、傳輸?shù)裙δ堋ortex-A8[2]支持SD卡、NandFlash等方式啟動。首先設置板卡的撥碼開關為SD卡方式啟動,燒寫u-boot.bin啟動文件和uImage內核文件到NandFlash,然后設置撥碼開關為NandFlash方式啟動,掛載NFS根文件系統(tǒng),即可上電啟動,開發(fā)應用程序。
在SD卡啟動方式下,嵌入式Linux操作系統(tǒng)需要通過MLO和U-boot進行引導。圖2為嵌入式Linux系統(tǒng)的引導過程。
圖2 在SD卡啟動方式下嵌入式Linux系統(tǒng)的引導過程
使用TI公司提供的軟件開發(fā)包和底層驅動程序,在虛擬機中進入到開發(fā)包目錄,編譯uboot源文件,生成可執(zhí)行文件MLO和u-boot.bin;編譯Linux源文件,生成uImage內核;將開發(fā)包提供的rootfs文件系統(tǒng)進行打包生成壓縮文件rootfs.tar.gz。將SD卡通過USB接口掛載到虛擬機上,使用分區(qū)命令生成boot分區(qū)和rootfs分區(qū);將MLO、u-boot.bin、uImage等文件拷貝至boot分區(qū),將rootfs.tar.gz拷貝至rootfs分區(qū)。同時在rootfs分區(qū)中新建文件夾programming,將u-boot. bin、uImage拷貝至programming文件夾下,新建load. sh腳本,內容包括燒寫u-boot.bin、設置啟動參數(shù)、燒寫uImage等命令。
將SD卡放入板卡的SD卡槽,設置板卡撥碼開關為SD卡啟動方式。上電后,板卡系統(tǒng)啟動并登陸進入programming文件夾,運行l(wèi)oad.sh腳本。等待命令運行完成,即將uboot.bin和uImage成功燒寫至NandFlash。將板卡斷電,取出SD卡。
在NandFlash方式啟動時,嵌入式Linux操作系統(tǒng)需要通過u-boot..bin進行引導。圖3為嵌入式Linux系統(tǒng)的引導過程。
圖3 在NandFlash方式啟動時嵌入式Linux系統(tǒng)的引導過程
如圖3所示,系統(tǒng)啟動時,首先由芯片內部的RBL(Rom Boot Loader)將NandFlash中存儲的U-boot程序引導到RAM中運行, U-boot會根據(jù)預設的環(huán)境參數(shù)將Linux uImage文件加載到DDR存儲器中運行,uImage啟動后會掛載虛擬機中的NFS根文件系統(tǒng),即可進行應用程序開發(fā)。
設置板卡撥碼開關為NandFlash方式啟動,啟動虛擬機,并配置虛擬機的NFS掛載參數(shù),將板卡重新上電,即在NandFlash方式下啟動。
當需要更改、測試uImage內核時,可在U-boot中使用TFTP燒寫uImage,其方法和步驟如下:
(1)U-boot中設置ipaddr環(huán)境變量: setenv ipaddr 192.168.1.8;
(2)U-boot中設置serverip環(huán)境變量:setenv serverip 192.168.1.120;
(3)U-boot中設置bootfile環(huán)境變量:setenv bootfile “uImage”;
(4)保存環(huán)境變量 saveenv 并重啟U-boot;
(5)設置PC端IP地址為192.168.1.120;
(6)PC中將編譯好的uImage拷貝到tftp32工具目錄下并啟動tftp32工具;
(7)在U-boot環(huán)境中運行tftp,tftp32會將uImage傳輸?shù)紻DR的0x81000000位置;
(8)運行bootm,即可啟動該內核進行測試。
TMS320DM8168高度集成1.2 GHz ARM Cortex-A8 RISC[4]處理器,主要負責外圍設備控制功能,包括數(shù)據(jù)讀取、存儲、控制等功能;1.0 GHz C674x VLIM DSP處理器,負責視頻壓縮、高速數(shù)據(jù)處理功能;高清視頻處理子系統(tǒng),包括2個165 MHz視頻采集通道和2個165 MHz視頻顯示通道;高清視頻編碼協(xié)處理器,硬核編碼協(xié)處理器,在高清視頻應用中優(yōu)勢明顯。在整個圖像處理系統(tǒng)中,TMS320DM8168需要實現(xiàn)捕獲兩路高清圖像數(shù)據(jù)并對圖像數(shù)據(jù)進行編碼、存儲在固態(tài)盤等功能。因此,捕獲信號源的高清視頻數(shù)據(jù)由VPSS[5]高清視頻處理子系統(tǒng)完成,對數(shù)據(jù)進行編碼由VIDEO高清視頻編碼協(xié)處理器完成,存儲數(shù)據(jù)至固態(tài)盤和通過網絡發(fā)送給PC 由ARM Cortex-A8處理器完成。因此,數(shù)據(jù)流程圖如圖4所示。
圖4 數(shù)據(jù)流程圖
本系統(tǒng)在開發(fā)過程中使用VMWare Station作為虛擬機運行的軟件環(huán)境,采用Ubuntu 10.04作為開發(fā)環(huán)境下的操作系統(tǒng)。系統(tǒng)中ARM端采用Linux2.6.1操作系統(tǒng),DSP和兩個Cortex-M3處理器運行SYS/ BIOS(BIOS6.x)操作系統(tǒng)。Linux系統(tǒng)是一個功能強大、設計完善的操作系統(tǒng),其最大特點是開源性和可裁剪性,同時具有成熟標準化的硬件控制機制-驅動程序。SYS/BIOS操作系統(tǒng)是DSP/BIOS(BIOS5.x)的升級版本,DSP/BIOS由TI發(fā)布,它僅占用很少的系統(tǒng)資源。BIOS提供底層的應用函數(shù)接口,可以用于支持系統(tǒng)實時分析、使用線程來管理程序、調度軟件中斷等。
本設計中所使用的DVRRDK版本為03.00.00.00.00。系統(tǒng)軟件設計時,采用MCFW(Multichannel FrameWork)[6]軟件架構來實現(xiàn)多核之間的通信和分工合作。MCFW軟件架構如圖5所示。
MCFW架構為不同的硬核提供了不同的link,其中M3 VPSS支持SYSTEM_LINK_ID_CAPTURE、SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0等link;M3 VIDEO 支持SYSTEM_VIDEO_LINK_ID_IPC_IN _M3_0、SYSTEM_LINK_ID_VENC_0等link;A8支持SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0、SYSTEM _HOST_LINK_ID_IPC_FRAMES_IN_0等link。
本系統(tǒng)中信號源的數(shù)據(jù)首先由SYSTEM_LINK_ID_CAPTURE捕獲,然后經過SYSTEM_LINK_ID_VENC_0對數(shù)據(jù)進行編碼,最后由A8將編碼后的數(shù)據(jù)以文件的形式存儲在固態(tài)盤,通過網絡發(fā)送給PC。其數(shù)據(jù)流如圖6所示。
圖6 數(shù)據(jù)流示意圖
Capture_link捕獲兩路數(shù)據(jù),其配置如下:
for(i=0; i { vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA + 2*i; pCaptureInstPrm= &capturePrm.vipInst[i]; pCaptureInstPrm->vipInstId= vipInstId%SYSTEM_CA PTURE_INST_MAX; pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_ VID_DEC_SII9233A_DRV; pCaptureInstPrm->inDataFormat= SYSTEM_DF_YUV422P; pCaptureInstPrm->standard= chainsCfg- >displayRes[i]; pCaptureInstPrm->numOutput= 1; pCaptureInstPrm->numChPerOutput= 1; pCaptureInstPrm->frameCaptureMode= FALSE; pCaptureInstPrm->fieldsMerged= FALSE; pCaptureOutPrm= &pCaptureInstPrm- >outParams[0]; pCaptureOutPrm->dataFormat= SYSTEM_DF_YUV422I_YUYV; pCaptureOutPrm->scEnable= FALSE; pCaptureOutPrm->scOutWidth= chainsCfg- >channelConf[i].width; pCaptureOutPrm->scOutHeight= chainsCfg- >channelConf[i].height; pCaptureOutPrm->outQueId= 0; } capturePrm.outQueParams[0].nextLink= nsfId; M3 VPSS和M3 VIDEO通過IPC進行通信,視頻數(shù)據(jù)進入M3 VIDEO,enc_link對數(shù)據(jù)進行編碼。 H.264是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)的聯(lián)合視頻組開發(fā)的一個數(shù)字視頻編碼標準,其具有廣闊的應用前景,例如實時視頻通信、因特網視頻傳輸、壓縮視頻存儲等。H.264是DPCM加變換編碼的混合編碼模式,采用“回歸基本”的簡潔設計,獲得比H.263++好得多的壓縮性能;加強了對各種信道的適應能力,采用“網絡友好”的結構和語法,有利于對誤碼和丟包的處理;應用目標范圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲)場合的需求。在技術上,H.264標準中有多個閃光之處,如統(tǒng)一的VLC符號編碼,高精度、多模式的位移估計,基于4×4塊的整數(shù)變換、分層的編碼語法等。這些措施使得H.264算法具有很高的編碼效率,在相同的重建圖像質量下,能夠比H.263節(jié)約50%左右的碼率。 M3 VIDEO支持H.264編碼,enc_link采用H.264編碼算法對圖像數(shù)據(jù)進行編碼。 PC端通過千兆網口訪問TMS320DM8168的vsftpd服務器。 Vsftpd是一個完全免費的開放源代碼的FTP服務器軟件,支持很多其他FTP服務器不支持的特征,比如非常高的安全性能需求、帶寬限制、良好的可伸縮性、可創(chuàng)建虛擬用戶、速率高等。本系統(tǒng)在視頻數(shù)據(jù)存儲為文件之后,PC端通過FlashFXP軟件訪問TMS320DM8168端的Vsftpd服務器,為保證嵌入端系統(tǒng)安全,禁止用戶訪問其他目錄,修改vsftpd.conf配置文件,對Vsftpd作如下配置: chroot_list_enable=NO chroot_local_user=YES PC端通過FlashFXP軟件登錄后,只能訪問視頻數(shù)據(jù)文件,進行文件傳輸。導出的文件經過特定的H.264解碼軟件解碼之后,即可播放視頻。 使用FPGA模擬的豎條狀信號源進行系統(tǒng)功能測試,存儲的圖像數(shù)據(jù)經過解碼之后,圖像如圖7所示,與FPGA模擬輸出的信號源一致。 圖7 豎條狀信號源解碼圖像 現(xiàn)場聯(lián)合調試存儲圖像數(shù)據(jù),解碼之后的圖像如圖8所示。 圖8 現(xiàn)場聯(lián)合調試存儲圖像數(shù)據(jù)解碼之后的圖像 本設計實現(xiàn)了一款基于TMS320DM8168的嵌入式圖像處理系統(tǒng)。該系統(tǒng)體積小,功能強大,能夠實現(xiàn)兩路視頻數(shù)據(jù)的捕獲、編碼、存儲以及網絡傳輸?shù)裙δ?,可廣泛應用于視頻監(jiān)控、安防、交通等領域。 參考文獻: [1] 劉嵐,尹勇,李京蔚. 基于ARM的嵌入式系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2008. [2] 沈沛意. DAVINCI技術剖析及實戰(zhàn)應用開發(fā)指南[M]. 西安:西安電子科技大學出版社,2012. [3] 彭啟宗. 達芬奇技術:數(shù)字圖像/視頻信號處理新平臺[M].北京:電子工業(yè)出版社,2008. [4] 高玉龍,白旭,吳瑋. 達芬奇技術開發(fā)基礎原理與實例[M]. 北京:電子工業(yè)出版社,2012. [5] 朱海,管慶. 基于DM8168的視頻監(jiān)控系統(tǒng)的實現(xiàn)[D]. 電子科技大學,2013. [6] 楊振永,王延杰,孫海江,丁南南,李靜宇. 基于TMS320DM8168的SOC高清視頻處理系統(tǒng)的設計與實現(xiàn)[J]. 液晶與顯示,2013. 王小龍(1988—),男,湖北人,畢業(yè)于西北工業(yè)大學,目前為中國電子科技集團公司第58研究所工程師。 Software Design of Embedded Image-processing System Based on TMS320DM8168 WANG Xiaolong, SHAO Chunwei, ZHU Chen Abstract:The video information has the advantages of intuition , precise , efficiency and breadth , It′s development and using have an important application value. TMS320DM8168 is a platform with the excellent performance of ARM and DSP as well as the high speed of operating , supports the capturing and encoding of multi-channel videos. The system is a scheme based on the platform of TMS320DM8168 to achieve the function of capturing , encoding , saving and transfering of two high definition videos. The system is powerful, supports videos input with two interfaces of cameralink , data saving with high speed solid disk and data transferring with gigabit net, can be widely used in the field of video surveillance. Keywords:TMS320DM8168; video; encode 作者簡介: 收稿日期:2015-9-14 中圖分類號:TP311 文獻標識碼:A 文章編號:1681-1070(2016)01-0044-055 結束語
(China Electronics Technology Group Corporation No.58 Research Institute, Wuxi 214035,China)