當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]文中簡要介紹了TMS320DM642芯片的性能特點(diǎn)和在其上編寫視頻采集驅(qū)動(dòng)的原理,結(jié)合TMS320DM642芯片類/微型驅(qū)動(dòng)模型,提供了按幀采集ITU-R BT.656數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方法,并詳細(xì)討論視頻采集驅(qū)動(dòng)的硬件配置及軟件設(shè)計(jì)中的幀緩存管理、同步及數(shù)據(jù)搬運(yùn)等關(guān)鍵技術(shù)。

摘  要: TMS320DM642是TI公司推出的一款針對(duì)多媒體處理領(lǐng)域應(yīng)用的芯片。文中簡要介紹了TMS320DM642芯片的性能特點(diǎn)和在其上編寫視頻采集驅(qū)動(dòng)的原理,結(jié)合TMS320DM642芯片類/微型驅(qū)動(dòng)模型,提供了按幀采集ITU-R BT.656數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方法,并詳細(xì)討論視頻采集驅(qū)動(dòng)的硬件配置及軟件設(shè)計(jì)中的幀緩存管理、同步及數(shù)據(jù)搬運(yùn)等關(guān)鍵技術(shù)。
關(guān)鍵詞:TMS320DM642芯片; 視頻采集;同步;類/微驅(qū)動(dòng)

TMS320DM642 是一款針對(duì)視頻和圖像解決方案的高性能數(shù)字多媒體處理器,具有極強(qiáng)的處理性能" 高度的靈活性和可編程性。因此主要用于視頻信號(hào)處理和通信。結(jié)合合適的編碼器控制算法,具有較高運(yùn)算速度的TMS320DM642DSP 芯片可以作新一帶視頻壓縮標(biāo)準(zhǔn)H.264編、解碼器的硬件平臺(tái),實(shí)現(xiàn)滿足應(yīng)用需求的H.264 編碼器【1】。

驅(qū)動(dòng)程序位于計(jì)算機(jī)軟件的最低層(HAL 為硬件抽象層) , 直接與硬件設(shè)備的特性聯(lián)系在一起。編寫驅(qū)動(dòng)程序不僅要了解設(shè)備的特性, 而且還要了解操作系統(tǒng)的結(jié)構(gòu)難度較大【2】。本文結(jié)合TMS320DM642芯片特點(diǎn)詳細(xì)介紹了視頻采集驅(qū)動(dòng)開發(fā)。并詳細(xì)討論了驅(qū)動(dòng)中幀緩存管理、同步及數(shù)據(jù)搬運(yùn)等關(guān)鍵技術(shù)的實(shí)現(xiàn)。

1 TMS320DM642DSP芯片性能特點(diǎn)

DM642[3]是TI公司推出的一款針對(duì)多媒體處理領(lǐng)域應(yīng)用的DSP,它是在C64x的基礎(chǔ)上,增加了很多外圍設(shè)備和接口。主要的片上外設(shè)有:三個(gè)可配置的視頻接口,可以和視頻輸入,輸出或傳輸流輸入無縫連接,VCXO 內(nèi)插控制端口(VIC), I2C總線模塊等。這些接口和外設(shè)使得DM642比C6416更適合處理視頻碼流。

TI針對(duì)C64x系列的DSP提出了一種類/微型驅(qū)動(dòng)模型[4],這種模型在功能上將設(shè)備驅(qū)動(dòng)程序分為依賴硬件層(微型驅(qū)動(dòng))和不依賴硬件層(類驅(qū)動(dòng)兩層),兩層之間使用標(biāo)準(zhǔn)的接口進(jìn)行通信。類驅(qū)動(dòng)為設(shè)備驅(qū)動(dòng)的頂層,向應(yīng)用程序提供統(tǒng)一的API接口,是應(yīng)用程序與微驅(qū)動(dòng)之間的接口。微驅(qū)動(dòng)為設(shè)備驅(qū)動(dòng)的底層,它直接處理所有外部設(shè)備的控制和初始化工作。類、微驅(qū)動(dòng)程序的模型如圖1所示。

2        視頻采集驅(qū)動(dòng)硬件配置

本文采用類/微驅(qū)動(dòng)模型編寫DM642芯片視頻端口的視頻采集驅(qū)動(dòng)程序,充分利用片上的VP視頻端口[5]和EDMA。經(jīng)過A/D轉(zhuǎn)換后的視頻數(shù)據(jù)首先緩存到視頻端口的FIFO中,F(xiàn)IFO寫滿之后通知EDMA將這些數(shù)據(jù)按照一定的規(guī)則搬運(yùn)到SDRAM中。應(yīng)用程序通過類驅(qū)動(dòng)向微型驅(qū)動(dòng)提交I/O請(qǐng)求,類驅(qū)動(dòng)根據(jù)微型驅(qū)動(dòng)的返回參數(shù)實(shí)現(xiàn)同步I/O請(qǐng)求。本文詳細(xì)討論按幀采集8 bit ITU-R BT.656視頻數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方法。

