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