當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于DSP/BIOS的外設(shè)驅(qū)動開發(fā)模型及DSP視頻驅(qū)動程序

引言
隨著時代的發(fā)展,DSP技術(shù)在遠程監(jiān)控、可視電話、工業(yè)檢測等視頻處理領(lǐng)域得到了廣泛的應(yīng)用,對于不同的視頻處理系統(tǒng),會使用不同的視頻設(shè)備,所以有必要為視頻沒備設(shè)計驅(qū)動程序,為高層應(yīng)用程序提供統(tǒng)一的接口來操作底層硬件。只要是遵循此驅(qū)動程序接口標(biāo)準(zhǔn)開發(fā)的高層應(yīng)用程序,都可以在具有相同接口的不同硬件平臺上運行,具有很好的通用性和可移植性。同時高層應(yīng)用程序設(shè)計人員只要會使用設(shè)備驅(qū)動程序提供的API接口,就不必了解底層硬件的具體實現(xiàn),可以大大提高整個視頻系統(tǒng)的開發(fā)效率。

對于視頻設(shè)備,TI公司也提出了對應(yīng)的視頻設(shè)備驅(qū)動程序模型,但這些模型主要是針對6000系列高端DSP,甚至是DM64X這樣的視頻處理專用DSP設(shè)計的。而TMS320F2812(簡稱F2812)DSP這樣的低端處理器,內(nèi)部存儲空間較小,且沒有DM64X那樣專用的視頻接口。本文針對這類問題,提出了對TI視頻驅(qū)動模型進行簡化和改造的方法,使視頻設(shè)備驅(qū)動程序占用盡量少的系統(tǒng)資源,來完成對視頻硬件設(shè)備的操作。這種視頻驅(qū)動模型的裁減方法,對于使用低端處理器的視頻處理系統(tǒng)具有借可鑒性。

1、基于DSP/BIOS的外設(shè) 驅(qū)動開發(fā)模型

TI公司為開發(fā)DsP的外設(shè)驅(qū)動程序,推出了DSP/BIOS Device Driver kit,定義了標(biāo)準(zhǔn)的設(shè)備驅(qū)動模型,并提供了一系列的API接口。如圖1所示,外設(shè)驅(qū)動程序分為兩層:

①類驅(qū)動(class driver)。類驅(qū)動程序用來為應(yīng)用程序提供接口。這部分程序與設(shè)備無關(guān),主要功能包括維護設(shè)備數(shù)據(jù)緩沖區(qū),向上提供API接口供應(yīng)用層程序調(diào)用,并協(xié)調(diào)應(yīng)用程序?qū)ν庠O(shè)操作的同步和阻塞;向下提供適配層與迷你驅(qū)動層相連,實現(xiàn)API接口函數(shù)到迷你驅(qū)動層程序的映射。類驅(qū)動程序與硬件無關(guān),只要外設(shè)驅(qū)動模型選定了,類驅(qū)動程序就定下來了,不需要做多少修改。

②迷你驅(qū)動(mini driver)。迷你驅(qū)動程序與設(shè)備相關(guān),所以設(shè)計迷你驅(qū)動程序是外設(shè)驅(qū)動開發(fā)中的重點。迷你驅(qū)動程序與類驅(qū)動層的接口格式是統(tǒng)一的,但迷你驅(qū)動程序?qū)Φ讓佑布牟僮魇歉鶕?jù)硬件平臺的不同而變化的。迷你驅(qū)動接收類驅(qū)動層發(fā)出的IOM_Packet命令包,決定對底層硬件進行什么樣的操作。

外設(shè)驅(qū)動程序模型又可以分為以下3類:

①PIP/PI0模型?;跀?shù)據(jù)管道的I/O模型,每個管道都在維護自己的一個緩沖區(qū)。當(dāng)數(shù)據(jù)寫入緩沖區(qū),或從緩沖區(qū)取出數(shù)據(jù)時,便會激發(fā)notifyReader和notifyWriter函數(shù)實現(xiàn)數(shù)據(jù)的同步。