2.1視頻端口配置

TMS320DM642有三個(gè)可配置的視頻端口:VP0、VP1和VP2,與視頻采集芯片連接,無需外加邏輯控制電路和FIFO緩存,只需編程者編寫相關(guān)驅(qū)動(dòng)程序,就可實(shí)現(xiàn)圖像采集或顯示。每個(gè)視頻端口各有20根數(shù)據(jù)輸入輸出管腳;每個(gè)端口又可以分為A和B兩個(gè)通道,分別處理一路視頻的采集或顯示;各端口又可以配置為8/10-bit ITU-R BT.656模式、8/10-bit Raw 模式、8/10-bit Y/C模式、16/20-bit Raw模式和TSI模式等。

視頻端口配置為雙通道視頻采集時(shí),0~9bit管腳分配給通道A,10~19bit管腳分配給通道B。由于采樣后的數(shù)據(jù)按8bit量化,所以僅使用每個(gè)通道的后8個(gè)管腳,即將VPxD2~9,VPxD12~19(x對(duì)應(yīng)三個(gè)端口0,1,2)直接與A/D芯片的8根輸出管腳相連。輸入的PAL/NTSC模擬信號(hào)經(jīng)過視頻解碼芯片A/D后形成的數(shù)字視頻信號(hào)直接進(jìn)入相應(yīng)的視頻端口中。

當(dāng)采集8 bit ITU-R BT.656數(shù)據(jù)時(shí),視頻端口接收A/D的亮度與色度的復(fù)合數(shù)據(jù)流(YUV422,稱為packet格式:Cb,Y,Cr,Y,Cb,Y,Cr ),然后將它分解成三個(gè)單獨(dú)的數(shù)據(jù)流(planar格式),分別是Y,U,V,再將分離后的數(shù)據(jù)打包存放到各自的FIFO中。

將FIFO分成3部分,其中為亮度數(shù)據(jù)分量分配的FIFO為1280B,為每個(gè)色度數(shù)據(jù)分量分配FIFO為640B;每個(gè)FIFO都有相關(guān)的存儲(chǔ)器映射地址:YSRC,CBSRC和CRSRC;EDMA將使用這些地址作為數(shù)據(jù)搬運(yùn)操作的源地址。每個(gè)視頻端口最多可以使用六個(gè)EDMA通道,當(dāng)某個(gè)FIFO的計(jì)數(shù)器到達(dá)VCTHRLDn寄存器設(shè)置的數(shù)值時(shí),就可以觸發(fā)相應(yīng)的EDMA(增強(qiáng)的直接存儲(chǔ)器存取控制器)事件。

圖1 驅(qū)動(dòng)程序模型

 

圖2 EDMA配置

2.2 EDMA配置

EDMA配置是為了從FIFO搬運(yùn)數(shù)據(jù)到SDRAM中,采用1D/2D傳輸,即源地址不變,而目的地址則在每次傳輸后按索引值自動(dòng)更新。我們?yōu)槊恳粓鲈O(shè)置一個(gè)EDMA參數(shù),并將這些參數(shù)連接起來,一次傳輸任務(wù)的結(jié)束會(huì)自動(dòng)從參數(shù)RAM中裝載下一次傳輸需要的參數(shù),從而實(shí)現(xiàn)某些復(fù)雜數(shù)據(jù)流的傳輸。

設(shè)置時(shí)首先打開與VP口相關(guān)的三個(gè)EDMA通道并申請(qǐng)12組參數(shù)RAM(hRld[0]~ hRld[11]),同時(shí)為每個(gè)通道申請(qǐng)一個(gè)中斷號(hào),留給EDMA中斷服務(wù)程序使用;然后依次配置12個(gè)EDMA參數(shù),并用hRld[0]、hRld[4]、hRld[8]三個(gè)參數(shù)初始化三個(gè)EDMA通道,準(zhǔn)備數(shù)據(jù)搬運(yùn)。

初始EDMA參數(shù)設(shè)置:數(shù)據(jù)源地址:YSRC;數(shù)據(jù)目的地址:一行起始地址;數(shù)據(jù)單元計(jì)數(shù):一行的采樣點(diǎn)數(shù);陣列計(jì)數(shù):一場的采樣行數(shù);陣列索引:一場采樣點(diǎn)數(shù)的兩倍(兩場按行交叉存放);參數(shù)連接地址:下一組EDMA參數(shù),各組參數(shù)連接關(guān)系如圖2所示。

