關鍵詞: linux , TMS320DM355 , 處理器 , 服務器 , 視頻
本設計以TI公司DaVinci系列芯片作為硬件平臺,結合嵌入式Linux操作系統,實現了基于TMS320DM355的視頻服務器。本文闡述了各硬件模塊的選型與功能,以及服務器的軟件架構與實現。同時給出了整個網絡視頻監控系統的框架,包括視頻服務器、網絡傳輸鏈路及客戶監控端。本設計采用 MPEG4視頻編碼標準,由DM355內部的MPEG/JPEG協處理器完成。實驗表明,在帶寬充足的條件下,可實現實時監控。
1.引言
多媒體監控一直是人們關注的應用技術熱點之一,它以直觀、方便、信息內容豐富等特點被廣泛應用于許多場合。而隨著嵌入式系統和視頻壓縮技術的不斷發展,基于嵌入式技術的視頻監控系統也得到了快速的發展與應用。其通過把攝像機輸出的模擬信號轉化為數字信號,再經過嵌入式系統編碼和傳輸。在客戶端,通過安裝監控軟件,或者直接通過Web進行監控。采用嵌入式Linux操作系統的視頻監控系統具備編碼處理、網絡通信、自動控制等強大功能,直接支持網絡傳輸和網絡管理,使得監控范圍達到了一定的廣度。
此外,嵌入式處理器的發展也日新月異,有專注于控制的ARM系列處理器,擅長快速計算的DSP處理器,還有一些針對性非常強的處理器,可以實現硬件視頻編解碼等。而德州儀器(TI)新近推出的針對便攜式高清(HD)視頻產品市場的達芬奇(DaVinci)處理器TMS320DM355處理器,結合了它們的特長。其內部具有一個ARM9EJ-S的主處理器,負責整個系統的控制,同時也集成了一個MPEG/JPEG協處理器,專注于MPEG/JPEG算法的實現。其內部的視頻處理子系統(VPSS)及其它外設可方便快速的實現視頻的采集、預處理、顯示、網絡傳輸等功能。同時,其低廉的價格也為用戶降低了成本。而本設計即選用此處理器。
2.視頻監控系統整體框架
本嵌入式網絡視頻監控系統由視頻服務器、網絡傳輸鏈路、客戶監控端等3部分組成。視頻服務器負責音視頻等數據的采集、壓縮處理等,網絡傳輸鏈路將視頻服務器壓縮和發送的多媒體數據進行傳輸,而客戶端監控部分接收音視頻數據,進行解壓、顯示以及對視頻服務器的控制等。整個系統的示意圖如圖1所示。
圖1視頻監控系統示意圖
2.1.視頻服務器
視頻服務器采用德州儀器(TI)新近推出的達芬奇(DaVinci)系列處理器TMS320DM355作為主處理器,接收CCD攝像頭采集的視頻信號,進行預處理及MPEG4壓縮,然后將壓縮后的數據通過網絡傳輸。同時,接收上位機發送的命令,解析并且執行。每個設備都具有唯一的ID,當客戶端進行連接時,服務器會首先檢查ID號是否匹配,以防止惡意連接。此外,當視頻服務器運行異常時,其內部的守護進程會進行監視,適當的時候進行重啟。
2.2.網絡傳輸鏈路
網絡傳輸鏈路負責多媒體數據的傳輸。此處,可以根據實際需求,進行網絡傳輸鏈路的選擇。局域網(LAN)、無線局域網(WLAN)、INTERNET、 CDMA、3G等都是可供選擇的傳輸鏈路。其中,局域網(LAN)和無線局域網(WLAN)帶寬充足、穩定,并且設備簡單,易于實現,但會受到距離的限制。INTERNET和CDMA網絡可以使監控距離得到擴展,但是其帶寬受限,圖像質量會受到影響。而最新的3G網絡也是一個不錯的選擇,帶寬在靜止狀態下可以達到2Mbps,但是其在穩定性方面還待測試。用戶可以根據自己的需求進行選擇,或者直接搭建專線網絡,以實現各自的監控指標。
2.3.客戶監控端
客戶端主要與各個視頻服務器進行連接,以實現監控。客戶端可以采用PC機或者便攜式設備,與網絡傳輸鏈路相連,通過上位機軟件與視頻服務器連接,接收視頻服務器發送的多媒體數據,進行解碼,然后在上位機顯示。同時,向視頻服務器發送控制命令,實現云臺、鏡頭等的控制。
3.視頻服務器硬件設計
3.1.整體框架視頻服務器完成視頻的采集、MPEG4壓縮和網絡傳輸,以及云臺、鏡頭等的控制。其硬件結構框圖如圖2所示。
圖2視頻服務器硬件結構框圖
3.2.各模塊簡介
1)主處理器
TMS320DM355TMS320DM355是一款針對數字靜態照相機,數碼相框,IP安全攝像機,視頻門鈴和其它一些低功耗便攜式數字視頻應用設計的高集成度的處理器。可實現低成本,高圖像質量的視頻解決方案。它集高性能,低功耗,低成本于一身,提供與外部CCD或CMOS傳感器的無縫連接。此外,還提供與電源管理,DDR/mDDRmemory,SRAM,NAND等的接口。
DM355處理器的主處理器是一個ARM926EJ-S核。ARM926EJ-S是一個32位的處理器核,提供216MHz或270MHz的時鐘速率,可執行32位和16位的指令集,以及32位,16位和8位的數據。
此外,DM355內還集成了一個MPEG/JPEG協處理器,實現數字視頻的壓縮。
DM355內還包括一個視頻處理子系統(VPSS),分為視頻處理前端(VPFE)和視頻處理后端(VPBE)。視頻處理前端提供與CCD/CMOSimager模塊和視頻解碼器的接口。視頻處理后端實現硬件的OSD支持和復合的NTSC/PAL或LCD輸出。
2)視頻采集模塊
視頻采集模塊主要由鏡頭和模擬前端電路組成。模擬前端的作用是將圖像傳感器輸出的模擬信號鉗位放大,并完成A/D轉換,這里采用的是TVP5146。TVP5146是TI的一款高質量、單片的視頻解碼器,數字化并且解碼所有主流的基帶模擬視頻格式。TVP5146將復合的或者分離的NTSC,PAL或者SECAM信號轉換為YCbCr格式。輸出格式可以是20位的YCbCr4:2:2或者10為的YCbCr4:2:2。它由一組內部寄存器進行控制,通過I2C進行配置,改變對比度、亮度、飽和度、色調等參數。
3)音頻采集模塊
音頻采集模塊由Mic和模數轉換電路構成。此處采用TLV320AIC33。TLV320AIC33是一款低功耗立體聲音頻編解碼器,實現模擬音頻信號的數字化。包括立體聲耳機擴音器,并且提供多輸入多輸出。支持8k到96k采樣。DM355對其的配置也是通過I2C進行的。而數據接口則采用McBSP。
4)存儲模塊
本設計采用了512MB的nandflash用于存儲UBL、U-Boot、kernel、根文件系統。需要的話可以存儲一定數量的音視頻數據。它與DM355之間的接口為8位數據線。通過這8位數據線進行命令及數據的傳遞。
5)動態存儲模塊
由于DM355提供DDR接口,所以選擇速度更快的DDRSDRAM作為動態存儲器。Linux操作系統及應用程序的運行都在這里。當系統上電后,bootloader進行一些簡單的設置之后將自己搬運到SDRAM內運行,當需要啟動內核時,將內核搬運到SDRAM內運行。此后,整個內存的控制就交給了Linux內核。
6)Ethernet控制器
Ethernet控制器選擇DM9000,通過網絡傳輸鏈路實現數據的發送與接收。
7)RS232及RS485RS232
主要用于開發階段的調試,RS485用于控制云臺,鏡頭等。RS232和RS485采用通用的232和485芯片即可滿足需要。
8)電源模塊電源模塊負責整個系統的供電
我們采用現成的電源模塊提供云臺需要的24V交流電壓,鏡頭需要的12V直流電壓,以及視頻服務器需要的5V直流電壓。由于DM355的核電壓為1.3V,I/O電壓為3.3V,DDRSDRAM的電壓為1.8V,所以我們選擇了TPS65021電源芯片,將輸入的5V電壓轉換為3種不同的電壓輸出。此外我們對DM355的上電順序也進行了考慮。
4.視頻服務器軟件設計
本設計采用嵌入式Linux操作系統作為其軟件基礎。系統上電后,首先運行引導程序bootloader,初始化CPU和一些I/O設備,然后將Linux內核搬運到內存中,將控制權交給內核。內核啟動后,運行用戶應用程序。系統的軟件層次結構如圖3所示。
圖3系統軟件層次結構
4.1.系統上電及引導程序
系統上電時,是由DM355的輸入引腳BTSEL[1:0]來決定從ROM或者AEMIF啟動。此設計處選擇從ROM啟動。此時,系統直接跳轉到內部 ROM的起始地址(0X00008000)執行指令。內嵌的ROM啟動代碼(RBL)進行一些配置操作,然后讀取BOOTCFG寄存器來決定是從 NAND、MMC/SD或者UART啟動。本設計選擇NAND啟動。NANDflash里預先燒寫好了U-boot、Linux內核以及根文件系統。 NAND啟動以后,會讀取bootloader的stage1部分的指令對系統進行必要的設置,然后將stage2部分的代碼搬移到SDRAM中進行執行。當用戶選擇啟動內核時,bootloader將內核從NANDflash里搬運到SDRAM,然后跳轉到內核的起始地址進行執行,啟動內核。
4.2.嵌入式Linux操作系統
嵌入式Linux操作系統是針對不同的應用需求,對Linux內核進行裁剪修改使之能在嵌入式計算機系統上運行的一種操作系統。它開放源碼,內核小、效率高,適用于多種CPU和硬件平臺,性能穩定,可移植性好等特點為其開辟了一片屬于自己的空間。
本設計選擇嵌入式Linux操作系統作為軟件平臺,實現各硬件模塊的驅動的添加及移植,用戶應用程序的編寫及調試。
4.3.用戶應用程序
本設計中將整個應用程序分為2個進程,data進程和command進程。Data進程主要負責音視頻數據的采集、壓縮和網絡傳輸。其中,又分為3個線程,capture線程、編碼線程以及control線程。Capture線程控制采集設備進行圖像及聲音的采集及預處理;編碼線程從capture線程讀取數據,進行MPEG4(視頻)或G.711(音頻)壓縮。Control線程從編碼線程讀取壓縮完的數據,通過網絡發送給客戶端。而command進程接收上位機命令,解析、執行,并且控制云臺,鏡頭及測溫等。Command進程還加入了用戶ID檢驗等功能,提供簡單的保護機制。應用程序的流程圖如圖 4所示。
圖4應用程序流程圖
4.4.MPEG/JPEG協處理器編碼
由于DM355內部集成了MPEG/JPEG協處理器,對于音視頻的編解碼主要是通過它來完成的。而對它的操作是依靠TI公司制訂的基于 eXpressDSP算法互用性標準(xDAIS)的xDAIS-DM標準實現的。此標準定義了一組統一的API,這些API是建立在各種多媒體算法之上的,這樣即簡化了集成難度,同時保證了互用性。TI提出的CodecEngine就是一組用于示例和運行xDAIS算法的API,而 VISA(Video,Image,Speech,Audio)類是用來與xDAIS-DM算法標準定義的基于各種多媒體算法的API函數集進行交互的接口。在應用程序編程中,通過進行如下的操作來完成視頻的編碼。
打開編解碼引擎:
staticStringengineName=videnc
Engine_Handlece;Engine_Errorerrorcode;ce=Engine_open(engineName,NULL,& amp;errorcode);視頻編碼類提供四個API函數:創建視頻編碼類:VIDENC_Handlehenc;staticStringencoderName=mpeg4enc; henc="VIDENC"_create(ce,encoderName,NULL);其中ce為打開編碼引擎時返回的句柄。對視頻編碼類進行控制,設置視頻編碼動態參數:VIDENC_control(henc,XDM_SETPARAMS,&dynamicParams,&encStatus);處理數據,進行編碼:VIDENC_process(henc,&inBufDesc,&outBufDesc,&inArgs,&outArgs); 其中參數henc為創建的VISA類句柄,inBufDesc為原始數據buffer,outBufDesc為壓縮后數據buffer,inArgs和 outArgs為輸入輸出配置參數。銷毀創建的視頻編碼類:VIDENC_delete(henc);在應用程序中調用以上API,即可利用 MPEG/JPEG協處理器對原始視頻數據進行壓縮,而音頻數據的壓縮與此類似。
5.總結
本文介紹了基于最新DaVinci平臺的視頻監控服務器的設計與實現,包括硬件組成和軟件設計。整個視頻服務器利用DM355內部的ARM926EJ-S 核運行嵌入式Linux操作系統,而用MPEG/JPEG協處理器進行MPEG4編碼相關的計算。文中對利用MPEG/JPEG協處理器進行編碼也做了介紹,同時給出了整個視頻監控系統的框架。經過在局域網內測試,可以實現D1格式的視頻的實時傳輸,同時可以進行云臺及鏡頭等的控制。利用該系統可實現樓宇、街道等場所的視頻監控。
評論
查看更多