②SIO/DIO模型。基于數(shù)據(jù)流的I/O模型,一個數(shù)據(jù)流是單向的,要么是輸入,要么是輸出,而且SIO/DIO模瓔使用異步方式來操作I/0,對于數(shù)據(jù)的讀寫、處理可以同時進行。

③GI0模型。通用的I/O模型,靈活性很強,且沒有適配層,直接操作迷你驅(qū)動程序,主要用來設(shè)計新型的設(shè)備驅(qū)動模型。

2、視頻處理系統(tǒng)硬件平臺

硬件平臺如圖2所示。系統(tǒng)以TI公司的F2812 DSP作為中心處理器,以模擬攝像機進行視頻信號采集,再使用SAA7111視頻解碼芯片將其轉(zhuǎn)換為BT601格式的數(shù)字視頻信號。DSP將數(shù)字視頻信號處理后,再寫入輸出幀緩存AL422中,并控制視頻編碼芯片ADV7177,將其轉(zhuǎn)換為模擬電視信號輸出。整個系統(tǒng)以l片CPLD——IspMachLC4128來協(xié)調(diào)各個芯片之間的時序關(guān)系。

3、視頻設(shè)備驅(qū)動程序開發(fā)

3.1 設(shè)備驅(qū)動程序模型的選擇

如上文介紹,常用的驅(qū)動程序模型包括3類:PIO、SIO和GIO。比較這3種模型可以知道:PIO支持更底層的通信,適合設(shè)計比較簡單的外設(shè)驅(qū)動程序。例如在TI公司的6X11DSK板上實現(xiàn)的音頻采集和回放,一般都是基于PIO模型的。而SIO模型具有很好的緩沖器分配回收機制,比較適合描述視頻設(shè)備,但是SIO的很多功能在本系統(tǒng)中使用不到,而且GIO模型設(shè)計的目的就是針對特殊硬件的新型設(shè)備,所以最終考慮使用GIO設(shè)備驅(qū)動模型。

TI公司最初設(shè)計的GIO模型其實是有缺陷的,主要在數(shù)據(jù)緩沖區(qū)管理的問題上,應(yīng)用程序在取得緩沖區(qū)進行數(shù)據(jù)處理之后,卻無法將緩沖區(qū)返回設(shè)備驅(qū)動程序。于是TI公司在推出DM6北這一款主要用于視頻處理的DSP芯片的同時,對GIO模型進行了改進,提出了專門針對視頻設(shè)備的FVID模型。FVID模型是建立在GIO模型之上的,以FVID_alloc、FVID_exchangc、FVID_free函數(shù)對GIO模型中的GIO_submit函數(shù)進行封裝,解決了GIO模型中驅(qū)動程序不能回收緩沖區(qū)的問題。 [!--empirenews.page--]

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

在設(shè)計完成的視頻驅(qū)動程序基礎(chǔ)上,開發(fā)一個典型的視頻處理應(yīng)用程序,其運行流程如圖3所示。首先使用FVID_create函數(shù)建立GIO_capture和GIO_play兩個視頻通道.再以GIO_capture通道的FVID_control函數(shù)發(fā)出cmd_start,采集到1幀視頻數(shù)據(jù)。應(yīng)用程序以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可以看到,應(yīng)用程序調(diào)用的這些FVID_XXX接口函數(shù)會自動由類驅(qū)動程序?qū)訉酉蛳掠成?,到達迷你驅(qū)動層程序;而迷你層程序可以直接操縱底層硬件設(shè)備,來完成整個視頻的采集、處理和顯示的過程。

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

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

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

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

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

