新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的視頻采集驅(qū)動(dòng)程序的實(shí)現(xiàn)

基于DSP的視頻采集驅(qū)動(dòng)程序的實(shí)現(xiàn)

作者: 時(shí)間:2008-08-21 來(lái)源:網(wǎng)絡(luò) 收藏
  的核心是圖像的數(shù)字化處理模塊?;赑C機(jī)的處理,給出了算法研究的途徑,而基于高速的應(yīng)用模塊才提供了實(shí)時(shí)嵌入式視頻處理的可能。然而,基于的海量視頻數(shù)據(jù)的實(shí)時(shí)處理的關(guān)鍵則是實(shí)時(shí)、合理的視頻數(shù)據(jù)采集。本文針對(duì)自行研制的基于(以下簡(jiǎn)稱DM642)的視頻處理板卡,使其在C64x系列DSP的實(shí)時(shí)操作系統(tǒng)DSP/BIOS的環(huán)境下運(yùn)行,實(shí)現(xiàn)基于類/微驅(qū)動(dòng)模型的視頻采集驅(qū)動(dòng)程序,并進(jìn)一步描述采用EDMA(增強(qiáng)的直接存儲(chǔ)器存取控制器)的圖像信號(hào)的實(shí)時(shí)傳輸。

  1 類/微驅(qū)動(dòng)程序模型

  C64x系列的DSP系統(tǒng)給出了類/微驅(qū)動(dòng)模型[1] 的驅(qū)動(dòng)程序結(jié)構(gòu),采用該模型進(jìn)行驅(qū)動(dòng)程序設(shè)計(jì),應(yīng)用程序可以復(fù)用絕大部分相似設(shè)備的驅(qū)動(dòng)程序,從而提高驅(qū)動(dòng)程序的開(kāi)發(fā)效率。類/微驅(qū)動(dòng)模型結(jié)構(gòu)如圖1所示,該模型在功能上將驅(qū)動(dòng)程序分為依賴硬件層(微驅(qū)動(dòng))和不依賴硬件層(類驅(qū)動(dòng))兩層,并在兩層之間給出通用接口。上層的應(yīng)用程序不直接控制微驅(qū)動(dòng),而是通過(guò)類驅(qū)動(dòng)對(duì)其進(jìn)行控制。每一個(gè)類驅(qū)動(dòng)在應(yīng)用程序代碼中表現(xiàn)為一個(gè)API函數(shù),并通過(guò)標(biāo)準(zhǔn)微驅(qū)動(dòng)的接口IOM與微驅(qū)動(dòng)進(jìn)行通信。

