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