③mdSubmitChan函數(shù)。負(fù)責(zé)管理緩沖區(qū)。分別接受應(yīng)用程序發(fā)出的FVID_ALLOC、FVID_EXCHANGE、FVID_FREE三個命令并進行處理。其中FVID_ALLOC命令對應(yīng)圖4中(a)到(b)的過程,應(yīng)用程序從兩個緩沖區(qū)中取出最新的一幀視顴數(shù)據(jù),塒其中的數(shù)據(jù)做處理,而只剩下一個緩沖區(qū)用來接受外部設(shè)備輸入的數(shù)據(jù)。FVID_EXCHANGE對應(yīng)圖4中(b)到(c)的過程,應(yīng)用程序處理完1幀數(shù)據(jù),將這1幀數(shù)據(jù)返回驅(qū)動程序,準(zhǔn)備用來顯示,同時再讀入新的l幀數(shù)據(jù)進行處理。FVID_FREE對應(yīng)圖4中(c)到(a)的過程,應(yīng)用程序?qū)⑻幚硗甑臄?shù)據(jù)幀返回驅(qū)動程序,而不再向驅(qū)動程序申請新的數(shù)據(jù)幀。以上3個命令足針對視頻輸入接口GIO_capture而言的,而對于輸出設(shè)備接口GIO_play,在SRAM中沒有分配緩沖區(qū),所以其nldSubmitChan函數(shù)內(nèi)部設(shè)為空函數(shù)。[!--empirenews.page--]

④mdControlChan函數(shù)。用來操作外部視頻設(shè)備,完成對視頻數(shù)據(jù)的采集和輸出。對于GIO_capture和GIO_play這兩個設(shè)備接口的mdControlChan函數(shù)接受的命令是不同的:

視頻輸入GIO_capture接口的mdControlCham函數(shù)只接受cmd_start命令,完成1幀視頻數(shù)據(jù)的采集;而視頻輸出GIO_play接口的mdControlChan函數(shù)只接受cmd_display命令.完成視頻信號的輸出。

3.4 視頻驅(qū)動模型裁剪的一般方法

TI公司設(shè)計的GIO/FVID視頻設(shè)備驅(qū)動原型相對復(fù)雜,且占用較多的系統(tǒng)資源,要使其可以應(yīng)用于更通用的低端處理器系統(tǒng),就必須進行改造和裁減。在改造中要注意以下幾個方面:

①阻塞的I/0操作。TI公司6000系列的DSP具有FDMA功能,傳輸數(shù)據(jù)不需要CPU的干預(yù),而DM64X還具有專用的視頻接口,傳輸數(shù)據(jù)不會占用外部擴展總線,所以視頻數(shù)據(jù)的處理和輸入輸出是可以并行的。而低端處理器是不具備這樣功能的,視頻設(shè)備一般都是通過外部擴展總線連接的,所以對視頻設(shè)備的操作必須設(shè)計為阻塞型的I/O操作,視頻數(shù)據(jù)輸入/輸出的過程是由CPU來完成,且要保證對視頻設(shè)備的操作不會被其他操作中斷。

②對視頻數(shù)據(jù)緩沖區(qū)的管理。GIO/FVID視頻設(shè)備驅(qū)動原型中使用的3緩沖區(qū)模型,雖然功能很完善,卻占用了太多的存儲空間,所以對于實際的視頻處理系統(tǒng)就要進行調(diào)整,改為兩緩沖區(qū)甚至是單緩沖區(qū)模型。對于具有獨立硬件緩存的輸出設(shè)備,可以考慮不再為其分配動態(tài)緩沖區(qū)。


③對視頻設(shè)備的操作。mdControlChan函數(shù)主要用來操作外部視頻設(shè)備,只要保留對實際系統(tǒng)有用的操作就足夠了,而GI0/FVID視頻設(shè)備驅(qū)動原犁中定義的很多操作都可以省略。

4、小結(jié)

本文介紹了基于DSP/BIOS的外設(shè)驅(qū)動程序模型,并針對基于F2812DSP的視頻處理系統(tǒng)這一具體的硬件平臺,重點介紹了開發(fā)GIO/FVID設(shè)備驅(qū)動的流程和針對低端處理器系統(tǒng)的視頻驅(qū)動模型裁減方法。本視頻驅(qū)動程序為開發(fā)各種視頻處理應(yīng)用程序(如JPEG圖像EPA控制網(wǎng)絡(luò)中ZigBee壓縮、MPEG視頻壓縮、視頻監(jiān)控程序等)提供了有力的支持。本文介紹的設(shè)備驅(qū)動程序的開發(fā)方法,對于同類視頻處理系統(tǒng),特別是對于使用TI2000系州DSP這樣系統(tǒng)資源比較有限的視頻處理系統(tǒng),具有很好的可借鑒性。

