摘 要: 目前使用的圖像傳感器主要有CMOS和CCD兩類,。CMOS器件功耗低、集成度高,,但成像質(zhì)量不如CCD器件好,。因此該多攝像頭視頻采集系統(tǒng)采用了CCD和CMOS兩種器件,以滿足多種需求,。提出了一種基于TI公司TMS320DM365處理芯片,、采用CCD和CMOS器件的攝像頭軟硬件切換設(shè)計(jì)方案。
關(guān)鍵詞: 視頻采集,;TMS320DM365,;攝像頭切換
0 引言
近年來,隨著移動(dòng)終端的快速發(fā)展,,計(jì)算能力增強(qiáng),,移動(dòng)網(wǎng)絡(luò)傳輸速度大幅提高,移動(dòng)視頻監(jiān)控技術(shù)發(fā)展迅速,。目前國內(nèi)外視頻監(jiān)控業(yè)務(wù)主要應(yīng)用在公共領(lǐng)域,、行業(yè)用戶和個(gè)人用戶。特別是在公共場(chǎng)所,,國外設(shè)置了眾多監(jiān)控設(shè)備,以加強(qiáng)對(duì)公共領(lǐng)域安全的控制能力[1],。嵌入式視頻采集系統(tǒng)具有高效,、體積小、實(shí)時(shí)穩(wěn)定,、低成本等優(yōu)點(diǎn)[2],,自然而然地成為了視頻監(jiān)控設(shè)備的良好載體,。
目前使用的圖像傳感器有CMOS(互補(bǔ)金屬氧化物半導(dǎo)體)和CCD(電荷耦合器件)兩類。與CCD相比,,CMOS器件具有功耗低,、集成度高等優(yōu)點(diǎn),但是在噪點(diǎn)和成像質(zhì)量方面不如CCD器件[3],。而CCD器件則剛好相反,。所以在本設(shè)計(jì)中,采用了CCD與CMOS搭配的設(shè)計(jì),。其中CCD器件搭配TVP5151視頻解碼芯片,,外置的CCD攝像頭能夠提供更靈活、更清晰的視頻圖像,。CMOS則是采用了OV5640的模組,,利用其集成度高、體積小的特點(diǎn),,作為內(nèi)置的視頻采集攝像頭,,滿足視頻聊天等一般成像需求。
1 硬件框架設(shè)計(jì)
整個(gè)視頻采集系統(tǒng)終端以TMS320DM365芯片作為處理器芯片,,基本模塊有DDR2,、SDRAM、NAND Flash,、網(wǎng)口,、串口以及負(fù)責(zé)進(jìn)行信令和視頻數(shù)據(jù)傳輸?shù)?G模塊等。TI公司的基于DaVinci技術(shù)的TMS320DM365芯片,,集成了一顆ARM926EJ-S內(nèi)核,,一個(gè)圖像處理子系統(tǒng)(VPSS),一個(gè)H.264高清編碼器協(xié)處理器HDVICP和一個(gè)MPEG-4/JPEG高清編碼器協(xié)處理器MJCP,,支持多格式編解碼[4],,所以特別適用于圖像處理。視頻采集部分主要由DM365的VPFE(視頻處理前端),、一個(gè)多路轉(zhuǎn)換器和兩個(gè)視頻數(shù)據(jù)采集芯片(OV5640和TVP5151)組成,。攝像頭硬件切換由DM365的GPIO口對(duì)多路轉(zhuǎn)換器進(jìn)行控制,選擇輸入到VPFE的數(shù)據(jù)源,。
系統(tǒng)硬件框架設(shè)計(jì)圖如圖1所示,。
DM365的VPFE采集驅(qū)動(dòng)是一個(gè)V4L2設(shè)備驅(qū)動(dòng),可以對(duì)RGB和YUV數(shù)據(jù)進(jìn)行采集,。VPFE的簡(jiǎn)單框架如圖2所示[5],。
視頻采集前端在接收到原始的YUV視頻數(shù)據(jù)后,可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),,同時(shí)又將視頻數(shù)據(jù)通過內(nèi)部的數(shù)據(jù)總線傳輸?shù)綀D像處理模塊,。此時(shí)可對(duì)圖像數(shù)據(jù)進(jìn)行裁剪,、縮放等,以適應(yīng)本地存儲(chǔ)或者網(wǎng)絡(luò)上傳的需求,。
視頻采集前端在接收到原始的YUV視頻數(shù)據(jù)后,,可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),同時(shí)又將視頻數(shù)據(jù)通過內(nèi)部的數(shù)據(jù)總線傳輸?shù)綀D像處理模塊,。此時(shí)可對(duì)圖像數(shù)據(jù)進(jìn)行裁剪,、縮放等,以適應(yīng)本地存儲(chǔ)或者是網(wǎng)絡(luò)上傳的需求,。
2 軟件設(shè)計(jì)
2.1 VPFE模塊驅(qū)動(dòng)
TMS320DM365數(shù)字多媒體芯片包含一個(gè)視頻處理模塊用來處理視頻數(shù)據(jù),,減輕主處理器的負(fù)擔(dān)。它支持大多數(shù)主流的外置視頻采集設(shè)備,。而與外置視頻采集設(shè)備直接相連的就是視頻處理前端子系統(tǒng)(VPFE),。
VPFE采集驅(qū)動(dòng)通過標(biāo)準(zhǔn)的V4L2接口將底層硬件的功能暴露給了上層應(yīng)用程序,在應(yīng)用程序和設(shè)備驅(qū)動(dòng)之間建立起了橋梁[6],。VPFE驅(qū)動(dòng)初始化開始后,,首先通過imp_get_hw_if()函數(shù)和ccdc_get_hw_interface()函數(shù)綁定imp和CCDC的接口函數(shù)組,隨后對(duì)CCDC模塊進(jìn)行初始化,。初始化CCDC模塊之后,,驅(qū)動(dòng)會(huì)分配需要的內(nèi)存用來存儲(chǔ)采集上來的視頻數(shù)據(jù)。最后,,便是調(diào)用driver_register(&vpfe_driver)函數(shù)和platform_device_register(&_vpfe_device)函數(shù)注冊(cè)驅(qū)動(dòng)和平臺(tái)設(shè)備,。系統(tǒng)啟動(dòng)時(shí),檢測(cè)到其驅(qū)動(dòng)和設(shè)備都存在后,,就會(huì)調(diào)用vpfe_prob()函數(shù),,這個(gè)函數(shù)做的最重要的事情就是調(diào)用video_register_device()函數(shù)綁定了file_operations結(jié)構(gòu)體,提供給應(yīng)用程序訪問內(nèi)核與設(shè)備驅(qū)動(dòng)的接口,。同時(shí)生成一個(gè)設(shè)備文件節(jié)點(diǎn)(/dev/Video0),,這樣,應(yīng)用程序就能通過訪問/dev/Video0設(shè)備文件節(jié)點(diǎn),,配合Ioctl函數(shù)調(diào)用VPFE驅(qū)動(dòng)中file_operations結(jié)構(gòu)體成員函數(shù)來進(jìn)行視頻的采集,。
VPFE初始化流程圖如圖3所示。在此設(shè)計(jì)中采用了兩種視頻采集芯片,,分別為德州儀器的TVP5151和豪威科技的OV5640,。這兩種芯片的驅(qū)動(dòng)程序中,在完成標(biāo)準(zhǔn)的I2C設(shè)備注冊(cè)的工作后,,都會(huì)調(diào)用vpif_register_decoder(&ov5640_dev[i])或是vpif_register_decoder(&TVP5151 _dev[i])函數(shù)將采集芯片的各種操作函數(shù)接口封裝成一個(gè)struct decoder_device結(jié)構(gòu)體注冊(cè)到前面提到的VPFE模塊中,。這樣,應(yīng)用程序就可以通過VPFE的設(shè)備文件節(jié)點(diǎn)(/dev/Video0)來調(diào)用VPFE的操作函數(shù),進(jìn)而再間接地調(diào)用采集設(shè)備的操作函數(shù),,完成視頻采集芯片的配置工作,使得其能夠正常工作,。
2.2 攝像頭軟切換
此設(shè)計(jì)中使用了兩種視頻采集芯片TVP5151與OV5640,,因此會(huì)有兩個(gè)decoder_device結(jié)構(gòu)體注冊(cè)到VPFE模塊中。攝像頭的軟切換,,也就是對(duì)VPFE模塊中注冊(cè)的decodor_device結(jié)構(gòu)體進(jìn)行重新選擇,,決定該調(diào)用哪個(gè)采集芯片,并對(duì)CCDC模塊進(jìn)行相應(yīng)的配置,。于此同時(shí),,對(duì)多路選擇器也要進(jìn)行相應(yīng)的配置,使其選擇正確的通路,。攝像頭切換流程如圖4所示,。
首先自然是通過3個(gè)GPIO口來配置多路選擇器選擇正確的通路,使得DM365可以獲取到來自正確的采集芯片的視頻數(shù)據(jù),。VIDIOC_ENUMINPUT命令會(huì)通過VPFE模塊調(diào)用到注冊(cè)到VPFE模塊中的采集芯片驅(qū)動(dòng)的操作函數(shù)enuminput,,從而依次檢索注冊(cè)到VPFE中的各個(gè)decoder_device結(jié)構(gòu)體中是否有需要的input_info,并返回對(duì)應(yīng)的decoder_device的序號(hào),。所以只需要在調(diào)用VIDIOC_ENUMINPUT命令時(shí)傳入與所需要采集芯片驅(qū)動(dòng)中相同的input類型,,便可以找到對(duì)應(yīng)的decoder_device,從而切換到對(duì)應(yīng)的攝像頭,。得到正確的decoder_device序號(hào)后,,即可用VIDIOC_S_INPUT命令,調(diào)用到采集芯片驅(qū)動(dòng)中的initialize函數(shù),,完成其初始化,。
切換到正確的視頻數(shù)據(jù)源以后,還要對(duì)CCDC模塊進(jìn)行對(duì)應(yīng)的設(shè)置,。這時(shí)需要調(diào)用命令VIDIOC_S_STD:ioctl(fd,,VIDIOC_S_STD,&std),,它會(huì)調(diào)用到視頻采集芯片驅(qū)動(dòng)中的setstd函數(shù),,進(jìn)而對(duì)驅(qū)動(dòng)中的struct v4l2_standard結(jié)構(gòu)體數(shù)組進(jìn)行便利,找到其中數(shù)據(jù)成員ID與VIDIOC_S_STD命令傳入?yún)?shù)std相同的項(xiàng),,返回其name成員,,并將其作為ccdc_hw_if->setstd()函數(shù)的參數(shù)執(zhí)行,便可以對(duì)CCDC模塊的分辨率,、幀率等信息進(jìn)行設(shè)置,。例如,當(dāng)檢索到的name值為“VGA-30”時(shí),CCDC模塊分辨率便會(huì)被設(shè)置成640×480,,幀率為30 FPS,。
2.3 掃描方式的切換
此設(shè)計(jì)方案中用到的兩種視頻采集芯片的掃描方式是不同的。TVP5151是隔行掃描,,一幀分為奇偶兩場(chǎng),,而OV5640是逐行掃描。VPFE模塊對(duì)于這兩種掃描方式的處理方式是不同的,,所以完成攝像頭的切換后,,還要把CCDC模塊掃描方式設(shè)定成與對(duì)應(yīng)的視頻采集芯片一致。在VPFE驅(qū)動(dòng)中,,有一個(gè)標(biāo)志位frame_format就是用來表示掃描方式的,,frame_format為0時(shí)表示隔行掃描,即使用TVP5151,;為1時(shí)就表示逐行掃描,,即使用OV5640。原本ccdc_hw_if->setstd()函數(shù)還可以對(duì)掃描方式進(jìn)行設(shè)定,,但是由于本設(shè)計(jì)所使用的內(nèi)核版本的缺陷,,設(shè)定無法生效,所以添加了一個(gè)小補(bǔ)?。涸趦?nèi)核VOFE驅(qū)動(dòng)中聲明了一個(gè)變量scanmode,,并使用EXP ORT_SYMBOL(scanmode)使之成為內(nèi)核全局變量。然后分別在TVP5151和OV5640驅(qū)動(dòng)的intialize函數(shù)中對(duì)其進(jìn)行賦值,。TVP5151為隔行掃描,,故對(duì)其賦0,OV5640則相反,。這樣,,每次切換攝像頭后,在初始化采集芯片的同時(shí)也會(huì)對(duì)CCDC的掃描方式進(jìn)行選擇,。
3 測(cè)試結(jié)果
測(cè)試在實(shí)驗(yàn)室的單兵設(shè)備上進(jìn)行,。在后置的OV5640攝像頭模組和外置的TVP5151攝像頭模組之間進(jìn)行了切換,外置攝像頭更清晰,,也更靈活,。而內(nèi)置的則勝在方便、小巧,。設(shè)計(jì)達(dá)到了預(yù)期目標(biāo),。測(cè)試效果圖如圖5所示。
4 結(jié)論
嵌入式芯片技術(shù)的快速發(fā)展,,使其在視頻監(jiān)控設(shè)備總的應(yīng)用越來越廣泛,。同樣發(fā)展迅速的還有視頻采集芯片,。本文設(shè)計(jì)實(shí)現(xiàn)了基于TMS320DM365硬件平臺(tái)的多攝像頭軟硬件切換方案,采用了CMOS和CCD兩種器件,,實(shí)現(xiàn)了不同廠家型號(hào),、不同掃描方式的視頻采集芯片模組之間的順暢切換。這在視頻采集芯片發(fā)展越來越多樣化的今天,,有一定的意義,。
參考文獻(xiàn)
[1] 苗潤生.3G移動(dòng)視頻監(jiān)控業(yè)務(wù)的應(yīng)用與發(fā)展[D].北京:北京郵電大學(xué),2010.
[2] 李佳林,,劉永春.基于S3C2440網(wǎng)絡(luò)視頻采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014(6):1314-1316,, 1325.
[3] 王旭東,,葉玉堂.CMOS與CCD圖像傳感器的比較研究和發(fā)展趨勢(shì)[J].電子設(shè)計(jì)工程,2010(11):178-181.
[4] 徐凱,,錢燕,,魏宗群,等.基于TMS320DM365的3G實(shí)時(shí)視頻傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].浙江農(nóng)業(yè)科學(xué),,2012(7):1056-1059.
[5] Texas Instruments. Davinci Linux VPFE Capture Driver [EB/OL]. [2015-07-15]. http://www.ti.com/lit/an/sprs566a/ sprs566a. pdf.2015.2.
[6] 潘力策,,孟利民.基于DM365的雙碼流視頻監(jiān)控設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2015,,34(10):41-43,,47.