吳笑天,魯劍鋒,王宇慶,陳典兵
(1.中國(guó)科學(xué)院 長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,吉林 長(zhǎng)春 510640;2.中國(guó)科學(xué)院大學(xué),北京 510640)
無(wú)人機(jī)是一種近年來(lái)倍受各國(guó)青睞的高性能信息化裝備,具有起降簡(jiǎn)單,操作靈活,成本低廉,不懼傷亡等多種優(yōu)勢(shì)。無(wú)人機(jī)的出現(xiàn)極大豐富和改變了戰(zhàn)爭(zhēng)的模式,在航空偵察、情報(bào)支援、電子干擾等諸多領(lǐng)域發(fā)揮著不可替代的作用[1-2]。無(wú)人機(jī)在實(shí)戰(zhàn)中體現(xiàn)出的最大優(yōu)勢(shì)在于情報(bào)獲取上,而圖像數(shù)據(jù)則又是情報(bào)數(shù)據(jù)的重要內(nèi)容之一,因此無(wú)人機(jī)的圖像處理技術(shù)將對(duì)其作戰(zhàn)性能的提升產(chǎn)生很大的影響,各類(lèi)圖像預(yù)處理算法在該領(lǐng)域均有著廣泛的應(yīng)用,如配準(zhǔn)、校正、圖像增強(qiáng)等[3-5],本文將重點(diǎn)研究無(wú)人機(jī)的圖像壓縮技術(shù)。
無(wú)人機(jī)所獲取的高分辨率圖像信息需要經(jīng)過(guò)無(wú)線鏈路傳輸至地面終端顯示,但即便是每秒25幀的CIF圖像(352×288)也將產(chǎn)生每秒約2.5 MB的數(shù)據(jù)量。因此,利用數(shù)字化手段對(duì)無(wú)人機(jī)獲取圖像進(jìn)行機(jī)上實(shí)時(shí)在線壓縮處理成為無(wú)人機(jī)視頻數(shù)據(jù)傳輸?shù)年P(guān)鍵技術(shù)[6]。無(wú)人機(jī)對(duì)其承載的電子學(xué)設(shè)備有著很高的要求,其有限的能量供應(yīng)決定了其電子學(xué)設(shè)備必須具備尺寸小、重量輕、功耗低等特點(diǎn)[7]。傳統(tǒng)的嵌入式H264板級(jí)壓縮系統(tǒng)多采用高性能DSP或FPGA實(shí)現(xiàn)軟件編碼[8-9]。但上述設(shè)計(jì)方案往往存在著成本高、功耗大、軟件實(shí)現(xiàn)復(fù)雜等弊端。本文基于TM320DM368和嵌入式Linux技術(shù)實(shí)現(xiàn)出一種可供無(wú)人機(jī)使用的視頻實(shí)時(shí)壓縮處理系統(tǒng)。本系統(tǒng)依賴該芯片內(nèi)嵌的視頻協(xié)處理硬核執(zhí)行H264編碼,以嵌入式Linux為板級(jí)操作系統(tǒng),可穩(wěn)定高效的管理視頻采集、硬核調(diào)度、串口通訊、數(shù)據(jù)輸出等諸多任務(wù)。試驗(yàn)結(jié)果表明,本系統(tǒng)可實(shí)時(shí)采集PAL制式視頻源,執(zhí)行實(shí)時(shí)H264編碼任務(wù),并將壓縮后的數(shù)據(jù)通過(guò)通用高速串行接口SPI經(jīng)無(wú)線鏈路處理單元傳輸至地面終端顯示輸出。本系統(tǒng)平均功耗僅為1.5W,具有功耗低、成本低、體積小、重量輕、實(shí)時(shí)性強(qiáng)等諸多優(yōu)勢(shì),能夠滿足無(wú)人機(jī)視頻壓縮的應(yīng)用需求。
無(wú)人機(jī)有限的能量供應(yīng)決定了其電子學(xué)設(shè)備必須具備體積小、重量輕、功耗低等特點(diǎn)。同時(shí),無(wú)人機(jī)廣泛的地域應(yīng)用范圍又對(duì)其電子學(xué)設(shè)備提出了較高的環(huán)境適應(yīng)性要求。為了滿足這些要求,本系統(tǒng)的主芯片選取了TI公司生產(chǎn)的專(zhuān)用數(shù)字多媒體低功耗處理芯片TMS320DM368,簡(jiǎn)稱DM368。選取DM368為本視頻壓縮系統(tǒng)的核心處理器主要基于如下的考慮:
1.高性能的主核處理器 DM368的主核是主頻432MHz的ARM926EJ-S處理器,同時(shí)內(nèi)置 了16K 的Instruction Cashe,8K 的 Data Cashe,32K片內(nèi)RAM,16K片內(nèi)ROM等諸多內(nèi)部資源,可運(yùn)行嵌入式實(shí)時(shí)Linux操作系統(tǒng),能夠在實(shí)時(shí)操作系統(tǒng)的調(diào)度下完成各類(lèi)復(fù)雜的無(wú)人機(jī)數(shù)據(jù)交互工作。同時(shí)該芯片采用65nm工藝技術(shù)加工,性能穩(wěn)定,成本低廉,批量?jī)r(jià)格約為100RMB/片。
2.硬件化的輔核處理器 DM368片上集成了硬件化的圖像處理協(xié)處理器(HDVICP和MJCP),上述協(xié)處理器可運(yùn)行 H.264-BP/MP/HP,MPEG4等多種視頻編解碼算法,在協(xié)處理器硬核上執(zhí)行H.264編碼等視頻處理時(shí),不占用ARM主核資源。該協(xié)處理器上限可支持1080P-30fps的視頻數(shù)據(jù)壓縮。由于圖像協(xié)處理器以硬件化的形式固化在芯片中,較比同系列的TMS320DM6467或其他雙核架構(gòu)的Davinci系列芯片,在執(zhí)行H264編解碼等圖像處理操作時(shí)有著更低的功率消耗。與其他系列Davinci芯片相同的是,DM368亦包含視頻前端處理模塊(VPFE)和視頻后端處理(VPBE)模塊。利用這些模塊,應(yīng)用層程序可在DMAI中間層和片上實(shí)時(shí)Linux操作系統(tǒng)的基礎(chǔ)上方便的管理各類(lèi)視頻數(shù)據(jù)的輸入與輸出。
3.豐富的外部接口資源 DM368有著豐富的邏輯接口。DDR2高速接口可直接外接DDR2存儲(chǔ)器,由嵌入式Linux對(duì)DM368內(nèi)嵌的DDR2控制執(zhí)行讀寫(xiě)控制;EMIF接口可外接NAND Flash Memory或FPGA設(shè)備,以實(shí)現(xiàn)芯片間數(shù)據(jù)的高速傳輸存儲(chǔ);USB接口具有USB2.0高速通信能力,可工作在OTG模式;具備5個(gè)SPI高速串行通信接口,可作為數(shù)據(jù)輸出口對(duì)外通訊,亦可 外 掛 SPI 設(shè) 備;10/100Mb/s 以 太 網(wǎng) 接 口EMAC,可作為數(shù)據(jù)輸出口對(duì)外交互數(shù)據(jù)或在網(wǎng)絡(luò)掛載時(shí)使用;以及標(biāo)準(zhǔn)IIC,標(biāo)準(zhǔn)UART,Key Scan等常見(jiàn)外設(shè)接口。
4.較高的環(huán)境適應(yīng)性要求 采用了65nm工藝技術(shù)加工的DM368,其工業(yè)級(jí)系列產(chǎn)品的溫度適應(yīng)性范圍為-40℃~80℃,能夠滿足無(wú)人機(jī)嚴(yán)苛的環(huán)境適應(yīng)性要求。
本系統(tǒng)以DM368為核心處理器,主要由視頻采集模塊、存儲(chǔ)器模塊、標(biāo)準(zhǔn)外設(shè)模塊(如UART、EMAC、SPI等)和電源模塊組成,本系統(tǒng)的硬件架構(gòu)如圖1所示。
圖1 系統(tǒng)硬件架構(gòu)Fig.1 Hardware architecture of system
1.視頻采集模塊 由于課題需要,本系統(tǒng)分時(shí)采集雙路標(biāo)準(zhǔn)模擬PAL視頻,并可依照地面站軟件的命令實(shí)現(xiàn)雙路視頻的自由切換。為此,我們選擇具有雙通道10-bit模數(shù)轉(zhuǎn)換芯片TVP5147。選擇該款芯片主要基于如下的三點(diǎn)考慮:(a)TVP5147內(nèi)嵌雙路高性能低功耗AD轉(zhuǎn)換器,可同時(shí)外接兩路視頻輸入,能夠滿足本課題分時(shí)采集雙路視頻輸入的系統(tǒng)要求。(b)TVP5147支持多種制式的模擬視頻,如PAL、NTSC、SECAM;支持多種輸入方式,如CVBS、SVideo、YPbPr,其中CVBS輸入方式較另兩種方式簡(jiǎn)單,除共地所需的一根地線外,僅需要單個(gè)引腳即可實(shí)現(xiàn)信號(hào)的輸入。(c)TVP5147可配置成10-bit,4:2:2-YCbCr的 BT.656碼流形式輸出,可 與 DM368 內(nèi) 嵌 的 8-bit,4:2:2-YCbCr 的BT.656接口無(wú)縫對(duì)接(10-bit對(duì)接8-bit接口時(shí),需舍棄低兩位)。本課題中,雙路視頻源均采用PAL制式,以CVBS方式輸入至TVP5147。TVP5147芯片的初始化以及控制工作由主控設(shè)備通過(guò)IIC總線配置芯片內(nèi)部寄存器實(shí)現(xiàn),后文將詳細(xì)闡述其IIC總線接口以“視頻子設(shè)備”的形式存在于V4L2的視頻框架內(nèi),并有專(zhuān)門(mén)的驅(qū)動(dòng)與之相對(duì)應(yīng)。
2.存儲(chǔ)器模塊 DM368作為一個(gè)嵌入式系統(tǒng)的核心處理器,同標(biāo)準(zhǔn)電腦CPU一樣,需要“內(nèi)存”“外存”設(shè)備輔助其工作。DM368內(nèi)嵌的DDR2接口以及DDR2控制器可以方便的外接DDR2設(shè)備。一般地,Linux操作系統(tǒng)穩(wěn)定而流暢的運(yùn)行需要80MB的內(nèi)存空間,應(yīng)用層程序所開(kāi)辟的緩存區(qū)大約需要30MB左右的內(nèi)存空間[10],并綜合考慮低功耗要求等因素,本系統(tǒng)最終選擇了一片128MB的DDR2芯片K4T1G164QF作為本系統(tǒng)的“內(nèi)存”芯片。DM368集成的EMIF接口可以方便的外接外部存儲(chǔ)器。該外部存儲(chǔ)器需要有足夠的空間存儲(chǔ)Bootloader,Linux內(nèi)核以及文件系統(tǒng)。本系統(tǒng)綜合考慮存儲(chǔ)空間需要以及低功耗需求,最終選取了 一 片128MB的 NAND FLASH 芯 片K9F1G08U0C作為本系統(tǒng)的“外存”芯片。
3.標(biāo)準(zhǔn)外設(shè)模塊 DM368內(nèi)嵌了常用的標(biāo)準(zhǔn)外設(shè)接口,這使得外設(shè)功能電路的設(shè)計(jì)變得較為簡(jiǎn)單。但是由于無(wú)人機(jī)內(nèi)部各分系統(tǒng)間電磁干擾較大,除了加裝屏蔽殼等手段外,電子學(xué)系統(tǒng)仍需要特殊的設(shè)計(jì)以降低系統(tǒng)間的電磁干擾。在本課題中主要應(yīng)用到了5個(gè)標(biāo)準(zhǔn)接口,分別為調(diào)試串口(Debug UART),標(biāo)準(zhǔn)通訊串口(UART),網(wǎng)口(EMAC),IIC接口和高速串行通信接口(SPI)。其中,調(diào)試串口和網(wǎng)口是DM368在線調(diào)試以及程序下載時(shí)使用,在機(jī)上離線狀態(tài)時(shí)不使用。IIC接口在DM368對(duì)TVP5147執(zhí)行命令配置操作時(shí)使用,屬板內(nèi)芯片間通訊,不需要考慮系統(tǒng)間的電磁干擾因素。標(biāo)準(zhǔn)通訊串口和高速串行通信接口是本系統(tǒng)的對(duì)外數(shù)據(jù)交互接口,需要充分考慮系統(tǒng)間的電磁干擾性問(wèn)題。其中本系統(tǒng)由標(biāo)準(zhǔn)通訊串口接收外部操控命令,由高速串行通信接口對(duì)外實(shí)時(shí)傳輸H264壓縮數(shù)據(jù)。為此,本系統(tǒng)使用了MAX3295等芯片以“差分對(duì)”的形式傳輸上述數(shù)據(jù)信號(hào),并在數(shù)據(jù)接口連接器附近加裝“穿心電容”,以充分降低本系統(tǒng)對(duì)外部設(shè)備的電磁干擾。試驗(yàn)結(jié)果表明,外設(shè)接口采用上述設(shè)計(jì)后,能夠有效降低系統(tǒng)間數(shù)據(jù)傳輸?shù)恼`碼率,提升本系統(tǒng)電磁干擾的承受能力,同時(shí)有效降低對(duì)外部系統(tǒng)的電磁輻射影響。
4.電源模塊 DM368嵌入式系統(tǒng)的電源電路采用雙級(jí)設(shè)計(jì)。第一級(jí)將外部供電電壓12V轉(zhuǎn)換為5V,第二級(jí)由5V分別轉(zhuǎn)換為DM368需要的3種供電電壓值,即1.35V的內(nèi)核電壓,1.8V的DDR2芯片電壓以及3.3V的IO電壓。在本系統(tǒng)中,第一級(jí)轉(zhuǎn)換芯片采用TI公司的TPS54331,該芯片的輸入電壓范圍可從3.5V至28V,能夠滿足無(wú)人機(jī)各類(lèi)特殊的供電電壓需要。第二級(jí)采用TI公司的TPS65251,該芯片可方便的將5V電壓轉(zhuǎn)換為DM368所需的多種電壓值,并可依據(jù)DM368手冊(cè)所規(guī)定的內(nèi)核電壓、DDR電壓以及IO電壓上電要求調(diào)整上電順序[11-12]。
視頻采集是本系統(tǒng)的核心功能,也是軟件編程工作量最大、架構(gòu)最為復(fù)雜的部分。視頻碼流數(shù)據(jù)從底層硬件采集至頂層應(yīng)用程序調(diào)用需要經(jīng)歷硬件層、內(nèi)核層、應(yīng)用層3個(gè)層次的數(shù)據(jù)處理及封裝,如圖2所示。
圖2 視頻采集三層框架Fig.2 3-level software framework of video capture
在硬件層明確了AD芯片與DM368物理上的電氣連接;內(nèi)核層中涉及視頻數(shù)據(jù)處理的工作主要由Linux視頻驅(qū)動(dòng)開(kāi)源標(biāo)準(zhǔn)V4L2規(guī)范下的VPFE驅(qū)動(dòng)完成;應(yīng)用層經(jīng)TI公司提供的中間層軟件dmai封裝處理后以幾個(gè)簡(jiǎn)單的函數(shù)接口交付給應(yīng)用層以供視頻數(shù)據(jù)的后續(xù)處理。本章節(jié)將單獨(dú)討論視頻采集軟件程序設(shè)計(jì),即視頻數(shù)據(jù)的內(nèi)核層與應(yīng)用層架構(gòu)設(shè)計(jì)。
3.1.1 內(nèi)核層視頻數(shù)據(jù)處理
在內(nèi)核層中,Linux下的視頻設(shè)備驅(qū)動(dòng)需要遵循統(tǒng)一的開(kāi)源標(biāo)準(zhǔn)V4L2(Video For Linux 2)。V4L2是V4L的升級(jí)版,是專(zhuān)門(mén)針對(duì)Linux視頻捕獲設(shè)計(jì)的開(kāi)源程序接口,并逐步發(fā)展為L(zhǎng)inux視頻驅(qū)動(dòng)規(guī)范,廣泛應(yīng)用于各類(lèi)帶有視頻采集、控制功能的嵌入式視頻系統(tǒng)中,如視頻會(huì)議、視頻監(jiān)控、視頻導(dǎo)航等。V4L2能夠適應(yīng)越來(lái)越復(fù)雜的視頻采集硬件。大部分視頻采集硬件的控制需要借助視頻口外的其他接口,如本課題中TVP5147所內(nèi)嵌的IIC接口。這些視頻控制接口與視頻驅(qū)動(dòng)程序休息相關(guān),并以“視頻子設(shè)備”的形式融入V4L2框架中。V4L2在內(nèi)核層中細(xì)化為雙層驅(qū)動(dòng)。
雙層驅(qū)動(dòng)架構(gòu)的頂層為V4L2dev設(shè)備。該設(shè)備的定義存在于內(nèi)核文件V4L2-dev.c中。在該文件下,主要完成兩部分工作:(a)向內(nèi)核提供接口函數(shù),即內(nèi)核的加載卸載函數(shù)。(b)設(shè)備接口函數(shù),即虛擬文件系統(tǒng)與V4L2設(shè)備的交互接口。
Linux系統(tǒng)中用戶對(duì)設(shè)備的操作采用文件接口方式實(shí)現(xiàn),虛擬文件系統(tǒng)將用戶對(duì)文件的操作轉(zhuǎn)化為具體的設(shè)備操作,它包括硬件探測(cè)、初始化、設(shè)備讀寫(xiě)以及設(shè)備控制等標(biāo)準(zhǔn)化操作。V4L2設(shè)備驅(qū)動(dòng)的主要工作就是具體實(shí)現(xiàn)這種轉(zhuǎn)化過(guò)程工作。這樣V4L2標(biāo)準(zhǔn)向上就可以為應(yīng)用層程序提供清晰、統(tǒng)一、標(biāo)準(zhǔn)的API函數(shù)接口,如open(),close(),read(),write(),ioctl(),mmap()等。通過(guò)這些接口函數(shù)應(yīng)用層程序可方便的實(shí)現(xiàn)V4L2設(shè)備的打開(kāi),關(guān)閉,IO控制以及內(nèi)存映射等功能。其中,open(),close(),read(),write()函數(shù)分別實(shí)現(xiàn)了V4L2設(shè)備的開(kāi)關(guān)讀寫(xiě);ioctl()函數(shù)則承擔(dān)了V4L2設(shè)備的命令交互查詢等重要操作;mmap()函數(shù)可以將設(shè)備內(nèi)存映射到應(yīng)用程序空間,避免了在視頻采集過(guò)程中頻繁的內(nèi)核態(tài)至用戶態(tài)的數(shù)據(jù)拷貝操作。
V4L2雙層架構(gòu)中的底層驅(qū)動(dòng)為VPFE設(shè)備驅(qū)動(dòng)。VPFE是DM368的視頻處理前端模塊,由CCDC、IPIPE、IPIPEIF、H3A 四個(gè)模塊組成。底層的VPFE驅(qū)動(dòng)可以認(rèn)為是一個(gè)videodev設(shè)備,該設(shè)備的定義存在于內(nèi)核文件vpfe_capture.c中。在該文件下,主要完成如下的三部分工作:(a)向內(nèi)核提供函數(shù)接口,即內(nèi)核的加載卸載函數(shù)。(b)實(shí)現(xiàn)硬件探測(cè)、移除功能。其中,硬件探測(cè)函數(shù)probe()函數(shù)是底層硬件初始化工作的載體,它是在驅(qū)動(dòng)注冊(cè)加載時(shí)運(yùn)行的,它主要完成兩部分工作。其一是檢測(cè)VPFE設(shè)備是否存在,若存在則將VPFE配置成V4L2_dev設(shè)備,完成寄存器初始化工作,并向V4L2層的注冊(cè);其二是查詢當(dāng)前系統(tǒng)的V4L2_subdev設(shè)備。在本課題中,數(shù)字視頻解碼芯片TVP5147的配置接口IIC就是一種常見(jiàn)的V4L2子設(shè)備。TVP5147的IIC子設(shè)備有自己獨(dú)立的驅(qū)動(dòng),但是其驅(qū)動(dòng)的調(diào)用卻是在V4L2_dev設(shè)備探測(cè)函數(shù)階段完成。通過(guò)調(diào)用TVP5147的IIC子設(shè)備驅(qū)動(dòng),可完成其初始化配置工作,并將它們與已注冊(cè)的V4L2_dev設(shè)備相連接,并向 V4L2層注冊(cè)。(c)完成 V4L2_ioctl_ops域?qū)崿F(xiàn)。應(yīng)用層程序通過(guò)ioctl()函數(shù)實(shí)現(xiàn)視頻設(shè)備的查詢控制操作,其最終調(diào)用的是內(nèi)核層的video_device的ioctl_ops域下的具體函數(shù),即V4L2_ioctl_ops域下的具體函數(shù)實(shí)現(xiàn)。
TVP5147的IIC子設(shè)備驅(qū)動(dòng)同樣隸屬于V4L2雙層架構(gòu)中的底層。在視頻硬件設(shè)備中,存在種類(lèi)繁多的子設(shè)備,如IIC、USB等。在V4L2架構(gòu)中,將涉及子設(shè)備控制的那部分功能單獨(dú)獨(dú)立出來(lái),如vidioc_s_ctrl、vidioc_s_frequency等,并將它們最終封裝在V4L2_subdev中供頂層程序調(diào)用。TVP5147的IIC子設(shè)備驅(qū)動(dòng)存在于內(nèi)核文件tvp514x文件中。在該文件下,主要完成如下三部分工作:(a)向內(nèi)核提供函數(shù)接口,即內(nèi)核的加載卸載函數(shù)。(b)實(shí)現(xiàn)硬件探測(cè)、移除功能。其中探測(cè)函數(shù)probe()的功能與VPFE大體一致,在驅(qū)動(dòng)注冊(cè)時(shí)完成芯片的探測(cè)以及初始化工作。(c)完成 V4L2_subdev_ops域的具體實(shí)現(xiàn),該域一般包含了通用操作合集、調(diào)諧器操作合集、音頻操作合集以及視頻操作合集。其中TVP5147作為視頻解碼芯片,僅需要實(shí)現(xiàn)通用操作合集以及視頻操作合集兩個(gè)部分即可。
3.1.2 應(yīng)用層視頻數(shù)據(jù)處理
在應(yīng)用層中,用戶可以利用V4L2的頂層程序接口實(shí)現(xiàn)V4L2設(shè)備的控制。但是V4L2的驅(qū)動(dòng)設(shè)備調(diào)用同樣需要遵循一定的流程,如視頻設(shè)備文件的開(kāi)關(guān)、視頻制式的設(shè)置、視頻幀緩沖的申請(qǐng)與管理、幀緩沖的用戶空間映射等等繁瑣的操作。為了簡(jiǎn)化這些操作,TI公司在應(yīng)用層又專(zhuān)門(mén)開(kāi)發(fā)了一套DMAI庫(kù)以幫助程序員簡(jiǎn)化V4L2設(shè)備的控制流程。DMAI全稱為Davinci Multimedia Application Interface,是 TI專(zhuān)門(mén)針對(duì)達(dá)芬奇架構(gòu)推出協(xié)助程序員開(kāi)發(fā)的位于應(yīng)用層的通用API接口。其內(nèi)涵不僅包含了上文所述的視頻處理,同樣也包含Codec Engine管理,線程同步,內(nèi)存管理等諸多方面。
系統(tǒng)軟件應(yīng)用層采用多線程程序框架,主線程由main.c定義,子線程為capture線程,video線程、write線程和uart線程。在主線程下完成其余線程的初始化工作后,轉(zhuǎn)換為控制線程,用于采集分析其它線程的運(yùn)行狀態(tài)并在終端打印輸出;capture線程基于DMAI框架與視頻驅(qū)動(dòng)節(jié)點(diǎn)(/dev/video0)執(zhí)行視頻控制與數(shù)據(jù)交互,采集到的視頻裸數(shù)據(jù)經(jīng)FIFO管道機(jī)制交付給video線程進(jìn)行數(shù)據(jù)后續(xù)處理;video線程主要負(fù)責(zé)視頻數(shù)據(jù)與系統(tǒng)硬核的調(diào)度,從capture線程取來(lái)的視頻裸數(shù)據(jù)交付給DM368壓縮硬核執(zhí)行數(shù)據(jù)壓縮,從硬核取出的數(shù)據(jù)即為H264碼流數(shù)據(jù),同樣經(jīng)FIFO管道機(jī)制交付給下級(jí)線程——write線程;write線程專(zhuān)注用于數(shù)據(jù)處理,該線程從FIFO管道中取出從video線程處獲取的H264碼流數(shù)據(jù),將H264碼流數(shù)據(jù)經(jīng)組包協(xié)議處理后經(jīng)硬件SPI口發(fā)送,同時(shí)write線程還需監(jiān)控uart線程,完成uart串口數(shù)據(jù)的組包,解包,解析等操作,并依靠uart線程完成本系統(tǒng)與外部中控系統(tǒng)的數(shù)據(jù)交互工作;uart線程任務(wù)較為單一,由于組包解包工作在write線程完成,因此該線程僅完成串口裸數(shù)據(jù)的讀寫(xiě)操作。上述四個(gè)線程宏觀并行,微觀串行執(zhí)行,由嵌入式板級(jí)Linux系統(tǒng)管理線程間調(diào)度。本系統(tǒng)應(yīng)用層軟件的多線程程序架構(gòu)參見(jiàn)圖3所示。
圖3 多線程程序框架Fig.3 Multi-task software framework
本系統(tǒng)軟件開(kāi)發(fā)環(huán)境如下:
(a)嵌入式Linux內(nèi)核版本號(hào)為2.6.32.17;
(b)交叉編譯環(huán)境 arm-none-linuxgnueabi-4.3.3;
(c)DMAI軟件版本號(hào)為2.20.00.15;
(d)宿主機(jī) VMWare-Ubuntu-12.04
在實(shí)驗(yàn)室環(huán)境下,使用地面站解碼系統(tǒng)為接收端評(píng)估本系統(tǒng)效果。編碼端與解碼端采用SPI對(duì)點(diǎn)對(duì)接方式,解碼端以PAL制式輸出解碼視頻至外部顯示屏。試驗(yàn)表明,本系統(tǒng)運(yùn)行穩(wěn)定,串口命令響應(yīng)無(wú)延遲,地面接收端輸出的圖像清晰流暢,沒(méi)有失真及馬賽克現(xiàn)象引入。系統(tǒng)延遲約為0.6~0.9s之間。此處需要補(bǔ)充說(shuō)明的是上述延遲時(shí)間是由本系統(tǒng)編碼端硬核編碼,SPI組包,SPI傳輸,地面解碼端SPI解包以及解碼共同決定的。系統(tǒng)在12V穩(wěn)壓電源供電情況下,工作時(shí)輸出電流為0.13左右,功耗約為1.5W。圖4是解碼端的圖像效果截圖。
圖4 解碼端圖像效果截圖Fig.4 Graphic result captured from decoding system
無(wú)人機(jī)有限的能量供應(yīng)決定了其電子學(xué)設(shè)備必須具備尺寸小、重量輕、功耗低等特點(diǎn)。本文結(jié)合工程應(yīng)用背景,設(shè)計(jì)出一套可供無(wú)人機(jī)使用的低功耗視頻實(shí)時(shí)壓縮系統(tǒng)。系統(tǒng)以DM368為核心處理器,以嵌入式Linux為板級(jí)操作系統(tǒng)。系統(tǒng)軟件內(nèi)核層基于V4L2架構(gòu)實(shí)現(xiàn)視頻采集,應(yīng)用層基于多線程架構(gòu)實(shí)現(xiàn)視頻采集,硬核調(diào)度,串口通訊,數(shù)據(jù)輸出等諸多任務(wù)。試驗(yàn)結(jié)果表明,較比傳統(tǒng)的嵌入式視頻H264軟件編碼壓縮系統(tǒng)相比,本系統(tǒng)在處理PAL制式為視頻源的H264編碼任務(wù)時(shí),平均功耗僅為1.5W,具有功耗低,成本低、體積小、重量輕、實(shí)時(shí)性強(qiáng)等諸多優(yōu)勢(shì),能夠滿足無(wú)人機(jī)視頻壓縮的應(yīng)用需求。
本系統(tǒng)以DM368為核心處理單元,依賴內(nèi)嵌的視頻協(xié)處理硬件編碼H264視頻具有一定的弊端。其一,由于系統(tǒng)調(diào)用DM368固化的協(xié)處理壓縮硬核,用戶僅能對(duì)硬核開(kāi)放的接口進(jìn)行控制,對(duì)于未開(kāi)放的部分則不能控制,并需要對(duì)硬核要求對(duì)視頻做適當(dāng)?shù)恼{(diào)整,比如視頻源分辨率需調(diào)整為2K×2K以下,行列均為32的整數(shù)倍等。若針對(duì)大視場(chǎng)非標(biāo)圖像且明確要求不可損失分辨率的情形,則不在DM368可處理的范圍之列;其二,由于DM368內(nèi)嵌的協(xié)處理壓縮硬核需在嵌入式Linux的管理調(diào)度下運(yùn)行,不能在無(wú)操作系統(tǒng)的環(huán)境下運(yùn)行。嵌入式Linux是一種實(shí)時(shí)化操作系統(tǒng),但是“實(shí)時(shí)”的概念是指系統(tǒng)正常加載運(yùn)行后系統(tǒng)調(diào)度和響應(yīng)的“實(shí)時(shí)”。在嵌入式Linux沒(méi)有加載完成之前,系統(tǒng)無(wú)法對(duì)外界激勵(lì)作出正常響應(yīng)。因此,本系統(tǒng)不適宜在“上電即運(yùn)行”特殊項(xiàng)目背景下工作。本系統(tǒng)內(nèi)核經(jīng)優(yōu)化裁剪處理后,啟動(dòng)時(shí)間約為15s。盡管存在上述弊端,但是以DM368為核心的視頻壓縮系統(tǒng)以其功耗低、成本低、體積小、重量輕、實(shí)時(shí)性強(qiáng)等諸多優(yōu)勢(shì)成為了業(yè)界主流的視頻壓縮技術(shù)方案之一。
[1]馮琦,周德云.軍用無(wú)人機(jī)發(fā)展趨勢(shì)[J].電光與控制,2003,10(1):9-13.Feng Q,Zhou D Y.The development trend of unmanned air vehicle[J].Electronics Optics & Control,2003,10(1):9-13.(in Chinese)
[2]秦博.無(wú)人機(jī)發(fā)展綜述 [J].飛航導(dǎo)彈,2002,8:4-9.Qin B.The overview of unmanned air vehicle development trend [J].Winged Missiles Journal,2002,8:4-9.(in Chinese)
[3]楊權(quán),劉晶紅,馬曉飛.基于圖像處理的機(jī)載光電平臺(tái)自動(dòng)調(diào)焦方法 [J].液晶與顯示,2011,26(5):677-682.Yang Q,Liu J H,Ma X F.Auto-focusing method based on image processing for airborne electro-optical imaging platform [J].Chinese Journal of Liquid Crystals and Displays,2011,26(5):677-682.(in Chinese)
[4]尹傳歷,王嘯哲.機(jī)載嵌入式圖像增強(qiáng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [J].液晶與顯示,2013,28(4):604-607.Yin C L,Wang X Z.Design and realization of airborne embedded image enhancement system [J].Chinese Journal of Liquid Crystals and Displays,2013,28(4):604-607.(in Chinese)
[5]李剛,張赫.機(jī)載光電平臺(tái)實(shí)時(shí)圖像消旋 [J].液晶與顯示,2014,29(2):304-309.Li G,Zhang H.Real-time image rotation-elimination for airborne photoelectric platform [J].Chinese Journal of Liquid Crystals and Displays,2014,29(2):304-309..(in Chinese)
[6]催麥會(huì).無(wú)人機(jī)視頻情報(bào)壓縮傳輸技術(shù)[J].電訊技術(shù),2007,47(1):130-133.Cui K H.Compression transmission technology of UAV video intelligence[J].Telecommunication Engineering,2007,47(1):130-133.(in Chinese)
[7]魯劍鋒.無(wú)人機(jī)光電載荷圖像處理器的設(shè)計(jì) [J].中國(guó)光學(xué),2011,4(5):448-452.Lu J F.Design of image system in opto-electrical payloads on UAV [J].Chinese Journal of Optics,2011,4(5):448-452.(in Chinese)
[8]宋揚(yáng).基于TMS320DM642DSP的H.264編碼器優(yōu)化與設(shè)計(jì) [D].西安:西安電子科技大學(xué),2007.Song Y.The design and optimization of H264encoder based on TMS320DM642[D].Nanjing:Nanjing University of Science and Technology,2007.(in Chinese)
[9]劉志剛.基于FPGA的H.264編碼器的硬件的實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2009.Liu Z G.Hardware implementation of H.264encoder based on FPGA [D].Xi`an:Xidian University,2009.(in Chinese)
[10]王飛.基于Davinci技術(shù)的視頻編碼系統(tǒng)實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2012.Wang F.Implementation of video encoding system based on Davinci technology [D].Xi`an:Xidian University,2012.(in Chinese)
[11]林振.基于TMS320DM368的高清網(wǎng)絡(luò)攝像機(jī)的設(shè)計(jì) [D].廣州:華南理工大學(xué),2012.Lin Z.The design of a net camera based on TMS320DM368[D].Guangzhou:South China University of Technology,2012.(in Chinese)
[12]李宇成,李聰.基于DM368的視頻處理及軟件設(shè)計(jì) [J].計(jì)算機(jī)測(cè)量與控制,2013,21(10):2865-2871.Li Y C,Li C.Video processing based on DM368and software design [J].Chinese Computer Measurement and Control,2013,21(10):2865-2871.(in Chinese)