引言
隨著時代的發(fā)展,DSP技術(shù)在遠程監(jiān)控、可視電話、工業(yè)檢測等視頻處理領(lǐng)域得到了廣泛的應(yīng)用,對于不同的視頻處理系統(tǒng),會使用不同的視頻設(shè)備,所以有必要為視頻沒備設(shè)計驅(qū)動程序,為高層應(yīng)用程序提供統(tǒng)一的接口來操作底層硬件。只要是遵循此驅(qū)動程序接口標(biāo)準(zhǔn)開發(fā)的高層應(yīng)用程序,都可以在具有相同接口的不同硬件平臺上運行,具有很好的通用性和可移植性。同時高層應(yīng)用程序設(shè)計人員只要會使用設(shè)備驅(qū)動程序提供的API接口,就不必了解底層硬件的具體實現(xiàn),可以大大提高整個視頻系統(tǒng)的開發(fā)效率。

對于視頻設(shè)備,TI公司也提出了對應(yīng)的視頻設(shè)備驅(qū)動程序模型,但這些模型主要是針對6000系列高端DSP,甚至是DM64X這樣的視頻處理專用DSP設(shè)計的。而TMS320F2812(簡稱F2812)DSP這樣的低端處理器,內(nèi)部存儲空間較小,且沒有DM64X那樣專用的視頻接口。本文針對這類問題,提出了對TI視頻驅(qū)動模型進行簡化和改造的方法,使視頻設(shè)備驅(qū)動程序占用盡量少的系統(tǒng)資源,來完成對視頻硬件設(shè)備的操作。這種視頻驅(qū)動模型的裁減方法,對于使用低端處理器的視頻處理系統(tǒng)具有借可鑒性。

1、基于DSP/BIOS的外設(shè) 驅(qū)動開發(fā)模型

TI公司為開發(fā)DsP的外設(shè)驅(qū)動程序,推出了DSP/BIOS Device Driver kit,定義了標(biāo)準(zhǔn)的設(shè)備驅(qū)動模型,并提供了一系列的API接口。如圖1所示,外設(shè)驅(qū)動程序分為兩層:

①類驅(qū)動(class driver)。類驅(qū)動程序用來為應(yīng)用程序提供接口。這部分程序與設(shè)備無關(guān),主要功能包括維護設(shè)備數(shù)據(jù)緩沖區(qū),向上提供API接口供應(yīng)用層程序調(diào)用,并協(xié)調(diào)應(yīng)用程序?qū)ν庠O(shè)操作的同步和阻塞;向下提供適配層與迷你驅(qū)動層相連,實現(xiàn)API接口函數(shù)到迷你驅(qū)動層程序的映射。類驅(qū)動程序與硬件無關(guān),只要外設(shè)驅(qū)動模型選定了,類驅(qū)動程序就定下來了,不需要做多少修改。

②迷你驅(qū)動(mini driver)。迷你驅(qū)動程序與設(shè)備相關(guān),所以設(shè)計迷你驅(qū)動程序是外設(shè)驅(qū)動開發(fā)中的重點。迷你驅(qū)動程序與類驅(qū)動層的接口格式是統(tǒng)一的,但迷你驅(qū)動程序?qū)Φ讓佑布牟僮魇歉鶕?jù)硬件平臺的不同而變化的。迷你驅(qū)動接收類驅(qū)動層發(fā)出的IOM_Packet命令包,決定對底層硬件進行什么樣的操作。[!--empirenews.page--]

外設(shè)驅(qū)動程序模型又可以分為以下3類:

①PIP/PI0模型?;跀?shù)據(jù)管道的I/O模型,每個管道都在維護自己的一個緩沖區(qū)。當(dāng)數(shù)據(jù)寫入緩沖區(qū),或從緩沖區(qū)取出數(shù)據(jù)時,便會激發(fā)notifyReader和notifyWriter函數(shù)實現(xiàn)數(shù)據(jù)的同步。

