基于TMS320DM642視頻采集驅動(dòng)開(kāi)發(fā)

發(fā)布時(shí)間:2010-8-6 15:50    發(fā)布者:lavida
TMS320DM642是TI公司推出的一款針對多媒體處理領(lǐng)域應用的芯片。文中簡(jiǎn)要介紹了TMS320DM642芯片的性能特點(diǎn)和在其上編寫(xiě)視頻采集驅動(dòng)的原理。

結合TMS320DM642芯片類(lèi)/微型驅動(dòng)模型,提供了按幀采集ITU-R BT.656數據驅動(dòng)的實(shí)現方法,并詳細討論視頻采集驅動(dòng)的硬件配置及軟件設計中的幀緩存管理、同步及數據搬運等關(guān)鍵技術(shù)。

TMS320DM642 是一款針對視頻和圖像解決方案的高性能數字多媒體處理器,具有極強的處理性能" 高度的靈活性和可編程性。因此主要用于視頻信號處理和通信。結合合適的編碼器控制算法,具有較高運算速度的TMS320DM642DSP 芯片可以作新一帶視頻壓縮標準H.264編、解碼器的硬件平臺,實(shí)現滿(mǎn)足應用需求的H.264 編碼器。  

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

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

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

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

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

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

2.1 視頻端口配置  

TMS320DM642有三個(gè)可配置的視頻端口:VP0、VP1和VP2,與視頻采集芯片連接,無(wú)需外加邏輯控制電路和FIFO緩存,只需編程者編寫(xiě)相關(guān)驅動(dòng)程序,就可實(shí)現圖像采集或顯示。每個(gè)視頻端口各有20根數據輸入輸出管腳;每個(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模式等。  

8bit量化,所以?xún)H使用每個(gè)通道的后8個(gè)管腳,即將VPxD2"9,VPxD12"19(x對應三個(gè)端口0,1,2)直接與A/D芯片的8根輸出管腳相連。輸入的PAL/NTSC模擬信號經(jīng)過(guò)視頻解碼芯片A/D后形成的數字視頻信號直接進(jìn)入相應的視頻端口中。  

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

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


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


圖2 EDMA配置
  
2.2 EDMA配置  

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

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

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

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

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

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

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

3.1 中斷設置  

中斷服務(wù)函數用來(lái)處理外部設備的觸發(fā)事件。對于視頻采集應用, 每采集完一幀數據將觸發(fā)EDMA中斷。  

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

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

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

3.2 緩存管理  

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

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

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

類(lèi)驅動(dòng)使用DSP/BIOS的GIO模塊,該模塊需提供必要的同步讀寫(xiě)API函數及其擴展函數,同時(shí)需簡(jiǎn)化代碼和使用數據緩存的大小。  

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

  
圖4應用程序、類(lèi)驅動(dòng)與微型驅動(dòng)
  
程序通過(guò)調用SEM旗語(yǔ)模塊實(shí)現同步。在DSP/BIOS配置工具中使用SEM_pend、SEM_post等函數配置GIO模塊的pend和post函數。應用程序通過(guò)調用GIO的API向微型驅動(dòng)申請緩存,GIO模塊將應用程序的請求信息打包并傳遞給微型驅動(dòng),微型驅動(dòng)首先檢查當前幀是否采集完,若當前幀即將采集完畢,則微型驅動(dòng)將當前幀的地址返回給GIO模塊,否則向GIO模塊返回一個(gè)掛起信號,通過(guò)調用GIO的pend函數,將應用程序的當前任務(wù)掛起,強制其進(jìn)入阻塞狀態(tài),等待EDMA中斷服務(wù)程序將其喚醒。
  
在應用程序中為了更方便的調用驅動(dòng)程序,可以將GIO的API重新封裝成更易使用的形式。對數據采集程序來(lái)說(shuō)用的最多的操作就是放棄當前幀,并從驅動(dòng)程序中獲取另一幀的控制權,同時(shí)調用此函數實(shí)現視頻同步,這些操作封裝后可以用簡(jiǎn)單的一個(gè)函數調用實(shí)現。  

4 結論  

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

本文作者創(chuàng )新點(diǎn):充分利用TMS320DM642的硬件資源及開(kāi)發(fā)工具,結合視頻采集驅動(dòng)的特點(diǎn),利用類(lèi)、微驅動(dòng)模型降低系統中軟件和硬件間的耦合性。本文設計的驅動(dòng)程序可以接口不同的設備,當更換設備時(shí),應用程序只需做很小的修改。提高了程序的可重用性和可移植性。  
按此方法設計的視頻采集驅動(dòng)已用到實(shí)際的視頻壓縮編碼的工程項目中,實(shí)踐證明,采用這些方法編寫(xiě)的驅動(dòng)程序運行穩定,與應用程序可以實(shí)現無(wú)縫連接,可以為各種視頻處理算法提供了穩定的底層支持。
本文地址:http://selenalain.com/thread-19898-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页