本文引用地址:http://butianyuan.cn/article/258045.htm  在類/微驅(qū)動(dòng)模型中,類驅(qū)動(dòng)通常用于完成多線程I/O請(qǐng)求的序列化功能和同步功能,同時(shí)對(duì)設(shè)備實(shí)例進(jìn)行管理。類驅(qū)動(dòng)通過(guò)每個(gè)外部設(shè)備獨(dú)有的微驅(qū)動(dòng)對(duì)設(shè)備進(jìn)行操作。微驅(qū)動(dòng)采用芯片支持庫(kù)[2]控制外設(shè)的寄存器、內(nèi)存和中斷資源。微驅(qū)動(dòng)程序必須將特定的外部設(shè)備有效地表示給類驅(qū)動(dòng)。

  類驅(qū)動(dòng)使用DSP/BIOS中的API函數(shù)[3]實(shí)現(xiàn)諸如同步等的系統(tǒng)服務(wù),DSP/BIOS定義了三種類驅(qū)動(dòng)模塊:管道管理模塊(PIP)、流輸入輸出管理模塊(SIO)和通用輸入輸出模塊(GIO)。在PIP和SIO類驅(qū)動(dòng)中,調(diào)用的API函數(shù)已經(jīng)存在于DSP/BIOS的PIP和SIO模塊中了,這些API函數(shù)需將參數(shù)傳給相應(yīng)的適配模塊,才能與微驅(qū)動(dòng)交換數(shù)據(jù)。而在GIO類驅(qū)動(dòng)中,調(diào)用的API函數(shù)則直接與微驅(qū)動(dòng)通信。

  2 基于DM642的視頻采集驅(qū)動(dòng)

  2.1 硬件結(jié)構(gòu)

  筆者利用TI公司的多媒體處理芯片DM642自行研制了嵌入式視頻處理板卡??ㄉ系闹饕M成模塊有視頻采集模塊、視頻處理模塊以及網(wǎng)絡(luò)發(fā)送模塊,其中視頻采集模塊主要由DSP芯片DM642[4]、視頻A/D 轉(zhuǎn)換芯片SAA7115和同步動(dòng)態(tài)存儲(chǔ)器芯片SDRAM等組成,如圖2所示。來(lái)自攝像頭的視頻信號(hào)通過(guò)SAA7115進(jìn)行數(shù)字化處理,輸出的信號(hào)經(jīng)過(guò)視頻端口的內(nèi)部FIFO緩沖后,由DM642通過(guò)EDMA將數(shù)據(jù)傳送到片外SDRAM中,以便供視頻應(yīng)用程序使用。

  主芯片DM642的處理能力達(dá)到4800MIPS,它的最大特點(diǎn)是芯片內(nèi)部集成了三個(gè)可配置的視頻端口[5],這些視頻端口提供了與通用視頻A/D轉(zhuǎn)換芯片的無(wú)縫接口,因而無(wú)需外加CPLD(復(fù)雜可編程邏輯器件)和FIFO就可以滿足系統(tǒng)設(shè)計(jì)的要求。SAA7115支持六路CVBS(復(fù)合模擬視頻輸入)或三路S-VIDEO (S端子信號(hào))輸入,支持多種格式的數(shù)字RGB和YUV視頻信號(hào)輸出。DM642通過(guò)IIC總線控制SAA7115的內(nèi)部寄存器。

  采用類/微驅(qū)動(dòng)模型編寫DM642芯片視頻端口的視頻采集驅(qū)動(dòng)程序,驅(qū)動(dòng)必須滿足如下幾個(gè)基本功能:

  · 硬件中斷;
  · 可同時(shí)處理DM642的三個(gè)視頻端口;
  · 支持應(yīng)用程序配置視頻采集的參數(shù),支持獲取圖像數(shù)據(jù);
  · 支持場(chǎng)圖像的采集,支持對(duì)CVBS和S-VIDEO兩種模擬信號(hào)的采集。

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

  2.2 視頻采集驅(qū)動(dòng)程序的框架構(gòu)建

  視頻采集驅(qū)動(dòng)程序包括類驅(qū)動(dòng)和微驅(qū)動(dòng)兩個(gè)模塊,視頻采集驅(qū)動(dòng)程序的結(jié)構(gòu)框架如圖3所示。


  類驅(qū)動(dòng)使用GIO模塊,GIO模塊的傳輸模式是基于流輸入輸出模塊的同步I/O模式的,更適合文件系統(tǒng)I/O,如視頻采集的應(yīng)用。該模塊的主要API函數(shù)的描述如表1所示。

  在圖3中,應(yīng)用程序使用GIO_create函數(shù)創(chuàng)建GIO通道,并通過(guò)調(diào)用GIO_submit函數(shù)直接與微驅(qū)動(dòng)的IOM交換數(shù)據(jù),完成視頻數(shù)據(jù)的采集。
  應(yīng)用程序通過(guò)GIO類驅(qū)動(dòng)調(diào)用微驅(qū)動(dòng)的標(biāo)準(zhǔn)API函數(shù),這些標(biāo)準(zhǔn)API函數(shù)的描述如表2所示。這些規(guī)定的函數(shù)將放入微驅(qū)動(dòng)的函數(shù)接口表(IOM_Fxns)中,以供應(yīng)用程序通過(guò)GIO類驅(qū)動(dòng)調(diào)用。

  在圖3中,微驅(qū)動(dòng)的IOM接口將應(yīng)用程序獲取圖像的命令打包生成數(shù)據(jù)包,并向微驅(qū)動(dòng)發(fā)送。數(shù)據(jù)包的格式如下: typedef struct IOM_Packet {

  QUE_Elem link; /* 數(shù)據(jù)包隊(duì)列 */
  Ptr addr; /* 數(shù)據(jù)地址 */
  Uns size; /* 數(shù)據(jù)長(zhǎng)度 */
  Arg misc; /* 保留使用 */
  Arg arg; /* 應(yīng)用程序 */
  Uns cmd; /* 命令字段 */
  Int status; /* 命令完成狀態(tài) */
  } IOM_Packet;

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