基于TMS320 DM355監(jiān)控服務(wù)器設(shè)計與實(shí)現(xiàn)
本設(shè)計以TI公司DaVinci系列芯片作為硬件平臺,結(jié)合嵌入式Linux操作系統(tǒng),實(shí)現(xiàn)了基于TMS320DM355的視頻服務(wù)器。本文闡述了各硬件模塊的選型與功能,以及服務(wù)器的軟件架構(gòu)與實(shí)現(xiàn)。同時給出了整個網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的框架,包括視頻服務(wù)器、網(wǎng)絡(luò)傳輸鏈路及客戶監(jiān)控端。本設(shè)計采用MPEG4視頻編碼標(biāo)準(zhǔn),由DM355內(nèi)部的MPEG/JPEG協(xié)處理器完成。實(shí)驗表明,在帶寬充足的條件下,可實(shí)現(xiàn)實(shí)時監(jiān)控。
1.引言
多媒體監(jiān)控一直是人們關(guān)注的應(yīng)用技術(shù)熱點(diǎn)之一,它以直觀、方便、信息內(nèi)容豐富等特點(diǎn)被廣泛應(yīng)用于許多場合。而隨著嵌入式系統(tǒng)和視頻壓縮技術(shù)的不斷發(fā)展,基于嵌入式技術(shù)的視頻監(jiān)控系統(tǒng)也得到了快速的發(fā)展與應(yīng)用。其通過把攝像機(jī)輸出的模擬信號轉(zhuǎn)化為數(shù)字信號,再經(jīng)過嵌入式系統(tǒng)編碼和傳輸。在客戶端,通過安裝監(jiān)控軟件,或者直接通過Web進(jìn)行監(jiān)控。采用嵌入式Linux操作系統(tǒng)的視頻監(jiān)控系統(tǒng)具備編碼處理、網(wǎng)絡(luò)通信、自動控制等強(qiáng)大功能,直接支持網(wǎng)絡(luò)傳輸和網(wǎng)絡(luò)管理,使得監(jiān)控范圍達(dá)到了一定的廣度。
此外,嵌入式處理器的發(fā)展也日新月異,有專注于控制的ARM系列處理器,擅長快速計算的DSP處理器,還有一些針對性非常強(qiáng)的處理器,可以實(shí)現(xiàn)硬件視頻編解碼等。而德州儀器(TI)新近推出的針對便攜式高清(HD)視頻產(chǎn)品市場的達(dá)芬奇(DaVinci)處理器TMS320DM355處理器,結(jié)合了它們的特長。其內(nèi)部具有一個ARM9EJ-S的主處理器,負(fù)責(zé)整個系統(tǒng)的控制,同時也集成了一個MPEG/JPEG協(xié)處理器,專注于MPEG/JPEG算法的實(shí)現(xiàn)。其內(nèi)部的視頻處理子系統(tǒng)(VPSS)及其它外設(shè)可方便快速的實(shí)現(xiàn)視頻的采集、預(yù)處理、顯示、網(wǎng)絡(luò)傳輸?shù)裙δ?。同時,其低廉的價格也為用戶降低了成本。而本設(shè)計即選用此處理器。
2.視頻監(jiān)控系統(tǒng)整體框架
本嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)由視頻服務(wù)器、網(wǎng)絡(luò)傳輸鏈路、客戶監(jiān)控端等3部分組成。視頻服務(wù)器負(fù)責(zé)音視頻等數(shù)據(jù)的采集、壓縮處理等,網(wǎng)絡(luò)傳輸鏈路將視頻服務(wù)器壓縮和發(fā)送的多媒體數(shù)據(jù)進(jìn)行傳輸,而客戶端監(jiān)控部分接收音視頻數(shù)據(jù),進(jìn)行解壓、顯示以及對視頻服務(wù)器的控制等。整個系統(tǒng)的示意圖如圖1所示。
圖1視頻監(jiān)控系統(tǒng)示意圖
2.1.視頻服務(wù)器
視頻服務(wù)器采用德州儀器(TI)新近推出的達(dá)芬奇(DaVinci)系列處理器TMS320DM355作為主處理器,接收CCD攝像頭采集的視頻信號,進(jìn)行預(yù)處理及MPEG4壓縮,然后將壓縮后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸。同時,接收上位機(jī)發(fā)送的命令,解析并且執(zhí)行。每個設(shè)備都具有唯一的ID,當(dāng)客戶端進(jìn)行連接時,服務(wù)器會首先檢查ID號是否匹配,以防止惡意連接。此外,當(dāng)視頻服務(wù)器運(yùn)行異常時,其內(nèi)部的守護(hù)進(jìn)程會進(jìn)行監(jiān)視,適當(dāng)?shù)臅r候進(jìn)行重啟。
2.2.網(wǎng)絡(luò)傳輸鏈路
網(wǎng)絡(luò)傳輸鏈路負(fù)責(zé)多媒體數(shù)據(jù)的傳輸。此處,可以根據(jù)實(shí)際需求,進(jìn)行網(wǎng)絡(luò)傳輸鏈路的選擇。局域網(wǎng)(LAN)、無線局域網(wǎng)(WLAN)、INTERNET、CDMA、3G等都是可供選擇的傳輸鏈路。其中,局域網(wǎng)(LAN)和無線局域網(wǎng)(WLAN)帶寬充足、穩(wěn)定,并且設(shè)備簡單,易于實(shí)現(xiàn),但會受到距離的限制。INTERNET和CDMA網(wǎng)絡(luò)可以使監(jiān)控距離得到擴(kuò)展,但是其帶寬受限,圖像質(zhì)量會受到影響。而最新的3G網(wǎng)絡(luò)也是一個不錯的選擇,帶寬在靜止?fàn)顟B(tài)下可以達(dá)到2Mbps,但是其在穩(wěn)定性方面還待測試。用戶可以根據(jù)自己的需求進(jìn)行選擇,或者直接搭建專線網(wǎng)絡(luò),以實(shí)現(xiàn)各自的監(jiān)控指標(biāo)。
2.3.客戶監(jiān)控端
客戶端主要與各個視頻服務(wù)器進(jìn)行連接,以實(shí)現(xiàn)監(jiān)控??蛻舳丝梢圆捎肞C機(jī)或者便攜式設(shè)備,與網(wǎng)絡(luò)傳輸鏈路相連,通過上位機(jī)軟件與視頻服務(wù)器連接,接收視頻服務(wù)器發(fā)送的多媒體數(shù)據(jù),進(jìn)行解碼,然后在上位機(jī)顯示。同時,向視頻服務(wù)器發(fā)送控制命令,實(shí)現(xiàn)云臺、鏡頭等的控制。3.視頻服務(wù)器硬件設(shè)計3.1.整體框架視頻服務(wù)器完成視頻的采集、MPEG4壓縮和網(wǎng)絡(luò)傳輸,以及云臺、鏡頭等的控制。其硬件結(jié)構(gòu)框圖如圖2所示。
圖2視頻服務(wù)器硬件結(jié)構(gòu)框圖
4.1.系統(tǒng)上電及引導(dǎo)程序
系統(tǒng)上電時,是由DM355的輸入引腳BTSEL[1:0]來決定從ROM或者AEMIF啟動。此設(shè)計處選擇從ROM啟動。此時,系統(tǒng)直接跳轉(zhuǎn)到內(nèi)部ROM的起始地址(0X00008000)執(zhí)行指令。內(nèi)嵌的ROM啟動代碼(RBL)進(jìn)行一些配置操作,然后讀取BOOTCFG寄存器來決定是從NAND、MMC/SD或者UART啟動。本設(shè)計選擇NAND啟動。NANDflash里預(yù)先燒寫好了U-boot、Linux內(nèi)核以及根文件系統(tǒng)。NAND啟動以后,會讀取bootloader的stage1部分的指令對系統(tǒng)進(jìn)行必要的設(shè)置,然后將stage2部分的代碼搬移到SDRAM中進(jìn)行執(zhí)行。當(dāng)用戶選擇啟動內(nèi)核時,bootloader將內(nèi)核從NANDflash里搬運(yùn)到SDRAM,然后跳轉(zhuǎn)到內(nèi)核的起始地址進(jìn)行執(zhí)行,啟動內(nèi)核。
4.2.嵌入式Linux操作系統(tǒng)
嵌入式Linux操作系統(tǒng)是針對不同的應(yīng)用需求,對Linux內(nèi)核進(jìn)行裁剪修改使之能在嵌入式計算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。它開放源碼,內(nèi)核小、效率高,適用于多種CPU和硬件平臺,性能穩(wěn)定,可移植性好等特點(diǎn)為其開辟了一片屬于自己的空間。
本設(shè)計選擇嵌入式Linux操作系統(tǒng)作為軟件平臺,實(shí)現(xiàn)各硬件模塊的驅(qū)動的添加及移植,用戶應(yīng)用程序的編寫及調(diào)試。
4.3.用戶應(yīng)用程序
本設(shè)計中將整個應(yīng)用程序分為2個進(jìn)程,data進(jìn)程和command進(jìn)程。Data進(jìn)程主要負(fù)責(zé)音視頻數(shù)據(jù)的采集、壓縮和網(wǎng)絡(luò)傳輸。其中,又分為3個線程,capture線程、編碼線程以及control線程。Capture線程控制采集設(shè)備進(jìn)行圖像及聲音的采集及預(yù)處理;編碼線程從capture線程讀取數(shù)據(jù),進(jìn)行MPEG4(視頻)或G.711(音頻)壓縮。Control線程從編碼線程讀取壓縮完的數(shù)據(jù),通過網(wǎng)絡(luò)發(fā)送給客戶端。而command進(jìn)程接收上位機(jī)命令,解析、執(zhí)行,并且控制云臺,鏡頭及測溫等。Command進(jìn)程還加入了用戶ID檢驗等功能,提供簡單的保護(hù)機(jī)制。應(yīng)用程序的流程圖如圖4所示。
圖4應(yīng)用程序流程圖
4.4.MPEG/JPEG協(xié)處理器編碼
由于DM355內(nèi)部集成了MPEG/JPEG協(xié)處理器,對于音視頻的編解碼主要是通過它來完成的。而對它的操作是依靠TI公司制訂的基于eXpressDSP算法互用性標(biāo)準(zhǔn)(xDAIS)的xDAIS-DM標(biāo)準(zhǔn)實(shí)現(xiàn)的。此標(biāo)準(zhǔn)定義了一組統(tǒng)一的API,這些API是建立在各種多媒體算法之上的,這樣即簡化了集成難度,同時保證了互用性。TI提出的CodecEngine就是一組用于示例和運(yùn)行xDAIS算法的API,而VISA(Video,Image,Speech,Audio)類是用來與xDAIS-DM算法標(biāo)準(zhǔn)定義的基于各種多媒體算法的API函數(shù)集進(jìn)行交互的接口。在應(yīng)用程序編程中,通過進(jìn)行如下的操作來完成視頻的編碼。
打開編解碼引擎:
staticStringengineName="videnc"
Engine_Handlece;Engine_Errorerrorcode;ce=Engine_open(engineName,NULL,&errorcode);視頻編碼類提供四個API函數(shù):創(chuàng)建視頻編碼類:VIDENC_Handlehenc;staticStringencoderName="mpeg4enc";henc=VIDENC_create(ce,encoderName,NULL);其中ce為打開編碼引擎時返回的句柄。對視頻編碼類進(jìn)行控制,設(shè)置視頻編碼動態(tài)參數(shù):VIDENC_control(henc,XDM_SETPARAMS,&dynamicParams,&encStatus);處理數(shù)據(jù),進(jìn)行編碼:VIDENC_process(henc,&inBufDesc,&outBufDesc,&inArgs,&outArgs);其中參數(shù)henc為創(chuàng)建的VISA類句柄,inBufDesc為原始數(shù)據(jù)buffer,outBufDesc為壓縮后數(shù)據(jù)buffer,inArgs和outArgs為輸入輸出配置參數(shù)。銷毀創(chuàng)建的視頻編碼類:VIDENC_delete(henc);在應(yīng)用程序中調(diào)用以上API,即可利用MPEG/JPEG協(xié)處理器對原始視頻數(shù)據(jù)進(jìn)行壓縮,而音頻數(shù)據(jù)的壓縮與此類似。
5.總結(jié)
本文介紹了基于最新Davinci平臺的視頻監(jiān)控服務(wù)器的設(shè)計與實(shí)現(xiàn),包括硬件組成和軟件設(shè)計。整個視頻服務(wù)器利用DM355內(nèi)部的ARM926EJ-S核運(yùn)行嵌入式Linux操作系統(tǒng),而用MPEG/JPEG協(xié)處理器進(jìn)行MPEG4編碼相關(guān)的計算。文中對利用MPEG/JPEG協(xié)處理器進(jìn)行編碼也做了介紹,同時給出了整個視頻監(jiān)控系統(tǒng)的框架。經(jīng)過在局域網(wǎng)內(nèi)測試,可以實(shí)現(xiàn)D1格式的視頻的實(shí)時傳輸,同時可以進(jìn)行云臺及鏡頭等的控制。利用該系統(tǒng)可實(shí)現(xiàn)樓宇、街道等場所的視頻監(jiān)控。