②SIO/DIO模型?;跀?shù)據(jù)流的I/O模型,一個數(shù)據(jù)流是單向的,要么是輸入,要么是輸出,而且SIO/DIO模瓔使用異步方式來操作I/0,對于數(shù)據(jù)的讀寫、處理可以同時進行。

③GI0模型。通用的I/O模型,靈活性很強,且沒有適配層,直接操作迷你驅(qū)動程序,主要用來設(shè)計新型的設(shè)備驅(qū)動模型。

2、視頻處理系統(tǒng)硬件平臺

硬件平臺如圖2所示。系統(tǒng)以TI公司的F2812 DSP作為中心處理器,以模擬攝像機進行視頻信號采集,再使用SAA7111視頻解碼芯片將其轉(zhuǎn)換為BT601格式的數(shù)字視頻信號。DSP將數(shù)字視頻信號處理后,再寫入輸出幀緩存AL422中,并控制視頻編碼芯片ADV7177,將其轉(zhuǎn)換為模擬電視信號輸出。整個系統(tǒng)以l片CPLD——IspMachLC4128來協(xié)調(diào)各個芯片之間的時序關(guān)系。

3、視頻設(shè)備驅(qū)動程序開發(fā)

3.1 設(shè)備驅(qū)動程序模型的選擇

如上文介紹,常用的驅(qū)動程序模型包括3類:PIO、SIO和GIO。比較這3種模型可以知道:PIO支持更底層的通信,適合設(shè)計比較簡單的外設(shè)驅(qū)動程序。例如在TI公司的6X11DSK板上實現(xiàn)的音頻采集和回放,一般都是基于PIO模型的。而SIO模型具有很好的緩沖器分配回收機制,比較適合描述視頻設(shè)備,但是SIO的很多功能在本系統(tǒng)中使用不到,而且GIO模型設(shè)計的目的就是針對特殊硬件的新型設(shè)備,所以最終考慮使用GIO設(shè)備驅(qū)動模型。

TI公司最初設(shè)計的GIO模型其實是有缺陷的,主要在數(shù)據(jù)緩沖區(qū)管理的問題上,應(yīng)用程序在取得緩沖區(qū)進行數(shù)據(jù)處理之后,卻無法將緩沖區(qū)返回設(shè)備驅(qū)動程序。于是TI公司在推出DM6北這一款主要用于視頻處理的DSP芯片的同時,對GIO模型進行了改進,提出了專門針對視頻設(shè)備的FVID模型。FVID模型是建立在GIO模型之上的,以FVID_alloc、FVID_exchangc、FVID_free函數(shù)對GIO模型中的GIO_submit函數(shù)進行封裝,解決了GIO模型中驅(qū)動程序不能回收緩沖區(qū)的問題。

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

在設(shè)計完成的視頻驅(qū)動程序基礎(chǔ)上,開發(fā)一個典型的視頻處理應(yīng)用程序,其運行流程如圖3所示。首先使用FVID_create函數(shù)建立GIO_capture和GIO_play兩個視頻通道.再以GIO_capture通道的FVID_control函數(shù)發(fā)出cmd_start,采集到1幀視頻數(shù)據(jù)。應(yīng)用程序以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可以看到,應(yīng)用程序調(diào)用的這些FVID_XXX接口函數(shù)會自動由類驅(qū)動程序?qū)訉酉蛳掠成?,到達迷你驅(qū)動層程序;而迷你層程序可以直接操縱底層硬件設(shè)備,來完成整個視頻的采集、處理和顯示的過程。

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

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

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

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

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

