新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于DSP的視頻采集驅動程序的實現

        基于DSP的視頻采集驅動程序的實現

        作者: 時間:2008-08-21 來源:網絡 收藏
          的核心是圖像的數字化處理模塊。基于PC機的處理,給出了算法研究的途徑,而基于高速的應用模塊才提供了實時嵌入式視頻處理的可能。然而,基于的海量視頻數據的實時處理的關鍵則是實時、合理的視頻數據采集。本文針對自行研制的基于(以下簡稱DM642)的視頻處理板卡,使其在C64x系列DSP的實時操作系統DSP/BIOS的環境下運行,實現基于類/微驅動模型的視頻采集驅動程序,并進一步描述采用EDMA(增強的直接存儲器存取控制器)的圖像信號的實時傳輸。

          1 類/微驅動程序模型

          C64x系列的DSP系統給出了類/微驅動模型[1] 的驅動程序結構,采用該模型進行驅動程序設計,應用程序可以復用絕大部分相似設備的驅動程序,從而提高驅動程序的開發效率。類/微驅動模型結構如圖1所示,該模型在功能上將驅動程序分為依賴硬件層(微驅動)和不依賴硬件層(類驅動)兩層,并在兩層之間給出通用接口。上層的應用程序不直接控制微驅動,而是通過類驅動對其進行控制。每一個類驅動在應用程序代碼中表現為一個API函數,并通過標準微驅動的接口IOM與微驅動進行通信。

        本文引用地址:http://www.104case.com/article/258045.htm  在類/微驅動模型中,類驅動通常用于完成多線程I/O請求的序列化功能和同步功能,同時對設備實例進行管理。類驅動通過每個外部設備獨有的微驅動對設備進行操作。微驅動采用芯片支持庫[2]控制外設的寄存器、內存和中斷資源。微驅動程序必須將特定的外部設備有效地表示給類驅動。

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

          2 基于DM642的視頻采集驅動

          2.1 硬件結構

          筆者利用TI公司的多媒體處理芯片DM642自行研制了嵌入式視頻處理板卡。卡上的主要組成模塊有視頻采集模塊、視頻處理模塊以及網絡發送模塊,其中視頻采集模塊主要由DSP芯片DM642[4]、視頻A/D 轉換芯片SAA7115和同步動態存儲器芯片SDRAM等組成,如圖2所示。來自攝像頭的視頻信號通過SAA7115進行數字化處理,輸出的信號經過視頻端口的內部FIFO緩沖后,由DM642通過EDMA將數據傳送到片外SDRAM中,以便供視頻應用程序使用。

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

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

          · 硬件中斷;
          · 可同時處理DM642的三個視頻端口;
          · 支持應用程序配置視頻采集的參數,支持獲取圖像數據;
          · 支持場圖像的采集,支持對CVBS和S-VIDEO兩種模擬信號的采集。

          在視頻采集過程中,最重要的是對視頻數據進行實時控制和有效的傳輸,因此需要使用硬件中斷,并在中斷服務程序中,根據視頻端口內部FIFO的狀態通過EDMA完成視頻數據的讀入。

          2.2 視頻采集驅動程序的框架構建

          視頻采集驅動程序包括類驅動和微驅動兩個模塊,視頻采集驅動程序的結構框架如圖3所示。


          類驅動使用GIO模塊,GIO模塊的傳輸模式是基于流輸入輸出模塊的同步I/O模式的,更適合文件系統I/O,如視頻采集的應用。該模塊的主要API函數的描述如表1所示。

          在圖3中,應用程序使用GIO_create函數創建GIO通道,并通過調用GIO_submit函數直接與微驅動的IOM交換數據,完成視頻數據的采集。
          應用程序通過GIO類驅動調用微驅動的標準API函數,這些標準API函數的描述如表2所示。這些規定的函數將放入微驅動的函數接口表(IOM_Fxns)中,以供應用程序通過GIO類驅動調用。

          在圖3中,微驅動的IOM接口將應用程序獲取圖像的命令打包生成數據包,并向微驅動發送。數據包的格式如下: typedef struct IOM_Packet {

          QUE_Elem link; /* 數據包隊列 */
          Ptr addr; /* 數據地址 */
          Uns size; /* 數據長度 */
          Arg misc; /* 保留使用 */
          Arg arg; /* 應用程序 */
          Uns cmd; /* 命令字段 */
          Int status; /* 命令完成狀態 */
          } IOM_Packet;

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 胶南市| 丁青县| 吴江市| 镇平县| 景东| 郁南县| 芜湖市| 聂荣县| 彝良县| 醴陵市| 襄城县| 洛南县| 顺平县| 凭祥市| 巢湖市| 喀喇沁旗| 蒙自县| 从江县| 浦城县| 策勒县| 卓尼县| 那曲县| 武胜县| 凤山市| 循化| 通江县| 长垣县| 牙克石市| 阳原县| 琼结县| 孝义市| 阳曲县| 治多县| 城固县| 连江县| 灵川县| 新乐市| 洪泽县| 大竹县| 日土县| 和顺县|