新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于DSP/BIOS的外設驅(qū)動開發(fā)模型及DSP視頻驅(qū)動程序

基于DSP/BIOS的外設驅(qū)動開發(fā)模型及DSP視頻驅(qū)動程序

作者: 時間:2011-06-04 來源:網(wǎng)絡 收藏
進行數(shù)據(jù)處理之后,卻無法將緩沖區(qū)返回設備程序。于是TI公司在推出DM6北這一款主要用于處理的芯片的同時,對GIO進行了改進,提出了專門針對設備的FVID。FVID是建立在GIO模型之上的,以FVID_alloc、FVID_exchangc、FVID_free函數(shù)對GIO模型中的GIO_submit函數(shù)進行封裝,解決了GIO模型中程序不能回收緩沖區(qū)的問題。

本文引用地址:http://butianyuan.cn/article/150653.htm

此外FVID模型還專門設計了FVID_frame結(jié)構。此結(jié)構中包含了常用的信號的信息,如行數(shù)、列數(shù)、YUV結(jié)構、場頻等,很適合描述視頻數(shù)據(jù)幀。但FVID主要是針對DM64X系統(tǒng)設計的,DM64X的很多功能在F2812 上都不具備。所以本設計針對F2812 視頻處理系統(tǒng),對FVID模型進行了一定的簡化,保留類程序,而重寫了迷你驅(qū)動層程序。

3.2 視頻處理程序運行流程

在設計完成的視頻驅(qū)動程序基礎上,一個典型的視頻處理應用程序,其運行流程如圖3所示。首先使用FVID_create函數(shù)建立GIO_capture和GIO_play兩個視頻通道.再以GIO_capture通道的FVID_control函數(shù)發(fā)出cmd_start,采集到1幀視頻數(shù)據(jù)。應用程序以GIO_capture通道的FVID_alloc函數(shù)向驅(qū)動程序申請采集到的數(shù)據(jù)幀,進行處理后再以FVID_exchange函數(shù)將修改后的數(shù)據(jù)幀返回驅(qū)動程序,最后再調(diào)用GI0_play通道的FVID_control函數(shù)發(fā)出cmd_display命令將數(shù)據(jù)幀輸出。由圖3可以看到,應用程序調(diào)用的這些FVID_XXX接口函數(shù)會自動由類驅(qū)動程序?qū)訉酉蛳掠成?,到達迷你驅(qū)動層程序;而迷你層程序可以直接操縱底層硬件設備,來完成整個視頻的采集、處理和顯示的過程。

3.3 迷你驅(qū)動程序的設計

迷你層驅(qū)動程序足整個設計的重點所在,下面詳細介紹其實現(xiàn)方法。迷你層驅(qū)動程序主要由表1所列的幾個函數(shù)組成。

對各個函數(shù)的具體實現(xiàn)如下:

①mdBindDev函數(shù)。在應用程序建立設備接口(如FVID_create函數(shù))時被調(diào)用,完成對外部設備的初始化。而與其對應的是md_UBindDev函數(shù),使用nadUBindDev函數(shù)會使設備處于無效狀態(tài),不能再使用。

②mdCreateChan函數(shù)。使用此函數(shù)為應用程序和驅(qū)動程序建立通信通道,同時為每個通道申請緩沖區(qū)。在TI公司發(fā) 布的FVID模型中,為每個通道都分配了3個緩沖區(qū),輪流與外部設備交換數(shù)據(jù),每個緩沖區(qū)對應1幀視頻數(shù)據(jù),這樣的設計在DM642這樣可以外擴大容量SDRAM的系統(tǒng)中是完全可行的。但是對于本系統(tǒng),F(xiàn)2812DSP外部只擴展了512K×16位的SRAM,既要做視頻輸入的幀緩存,義要存放一部分程序,這樣存儲空間就不夠了。所以本設計中進行了簡化,對視頻輸入設備采用兩緩沖區(qū)輪轉(zhuǎn)的機制,如圖4(a)所示。而對于視頻輸出設備,以AL422 FIFO作為硬件幀緩存,而不在SRAM中再為其分配緩沖區(qū)。與mdCreateChan對應的是md-DeleteChan函數(shù),用于刪除設備通道,釋放緩沖區(qū)資源。



評論


相關推薦

技術專區(qū)

關閉