版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 基于DSP/BIOS的外設(shè)驅(qū)動(dòng)開(kāi)發(fā)模型及DSP視頻驅(qū)動(dòng)程序基于GIO/FVID的DSP視頻驅(qū)動(dòng)程序引言隨著時(shí)代的發(fā)展,DSP技術(shù)在遠(yuǎn)程監(jiān)控、可視電話(huà)、工業(yè)檢測(cè)等視頻處理領(lǐng)域得到了廣泛的應(yīng)用,對(duì)于不同的視頻處理系統(tǒng),會(huì)使用不同的視頻設(shè)備,所以有必要為視頻沒(méi)備設(shè)計(jì)驅(qū)動(dòng)程序,為高層應(yīng)用程序提供統(tǒng)一的接口來(lái)操作底層硬件。只要是遵循此驅(qū)動(dòng)程序接口標(biāo)準(zhǔn)開(kāi)發(fā)的高層應(yīng)用程序,都可以在具有相同接口的不同硬件平臺(tái)上運(yùn)行,具有很好的通用性和可移植性。同時(shí)高層應(yīng)用程序設(shè)計(jì)人員只要會(huì)使用設(shè)備驅(qū)基于GIO/FVID的DSP視頻驅(qū)動(dòng)程序引言隨著時(shí)代的發(fā)展,DSP技術(shù)在遠(yuǎn)程監(jiān)控
2、、可視電話(huà)、工業(yè)檢測(cè)等視頻處理領(lǐng)域得到了廣泛的應(yīng)用,對(duì)于不同的視頻處理系統(tǒng),會(huì)使用不同的視頻設(shè)備,所以有必要為視頻沒(méi)備設(shè)計(jì)驅(qū)動(dòng)程序,為高層應(yīng)用程序提供統(tǒng)一的接口來(lái)操作底層硬件。只要是遵循此驅(qū)動(dòng)程序接口標(biāo)準(zhǔn)開(kāi)發(fā)的高層應(yīng)用程序,都可以在具有相同接口的不同硬件平臺(tái)上運(yùn)行,具有很好的通用性和可移植性。同時(shí)高層應(yīng)用程序設(shè)計(jì)人員只要會(huì)使用設(shè)備驅(qū)動(dòng)程序提供的API接口,就不必了解底層硬件的具體實(shí)現(xiàn),可以大大提高整個(gè)視頻系統(tǒng)的開(kāi)發(fā)效率。對(duì)于視頻設(shè)備,TI公司也提出了對(duì)應(yīng)的視頻設(shè)備驅(qū)動(dòng)程序模型,但這些模型主要是針對(duì)6000系列高端DSP,甚至是DM64X這樣的視頻處理專(zhuān)用DSP設(shè)計(jì)的。而TMS320F2812(
3、簡(jiǎn)稱(chēng)F2812)DSP這樣的低端處理器,內(nèi)部存儲(chǔ)空間較小,且沒(méi)有DM64X那樣專(zhuān)用的視頻接口。本文針對(duì)這類(lèi)問(wèn)題,提出了對(duì)TI視頻驅(qū)動(dòng)模型進(jìn)行簡(jiǎn)化和改造的方法,使視頻設(shè)備驅(qū)動(dòng)程序占用盡量少的系統(tǒng)資源,來(lái)完成對(duì)視頻硬件設(shè)備的操作。這種視頻驅(qū)動(dòng)模型的裁減方法,對(duì)于使用低端處理器的視頻處理系統(tǒng)具有借可鑒性。1、基于DSPBIOS的外設(shè) 驅(qū)動(dòng)開(kāi)發(fā)模型TI公司為開(kāi)發(fā)DsP的外設(shè)驅(qū)動(dòng)程序,推出了DSPBIOS Device Driver kit,定義了標(biāo)準(zhǔn)的設(shè)備驅(qū)動(dòng)模型,并提供了一系列的API接口。如圖1所示,外設(shè)驅(qū)動(dòng)程序分為兩層:類(lèi)驅(qū)動(dòng)(class driver)。類(lèi)驅(qū)動(dòng)程序用來(lái)為應(yīng)用程序提供接口。這部分
4、程序與設(shè)備無(wú)關(guān),主要功能包括維護(hù)設(shè)備數(shù)據(jù)緩沖區(qū),向上提供API接口供應(yīng)用層程序調(diào)用,并協(xié)調(diào)應(yīng)用程序?qū)ν庠O(shè)操作的同步和阻塞;向下提供適配層與迷你驅(qū)動(dòng)層相連,實(shí)現(xiàn)API接口函數(shù)到迷你驅(qū)動(dòng)層程序的映射。類(lèi)驅(qū)動(dòng)程序與硬件無(wú)關(guān),只要外設(shè)驅(qū)動(dòng)模型選定了,類(lèi)驅(qū)動(dòng)程序就定下來(lái)了,不需要做多少修改。迷你驅(qū)動(dòng)(mini driver)。迷你驅(qū)動(dòng)程序與設(shè)備相關(guān),所以設(shè)計(jì)迷你驅(qū)動(dòng)程序是外設(shè)驅(qū)動(dòng)開(kāi)發(fā)中的重點(diǎn)。迷你驅(qū)動(dòng)程序與類(lèi)驅(qū)動(dòng)層的接口格式是統(tǒng)一的,但迷你驅(qū)動(dòng)程序?qū)Φ讓佑布牟僮魇歉鶕?jù)硬件平臺(tái)的不同而變化的。迷你驅(qū)動(dòng)接收類(lèi)驅(qū)動(dòng)層發(fā)出的IOM_Packet命令包,決定對(duì)底層硬件進(jìn)行什么樣的操作。外設(shè)驅(qū)動(dòng)程序模型又可以分為
5、以下3類(lèi):PIP/PI0模型。基于數(shù)據(jù)管道的IO模型,每個(gè)管道都在維護(hù)自己的一個(gè)緩沖區(qū)。當(dāng)數(shù)據(jù)寫(xiě)入緩沖區(qū),或從緩沖區(qū)取出數(shù)據(jù)時(shí),便會(huì)激發(fā)notifyReader和notifyWriter函數(shù)實(shí)現(xiàn)數(shù)據(jù)的同步。SIODIO模型?;跀?shù)據(jù)流的IO模型,一個(gè)數(shù)據(jù)流是單向的,要么是輸入,要么是輸出,而且SIODIO模瓔使用異步方式來(lái)操作I0,對(duì)于數(shù)據(jù)的讀寫(xiě)、處理可以同時(shí)進(jìn)行。GI0模型。通用的IO模型,靈活性很強(qiáng),且沒(méi)有適配層,直接操作迷你驅(qū)動(dòng)程序,主要用來(lái)設(shè)計(jì)新型的設(shè)備驅(qū)動(dòng)模型。2、視頻處理系統(tǒng)硬件平臺(tái)硬件平臺(tái)如圖2所示。系統(tǒng)以TI公司的F2812 DSP作為中心處理器,以模擬攝像機(jī)進(jìn)行視頻信號(hào)采集,
6、再使用SAA7111視頻解碼芯片將其轉(zhuǎn)換為BT601格式的數(shù)字視頻信號(hào)。DSP將數(shù)字視頻信號(hào)處理后,再寫(xiě)入輸出幀緩存AL422中,并控制視頻編碼芯片ADV7177,將其轉(zhuǎn)換為模擬電視信號(hào)輸出。整個(gè)系統(tǒng)以l片CPLDIspMachLC4128來(lái)協(xié)調(diào)各個(gè)芯片之間的時(shí)序關(guān)系。3、視頻設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)31 設(shè)備驅(qū)動(dòng)程序模型的選擇如上文介紹,常用的驅(qū)動(dòng)程序模型包括3類(lèi):PIO、SIO和GIO。比較這3種模型可以知道:PIO支持更底層的通信,適合設(shè)計(jì)比較簡(jiǎn)單的外設(shè)驅(qū)動(dòng)程序。例如在TI公司的6X11DSK板上實(shí)現(xiàn)的音頻采集和回放,一般都是基于PIO模型的。而SIO模型具有很好的緩沖器分配回收機(jī)制,比較適合描
7、述視頻設(shè)備,但是SIO的很多功能在本系統(tǒng)中使用不到,而且GIO模型設(shè)計(jì)的目的就是針對(duì)特殊硬件的新型設(shè)備,所以最終考慮使用GIO設(shè)備驅(qū)動(dòng)模型。TI公司最初設(shè)計(jì)的GIO模型其實(shí)是有缺陷的,主要在數(shù)據(jù)緩沖區(qū)管理的問(wèn)題上,應(yīng)用程序在取得緩沖區(qū)進(jìn)行數(shù)據(jù)處理之后,卻無(wú)法將緩沖區(qū)返回設(shè)備驅(qū)動(dòng)程序。于是TI公司在推出DM6北這一款主要用于視頻處理的DSP芯片的同時(shí),對(duì)GIO模型進(jìn)行了改進(jìn),提出了專(zhuān)門(mén)針對(duì)視頻設(shè)備的FVID模型。FVID模型是建立在GIO模型之上的,以FVID_alloc、FVID_exchangc、FVID_free函數(shù)對(duì)GIO模型中的GIO_submit函數(shù)進(jìn)行封裝,解決了GIO模型中驅(qū)動(dòng)程
8、序不能回收緩沖區(qū)的問(wèn)題。此外FVID模型還專(zhuān)門(mén)設(shè)計(jì)了FVID_frame結(jié)構(gòu)。此結(jié)構(gòu)中包含了常用的視頻信號(hào)的信息,如行數(shù)、列數(shù)、YUV結(jié)構(gòu)、場(chǎng)頻等,很適合描述視頻數(shù)據(jù)幀。但FVID主要是針對(duì)DM64X系統(tǒng)設(shè)計(jì)的,DM64X的很多功能在F2812 DSP上都不具備。所以本設(shè)計(jì)針對(duì)F2812 DSP視頻處理系統(tǒng),對(duì)FVID模型進(jìn)行了一定的簡(jiǎn)化,保留類(lèi)驅(qū)動(dòng)程序,而重寫(xiě)了迷你驅(qū)動(dòng)層程序。 3.2 視頻處理程序運(yùn)行流程在設(shè)計(jì)完成的視頻驅(qū)動(dòng)程序基礎(chǔ)上,開(kāi)發(fā)一個(gè)典型的視頻處理應(yīng)用程序,其運(yùn)行流程如圖3所示。首先使用FVID_create函數(shù)建立GIO_capture和GIO_play兩個(gè)視頻通道再
9、以GIO_capture通道的FVID_control函數(shù)發(fā)出cmd_start,采集到1幀視頻數(shù)據(jù)。應(yīng)用程序以GIO_capture通道的FVID_alloc函數(shù)向驅(qū)動(dòng)程序申請(qǐng)采集到的數(shù)據(jù)幀,進(jìn)行處理后再以FVID_exchange函數(shù)將修改后的數(shù)據(jù)幀返回驅(qū)動(dòng)程序,最后再調(diào)用GI0_play通道的FVID_control函數(shù)發(fā)出cmd_display命令將數(shù)據(jù)幀輸出。由圖3可以看到,應(yīng)用程序調(diào)用的這些FVID_XXX接口函數(shù)會(huì)自動(dòng)由類(lèi)驅(qū)動(dòng)程序?qū)訉酉蛳掠成?,到達(dá)迷你驅(qū)動(dòng)層程序;而迷你層程序可以直接操縱底層硬件設(shè)備,來(lái)完成整個(gè)視頻的采集、處理和顯示的過(guò)程。3.3 迷你驅(qū)動(dòng)程序的設(shè)計(jì)迷你層驅(qū)動(dòng)程序
10、足整個(gè)設(shè)計(jì)的重點(diǎn)所在,下面詳細(xì)介紹其實(shí)現(xiàn)方法。迷你層驅(qū)動(dòng)程序主要由表1所列的幾個(gè)函數(shù)組成。對(duì)各個(gè)函數(shù)的具體實(shí)現(xiàn)如下:mdBindDev函數(shù)。在應(yīng)用程序建立設(shè)備接口(如FVID_create函數(shù))時(shí)被調(diào)用,完成對(duì)外部設(shè)備的初始化。而與其對(duì)應(yīng)的是md_UBindDev函數(shù),使用nadUBindDev函數(shù)會(huì)使設(shè)備處于無(wú)效狀態(tài),不能再使用。mdCreateChan函數(shù)。使用此函數(shù)為應(yīng)用程序和驅(qū)動(dòng)程序建立通信通道,同時(shí)為每個(gè)通道申請(qǐng)緩沖區(qū)。在TI公司發(fā) 布的FVID模型中,為每個(gè)通道都分配了3個(gè)緩沖區(qū),輪流與外部設(shè)備交換數(shù)據(jù),每個(gè)緩沖區(qū)對(duì)應(yīng)1幀視頻數(shù)據(jù),這樣的設(shè)計(jì)在DM642這樣可以外擴(kuò)大容量SDRAM
11、的系統(tǒng)中是完全可行的。但是對(duì)于本系統(tǒng),F(xiàn)2812DSP外部只擴(kuò)展了512K×16位的SRAM,既要做視頻輸入的幀緩存,義要存放一部分程序,這樣存儲(chǔ)空間就不夠了。所以本設(shè)計(jì)中進(jìn)行了簡(jiǎn)化,對(duì)視頻輸入設(shè)備采用兩緩沖區(qū)輪轉(zhuǎn)的機(jī)制,如圖4(a)所示。而對(duì)于視頻輸出設(shè)備,以AL422 FIFO作為硬件幀緩存,而不在SRAM中再為其分配緩沖區(qū)。與mdCreateChan對(duì)應(yīng)的是md-DeleteChan函數(shù),用于刪除設(shè)備通道,釋放緩沖區(qū)資源。mdSubmitChan函數(shù)。負(fù)責(zé)管理緩沖區(qū)。分別接受應(yīng)用程序發(fā)出的FVID_ALLOC、FVID_EXCHANGE、FVID_FREE三個(gè)命令并進(jìn)行處理。其
12、中FVID_ALLOC命令對(duì)應(yīng)圖4中(a)到(b)的過(guò)程,應(yīng)用程序從兩個(gè)緩沖區(qū)中取出最新的一幀視顴數(shù)據(jù),塒其中的數(shù)據(jù)做處理,而只剩下一個(gè)緩沖區(qū)用來(lái)接受外部設(shè)備輸入的數(shù)據(jù)。FVID_EXCHANGE對(duì)應(yīng)圖4中(b)到(c)的過(guò)程,應(yīng)用程序處理完1幀數(shù)據(jù),將這1幀數(shù)據(jù)返回驅(qū)動(dòng)程序,準(zhǔn)備用來(lái)顯示,同時(shí)再讀入新的l幀數(shù)據(jù)進(jìn)行處理。FVID_FREE對(duì)應(yīng)圖4中(c)到(a)的過(guò)程,應(yīng)用程序?qū)⑻幚硗甑臄?shù)據(jù)幀返回驅(qū)動(dòng)程序,而不再向驅(qū)動(dòng)程序申請(qǐng)新的數(shù)據(jù)幀。以上3個(gè)命令足針對(duì)視頻輸入接口GIO_capture而言的,而對(duì)于輸出設(shè)備接口GIO_play,在SRAM中沒(méi)有分配緩沖區(qū),所以其nldSubmitChan
13、函數(shù)內(nèi)部設(shè)為空函數(shù)。mdControlChan函數(shù)。用來(lái)操作外部視頻設(shè)備,完成對(duì)視頻數(shù)據(jù)的采集和輸出。對(duì)于GIO_capture和GIO_play這兩個(gè)設(shè)備接口的mdControlChan函數(shù)接受的命令是不同的:視頻輸入GIO_capture接口的mdControlCham函數(shù)只接受cmd_start命令,完成1幀視頻數(shù)據(jù)的采集;而視頻輸出GIO_play接口的mdControlChan函數(shù)只接受cmd_display命令完成視頻信號(hào)的輸出。3.4 視頻驅(qū)動(dòng)模型裁剪的一般方法TI公司設(shè)計(jì)的GIOFVID視頻設(shè)備驅(qū)動(dòng)原型相對(duì)復(fù)雜,且占用較多的系統(tǒng)資源,要使其可以應(yīng)用于更通用的低端處理器系統(tǒng),就必
14、須進(jìn)行改造和裁減。在改造中要注意以下幾個(gè)方面:阻塞的I0操作。TI公司6000系列的DSP具有FDMA功能,傳輸數(shù)據(jù)不需要CPU的干預(yù),而DM64X還具有專(zhuān)用的視頻接口,傳輸數(shù)據(jù)不會(huì)占用外部擴(kuò)展總線,所以視頻數(shù)據(jù)的處理和輸入輸出是可以并行的。而低端處理器是不具備這樣功能的,視頻設(shè)備一般都是通過(guò)外部擴(kuò)展總線連接的,所以對(duì)視頻設(shè)備的操作必須設(shè)計(jì)為阻塞型的IO操作,視頻數(shù)據(jù)輸入/輸出的過(guò)程是由CPU來(lái)完成,且要保證對(duì)視頻設(shè)備的操作不會(huì)被其他操作中斷。對(duì)視頻數(shù)據(jù)緩沖區(qū)的管理。GIOFVID視頻設(shè)備驅(qū)動(dòng)原型中使用的3緩沖區(qū)模型,雖然功能很完善,卻占用了太多的存儲(chǔ)空間,所以對(duì)于實(shí)際的視頻處理系統(tǒng)就要進(jìn)行調(diào)整,改為兩緩沖區(qū)甚至是單緩沖區(qū)模型。對(duì)于具有獨(dú)立硬件緩存的輸出設(shè)備,可以考慮不再為其分配動(dòng)態(tài)緩沖區(qū)。對(duì)視頻設(shè)備的操作。mdControlChan函數(shù)主要用來(lái)操作外部視頻設(shè)備,只要保留對(duì)實(shí)際系統(tǒng)有用的操作就足夠了,而GI0FVID視頻設(shè)備驅(qū)動(dòng)原犁中定義的很多操作都可以省略。4、小結(jié)本文介紹了基于DSPBIO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高安市九年級(jí)上學(xué)期語(yǔ)文期中考試卷
- 二年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)集錦
- 脫硫廢水零排放技術(shù)協(xié)議書(shū)(2篇)
- 高中技術(shù)學(xué)業(yè)水平測(cè)試試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《食品標(biāo)準(zhǔn)與法規(guī)》2022-2023學(xué)年第一學(xué)期期末試卷
- 翰林國(guó)際(原曹妃甸科教城共享居住及配套)土地固化施工組織設(shè)計(jì)
- 多種多樣的生態(tài)系統(tǒng)說(shuō)課稿
- gkh說(shuō)課稿第課時(shí)
- 《小數(shù)的性質(zhì)》說(shuō)課稿
- 租地合同范本(2篇)
- 【參考】華為騰訊職位管理0506
- 五年級(jí)英語(yǔ)上冊(cè)Unit1Getupontime!教案陜旅版
- 風(fēng)機(jī)安裝工程質(zhì)量通病及預(yù)防措施
- 三角形鋼管懸挑斜撐腳手架計(jì)算書(shū)
- 文件和文件夾的基本操作教案
- 剪紙教學(xué)課件53489.ppt
- 旅游業(yè)與公共關(guān)系PPT課件
- 勞動(dòng)法講解PPT-定稿..完整版
- 彩色的翅膀_《彩色的翅膀》課堂實(shí)錄
- 假如你愛(ài)我的正譜
- 銅芯聚氯乙烯絕緣聚氯乙烯護(hù)套控制電纜檢測(cè)報(bào)告可修改
評(píng)論
0/150
提交評(píng)論