可選參數(shù)設(shè)置:優(yōu)先級(jí):用戶設(shè)置;數(shù)據(jù)單元子長:32bit;1D/2D源/目的地址傳輸;源/目的地址更新模式:源地址不更新,目的地址按陣列索引更新;傳輸結(jié)束中斷:使能每幀的底場結(jié)束中斷,并設(shè)置中斷碼;頂場禁止;EDMA事件連接:使能所有EDMA參數(shù)的連接。

通過以上參數(shù)設(shè)置后三個(gè)EDMA通道分別負(fù)責(zé)從視頻端口FIFO中搬運(yùn)Y、Cb和Cr三個(gè)分量到SDRAM中;EDMA每啟動(dòng)一次,從FIFO中搬運(yùn)一行的采集數(shù)據(jù)到SDRAM中,并在搬運(yùn)完畢后自動(dòng)更新目的地址;EDMA陣列計(jì)數(shù)值到0后啟動(dòng)參數(shù)連接,從參數(shù)RAM中裝載下一次傳輸需要的參數(shù),若使用了傳輸結(jié)束中斷,則執(zhí)行EDMA中斷服務(wù)程序。

視頻采集驅(qū)動(dòng)的關(guān)鍵技術(shù)

在視頻采集過程中,最重要的是對(duì)視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)控制和有效的傳輸,因此在程序設(shè)計(jì)中需要使用硬件中斷,應(yīng)用程序之間要同步,在中斷服務(wù)程序中,根據(jù)視頻端口內(nèi)部FIFO的狀態(tài)通過EDMA完成視頻數(shù)據(jù)的讀入SDRAM,并要考慮讀入的數(shù)據(jù)的緩存管理。

3.1中斷設(shè)置

中斷服務(wù)函數(shù)用來處理外部設(shè)備的觸發(fā)事件。對(duì)于視頻采集應(yīng)用, 每采集完一幀數(shù)據(jù)將觸發(fā)EDMA中斷。

EDMA中斷設(shè)置:在中斷服務(wù)表(IST)中添加EDMA_intDispatcher(),作為EDMA中斷服務(wù)取指包(ISTP),然后使用EDMA_intHook()將兩個(gè)亮度底場EDMA的傳輸結(jié)束代碼與中斷服務(wù)程序建立連接。

設(shè)置64個(gè)EDMA通道共享一個(gè)中斷號(hào),中斷發(fā)生時(shí),EDMA_intDispatcher()首先檢測CIER和CIPR寄存器中的被置位的位,然后再調(diào)用由EDMA_intHook()連接的中斷服務(wù)程序。中斷發(fā)生后,通過傳輸結(jié)束代碼進(jìn)行區(qū)分當(dāng)前中斷是哪個(gè)EDMA通道觸發(fā)的。

一幀數(shù)據(jù)采集完畢后,EDMA啟動(dòng)其中斷服務(wù)程序。中斷服務(wù)程序首先檢查目前有無被掛起的請(qǐng)求任務(wù),如果有,則微型驅(qū)動(dòng)將當(dāng)前幀的首地址等信息打包,并調(diào)用GIO模塊的回調(diào)函數(shù),回調(diào)函數(shù)喚醒被掛起的任務(wù)同時(shí)將該包傳遞給應(yīng)用程序,實(shí)現(xiàn)應(yīng)用程序與微型驅(qū)動(dòng)之間的同步;最后更新下一幀的EDMA目的地址,準(zhǔn)備采集下一幀。

3.2緩存管理

微驅(qū)動(dòng)在中斷服務(wù)函數(shù)中管理幀緩沖區(qū),視頻數(shù)據(jù)的讀入SDRAM在SDRAM中申請(qǐng)兩塊緩存A和B,采樣乒乓緩存的方式進(jìn)行管理。

模擬視頻輸入PAL或NTSC都是按場隔行掃描,因此數(shù)據(jù)可以按照?qǐng)瞿J竭M(jìn)行存儲(chǔ),即先存儲(chǔ)頂場再存儲(chǔ)底場,在存儲(chǔ)器中是單獨(dú)的兩場圖像;或者按幀模式進(jìn)行存儲(chǔ),即頂場和底場按行交叉存儲(chǔ),將兩場圖像拼成一幀圖像。

按幀模式存儲(chǔ)時(shí),在SDRAM中申請(qǐng)兩幀緩存,得到兩幀的首地址;然后為每一幀中的每一場的亮度和色度分量指定存儲(chǔ)地址,兩場地址相差一個(gè)象素行,如圖3所示:首先采集頂場,然后采集底場,兩場按行交叉存放形成完整的一幀。

3.3同步

類驅(qū)動(dòng)使用DSP/BIOS的GIO模塊,該模塊需提供必要的同步讀寫API函數(shù)及其擴(kuò)展函數(shù),同時(shí)需簡化代碼和使用數(shù)據(jù)緩存的大小。

