摘 要: 隨著視頻監控的不斷發展和DSP技術的進步,基于DSP的視頻監控受到越來越廣泛的關注和應用。基于TI公司的TMS320DM6437設計了實時的網絡視頻監控平臺。介紹了整個系統的框架,并對基于DSP/BIOS的軟件設計進行了詳細分析,如視頻驅動、Codec Engine軟件框架和網絡傳輸。該平臺具有視頻信號采集、視頻處理和視頻傳輸的功能,可應用于不同的領域。
關鍵詞: 視頻監控;DSP;DSP/BIOS
視頻監控作為當今安防工作的重要組成部分,目前正朝著數字化、智能化和網絡化的方向快速發展,廣泛應用于智能家居和交通安全等領域。解決視頻監控的關鍵技術之一是實現終端運動目標的識別和跟蹤。目前的視頻監控實現方案主要有以下幾種:
(1)基于PC的監控系統。該系統結構簡單、成本低,可實現簡單的視頻監控。但該系統不適合將其嵌入到遠程區域進行監控,無法滿足現在的安防需求[1]。
(2)基于DSP+FPGA雙處理器的視頻監控。其中FPGA完成圖像預處理的運算工作,DSP主要完成復雜的圖像后處理工作并輸出信號控制監控平臺。該系統能夠有效利用DSP和FPGA在功能上互補的特點,但是進行數據交換時易出現延遲問題,而且系統的性價比低,體積和功耗相對單處理器較高[2]。
(3)基于雙DSP的視頻監控系統。該系統采用兩片集成度高、運算速度快的DSP芯片,一片用于視頻監控的算法運算,另一片主要完成視頻的壓縮編碼。該系統傳輸速度快、實時性好,但也存在資源利用不充分的不足,而且系統相對復雜[3]。
(4)基于單核DSP的視頻監控系統。該方案滿足了視頻監控的需求,同時實現資源的充分利用[4]。
為此,本文提出了基于TMS320DM6437的視頻監控的設計。
1 系統整體介紹
該系統通過CMOS 攝像頭采集實時圖像,通過TVP5146解碼器對視頻信息解碼后將數據交給DM6437,然后視頻處理子系統調用算法處理,并把處理結果通過網絡傳輸交給終端PC。整個系統依托于DSP/BIOS操作系統來實現多任務調度和存儲器管理等。系統的整體主要硬件框架如圖1所示。
2 系統主要硬件介紹
2.1 核心處理器
系統選用TMS320DM6437數字媒體處理器作為核心處理器,它是首批支持達芬奇技術的純DSP 器件,其強大的功能可支持H.264視頻編碼。它有8個并行處理單元,其體系采用甚長指令字(CLIW)結構,具有強大的處理能力。DM6437還集成了很多外設接口,主要包括意識視頻處理子系統(VPSS)、以太網接口、I2C接口、EMIF接口和DDR2接口等。
其中VPSS提供了一個VPFE輸入接口(連接外部設備,如圖像傳感器、視頻解碼器等)以及一個VPBE輸出接口(連接顯示設備,如analog SDTV顯示器、數字LCD面板、HDTV視頻編碼器等)。VPFE由5部分組成:CCDC、IPIPE、H3A、resizer和histogram,這5部分組合構成了強大、靈活的前端接口;VPBE包含On-Screen Display(OSD)模塊、帶數字LCD和模擬DAC接口的Video Encoder(VENC)。VENC生成模擬式視頻輸出。DLCD控制器產生數字RGB/YCBCR,輸出數據及時間信號。
2.2 存儲器模塊
系統主要的存儲設備有DDR2,它與上一代DDR內存技術標準最大的不同就是,雖然同是采用了在時鐘的上升/下降沿同時進行數據傳輸的基本方式,但DDR2內存卻擁有兩倍于上一代DDR內存預讀取能力(即4 bit數據預讀取)。換句話說,DDR2內存每個時鐘能夠以4倍外部總線的速度讀/寫數據,并且能夠以內部控制總線4倍的速度運行。
開發板通過專用的DDR2存儲控制器接口擴展了64 MB的DDR2 SDRAM,為視頻應用帶來了高吞吐、高容量存儲帶寬,并最大可以擴展到256 MB;此外,256 MB的Nor Flash為視頻應用程序脫機運行提供了有力的容量保證。
2.3 網絡模塊
網絡接口工作在7層OSI參考模型的物理層和數據鏈路層,在以太網卡中,數據鏈路層的芯片被稱作MAC控制器,物理層的芯片被稱作PHY。在本系統中,考慮到DM6437片上帶有EMAC()/MDIO()接口,即提供數據鏈路層控制,所以選擇網卡芯片時只需要有PHY功能即可。
3 系統軟件設計
本系統中,DSP端的軟件主要包括:視頻驅動程序開發、Codec Engine的使用以及網絡模塊的程序開發(即NDK的使用),應用程序的總體框架如圖2所示。
在DSP/BIOS實時操作系統下,系統上電或是reset后,從程序入口點到main函數前,要執行系統的初始化,從而對相關DSP的寄存器進行配置,包括復用引腳和外設接口等的配置。main函數使外設芯片正常工作,然后啟動任務線程。main函數返回后,將CPU的使用權交給DSP/BIOS,由DSP/BIOS 進行程序運行中的控制調度,包括內存管理、中斷處理和任務管理等。本系統中,DSP/BIOS啟動兩個靜態配置的任務線程,包括previewTask和tskNdkStackTest。前者是整個系統的主線程,主要負責視頻驅動模塊和Codec Engine框架的初始化、視頻圖像的實時獲取、視頻處理算法的執行以及處理結果的輸出等;后者則專門負責網絡模塊的所有功能。
3.1 視頻驅動軟件
該系統的軟件設計中,視頻驅動是應用程序與底層硬件之間的重要橋梁,是軟件設計中非常重要的一部分。視頻驅動程序主要用于前端的視頻接收端,而后端直接將算法處理結果通過網絡傳送到PC。TI公司提供了專門的視頻處理的驅動接口函數,接口函數名均以“FVID”開頭,它是將GIO的APIs根據需要再次進行封裝得到的,如表1所示。
系統上電后進行一系列的初始化操作,main函數返回的同時,把對CPU和存儲器的使用和控制權交給DSP/BIOS,然后DSP/BIOS啟動視頻處理的主線程,主線程便會用FVID的API函數獲取sensor發來的圖像。首先用FVID_creat()創建通道,函數返回的句柄作為下一步FVID_control()的參數,根據不同的命令字符串對視頻接口進行配置。接著FVID_alloc和FVID_queue兩個函數負責向驅動申請3個數據幀buffer,并編入buffer隊列。然后,用FVID_dequeue函數將隊列中的首個buffer釋放出來,作為FVID_exchange函數的起始參數,表示當前正在使用的buffer。之后進入無限的while循環體,利用FVID_exchange函數來實現圖像數據的實時更新,從而進行后續的算法處理。
3.2 Codec Engine軟件
Codec Engine軟件是TI 公司專門為達芬奇系列DSP設計推出的一個標準軟件框架,大大簡化了軟件開發人員的工作。使用Codec Engine,首先需要在main函數里初始化,用到的初始化函數為CERuntime_init()。另外,Core Engine APIs用于創建Engine對象,以及獲得一些系統調試信息。應用程序創建Engine對象后,通過VISA接口創建算法對象,VISA對應4種數據模式,每種模式又對應了MOD_create、MOD_control、MOD_process、MOD_delete 4個接口函數,通過這些函數可以調用任何符合XDM標準的編解碼算法庫。系統Codec Engine 的實現流程圖如圖3所示。
3.3 網絡傳輸軟件
NDK是TI 公司專門針對C6000系列DSP推出的一款網絡開發套件,它基于TCP/IP協議,為開發人員提供了豐富的網絡接口,使用方便靈活。
NDK共由5個模塊組成,如圖4所示。OS適配層是DSP/BIOS操作系統的一個抽象,把操作系統與NDK隔離,同時為NDK提供接口,實現內存空間管理和任務管理。TCP/IP協議棧是一個網絡功能LIB,所有常用的網絡協議的功能可以通過它來實現。網絡工具模塊提供了局域上層套接字的所有網絡功能,如數據收發、Web服務器的配置。硬件抽象層是底層硬件的一個抽象,為網絡控制模塊提供接口。網絡控制模塊則用來進行一系列的初始化工作,協調底層驅動與TCP/IP協議棧配合工作。
NDK各種網絡功能的實現都利用了socket接口。本系統中,DSP端就是socket服務器端,PC端軟件為客戶端。本系統創建多個socket對象來分別負責實現數據的收發操作,確保需要同步執行的操作之間互不影響。
具體實現時,網絡模塊的程序利用NDK為系統設置IP地址,系統模塊實現了HTTP server,用戶端在網頁輸入DSP的網口IP地址,即可訪問DSP端的HTTP服務器,實現在網頁上的實時遠程監控。另外,利用socket編程,可以實現與PC端自主編寫的軟件進行通信,從而用戶可以通過PC端的軟件給DSP發送控制指令來實現不同的功能。本模塊包含一個主線程和3個子線程,其中主線程tskNdkStackTest已經在DSP/BIOS的.tcf配置文件中做了靜態配置。3個子線程分別是sendTsk、receiveTsk和cmdparseTsk,分別用于發送數據、接收數據和解析PC端軟件的控制命令。其中在每個子線程內創建了一個socket。
本文研究了基于TMS320DM6437的網絡視頻監控的實現方法。系統以TMS320DM6437作為核心,對主要硬件器件作了介紹,并針對主要的軟件框架進行了詳細分析,對于視頻監控平臺的設計有著重要的應用價值。
參考文獻
[1] 李德駿.智能小區安防實時視頻圖像跟蹤系統的研究[J].武漢科技學院學報,2005,18(9):32-35.
[2] 田茜,何鑫.基于DSP/FPGA的嵌入式實時目標跟蹤系統[J].計算機工程,2005,31(15):219-221.
[3] 梁昂,王耀南.基于雙DSP的運動目標智能跟蹤系統的設計和實現[J].電子設計應用,2004(9):111-113.
[4] 李位星,范瑞霞.基于DSP的運動目標跟蹤系統[J].自動化技術與應用,2004,23(4):46-49.