③mdSubmitChan函數(shù)。負(fù)責(zé)管理緩沖區(qū)。分別接受應(yīng)用程序發(fā)出的FVID_ALLOC、FVID_EXCHANGE、FVID_FREE三個命令并進行處理。其中FVID_ALLOC命令對應(yīng)圖4中(a)到(b)的過程,應(yīng)用程序從兩個緩沖區(qū)中取出最新的一幀視顴數(shù)據(jù),塒其中的數(shù)據(jù)做處理,而只剩下一個緩沖區(qū)用來接受外部設(shè)備輸入的數(shù)據(jù)。FVID_EXCHANGE對應(yīng)圖4中(b)到(c)的過程,應(yīng)用程序處理完1幀數(shù)據(jù),將這1幀數(shù)據(jù)返回驅(qū)動程序,準(zhǔn)備用來顯示,同時再讀入新的l幀數(shù)據(jù)進行處理。FVID_FREE對應(yīng)圖4中(c)到(a)的過程,應(yīng)用程序?qū)⑻幚硗甑臄?shù)據(jù)幀返回驅(qū)動程序,而不再向驅(qū)動程序申請新的數(shù)據(jù)幀。以上3個命令足針對視頻輸入接口GIO_capture而言的,而對于輸出設(shè)備接口GIO_play,在SRAM中沒有分配緩沖區(qū),所以其nldSubmitChan函數(shù)內(nèi)部設(shè)為空函數(shù)。

④mdControlChan函數(shù)。用來操作外部視頻設(shè)備,完成對視頻數(shù)據(jù)的采集和輸出。對于GIO_capture和GIO_play這兩個設(shè)備接口的mdControlChan函數(shù)接受的命令是不同的:

視頻輸入GIO_capture接口的mdControlCham函數(shù)只接受cmd_start命令,完成1幀視頻數(shù)據(jù)的采集;而視頻輸出GIO_play接口的mdControlChan函數(shù)只接受cmd_display命令.完成視頻信號的輸出。

3.4 視頻驅(qū)動模型裁剪的一般方法

TI公司設(shè)計的GIO/FVID視頻設(shè)備驅(qū)動原型相對復(fù)雜,且占用較多的系統(tǒng)資源,要使其可以應(yīng)用于更通用的低端處理器系統(tǒng),就必須進行改造和裁減。在改造中要注意以下幾個方面:

①阻塞的I/0操作。TI公司6000系列的DSP具有FDMA功能,傳輸數(shù)據(jù)不需要CPU的干預(yù),而DM64X還具有專用的視頻接口,傳輸數(shù)據(jù)不會占用外部擴展總線,所以視頻數(shù)據(jù)的處理和輸入輸出是可以并行的。而低端處理器是不具備這樣功能的,視頻設(shè)備一般都是通過外部擴展總線連接的,所以對視頻設(shè)備的操作必須設(shè)計為阻塞型的I/O操作,視頻數(shù)據(jù)輸入/輸出的過程是由CPU來完成,且要保證對視頻設(shè)備的操作不會被其他操作中斷。

②對視頻數(shù)據(jù)緩沖區(qū)的管理。GIO/FVID視頻設(shè)備驅(qū)動原型中使用的3緩沖區(qū)模型,雖然功能很完善,卻占用了太多的存儲空間,所以對于實際的視頻處理系統(tǒng)就要進行調(diào)整,改為兩緩沖區(qū)甚至是單緩沖區(qū)模型。對于具有獨立硬件緩存的輸出設(shè)備,可以考慮不再為其分配動態(tài)緩沖區(qū)。


③對視頻設(shè)備的操作。mdControlChan函數(shù)主要用來操作外部視頻設(shè)備,只要保留對實際系統(tǒng)有用的操作就足夠了,而GI0/FVID視頻設(shè)備驅(qū)動原犁中定義的很多操作都可以省略。

4、小結(jié)

本文介紹了基于DSP/BIOS的外設(shè)驅(qū)動程序模型,并針對基于F2812DSP的視頻處理系統(tǒng)這一具體的硬件平臺,重點介紹了開發(fā)GIO/FVID設(shè)備驅(qū)動的流程和針對低端處理器系統(tǒng)的視頻驅(qū)動模型裁減方法。本視頻驅(qū)動程序為開發(fā)各種視頻處理應(yīng)用程序(如JPEG圖像EPA控制網(wǎng)絡(luò)中ZigBee壓縮、MPEG視頻壓縮、視頻監(jiān)控程序等)提供了有力的支持。本文介紹的設(shè)備驅(qū)動程序的開發(fā)方法,對于同類視頻處理系統(tǒng),特別是對于使用TI2000系州DSP這樣系統(tǒng)資源比較有限的視頻處理系統(tǒng),具有很好的可借鑒性。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(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)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

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