應(yīng)用程序通過調(diào)用GIO的API函數(shù)直接與微型驅(qū)動(dòng)交換數(shù)據(jù)。應(yīng)用程序與微型驅(qū)動(dòng)同時(shí)對(duì)乒乓緩存A和B進(jìn)行處理,即應(yīng)用程序?qū)進(jìn)行處理的同時(shí)微型驅(qū)動(dòng)將當(dāng)前采集到的數(shù)據(jù)保存到B;而微型驅(qū)動(dòng)只有在采集完一幀之后才能將本緩存的控制權(quán)交給應(yīng)用程序,因此應(yīng)用程序與微型驅(qū)動(dòng)之間必須實(shí)現(xiàn)同步。應(yīng)用程序、類驅(qū)動(dòng)程序、微型驅(qū)動(dòng)程序之間的關(guān)系如圖4所示。

     

 

圖4應(yīng)用程序、類驅(qū)動(dòng)與微型驅(qū)動(dòng)

 

程序通過調(diào)用SEM旗語模塊實(shí)現(xiàn)同步。在DSP/BIOS配置工具中使用SEM_pend、SEM_post等函數(shù)配置GIO模塊的pend和post函數(shù)。應(yīng)用程序通過調(diào)用GIO的API向微型驅(qū)動(dòng)申請(qǐng)緩存,GIO模塊將應(yīng)用程序的請(qǐng)求信息打包并傳遞給微型驅(qū)動(dòng),微型驅(qū)動(dòng)首先檢查當(dāng)前幀是否采集完,若當(dāng)前幀即將采集完畢,則微型驅(qū)動(dòng)將當(dāng)前幀的地址返回給GIO模塊,否則向GIO模塊返回一個(gè)掛起信號(hào),通過調(diào)用GIO的pend函數(shù),將應(yīng)用程序的當(dāng)前任務(wù)掛起,強(qiáng)制其進(jìn)入阻塞狀態(tài),等待EDMA中斷服務(wù)程序?qū)⑵鋯拘选?/P>

在應(yīng)用程序中為了更方便的調(diào)用驅(qū)動(dòng)程序,可以將GIO的API重新封裝成更易使用的形式。對(duì)數(shù)據(jù)采集程序來說用的最多的操作就是放棄當(dāng)前幀,并從驅(qū)動(dòng)程序中獲取另一幀的控制權(quán),同時(shí)調(diào)用此函數(shù)實(shí)現(xiàn)視頻同步,這些操作封裝后可以用簡單的一個(gè)函數(shù)調(diào)用實(shí)現(xiàn)。

4         結(jié)論

在某些工程應(yīng)用中僅要求對(duì)亮度分量進(jìn)行處理,此中情況下可以去掉后兩個(gè)EDMA通道,為應(yīng)用程序節(jié)省更多的RAM空間。

本文作者創(chuàng)新點(diǎn):充分利用TMS320DM642的硬件資源及開發(fā)工具,結(jié)合視頻采集驅(qū)動(dòng)的特點(diǎn),利用類、微驅(qū)動(dòng)模型降低系統(tǒng)中軟件和硬件間的耦合性。本文設(shè)計(jì)的驅(qū)動(dòng)程序可以接口不同的設(shè)備,當(dāng)更換設(shè)備時(shí),應(yīng)用程序只需做很小的修改。提高了程序的可重用性和可移植性。

按此方法設(shè)計(jì)的視頻采集驅(qū)動(dòng)已用到實(shí)際的視頻壓縮編碼的工程項(xiàng)目中,實(shí)踐證明,采用這些方法編寫的驅(qū)動(dòng)程序運(yùn)行穩(wěn)定,與應(yīng)用程序可以實(shí)現(xiàn)無縫連接,可以為各種視頻處理算法提供了穩(wěn)定的底層支持。

參考文獻(xiàn)

[1] 安向陽, 沈庭芝. 基于DSP TMS320DM642的H.264視頻編碼的實(shí)現(xiàn)和優(yōu)化[J]. 微計(jì)算機(jī)信息. 2005,21 (7-2): 128-130.

[2] 靳輝, 周培源. 視頻采集卡驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用. 2001, 27(2): 7-9.

[3] Texas Instruments. TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor[EB/OL].Http//focus.ti.com/lit/ds/sprs200e/sprs200e.pdf. March 2004

[4] DSP/BIOS Device Driver Developer's Guide[Z]. Literature Number: SPRU616. Texas Instruments Incorporated. November 2002

[5] The TMS320DM642 Video Port Mini-Driver[Z],Literature Number: SPRU918A. Texas Instruments Incorporated.  August 2003

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