www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]本文介紹了基于DSP/BIOS的外設驅(qū)動程序模型,并針對基于F2812 DSP的視頻處理系統(tǒng)這一具體的硬件平臺,重點介紹了開發(fā)GIO/FVID設備驅(qū)動的流程和針對低端處理器系統(tǒng)的視頻驅(qū)動模型裁減方法。

引言

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

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

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

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

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

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

    外設驅(qū)動程序模型又可以分為以下3類[2]

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

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

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

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

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

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

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


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

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

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

3.2 視頻處理程序運行流程

    在設計完成的視頻驅(qū)動程序基礎上,開發(fā)一個典型的視頻處理應用程序,其運行流程如圖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)用GIO_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)如下:

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

    2)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)2812 DSP外部只擴展了512K×16位的SRAM,既要做視頻輸入的幀緩存,又要存放一部分程序,這樣存儲空間就不夠了,所以本設計中進行了簡化,對視頻輸入設備采用兩緩沖區(qū)輪轉(zhuǎn)的機制,如圖4(a)所示,而對于視頻輸出設備,以AL422 FIFO作為硬件幀緩存,而不在SRAM中再為其分配緩沖區(qū),與mdCreateChan對應的是mdDeleteChan函數(shù),用于刪除設備通道,釋放緩沖區(qū)資源。

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

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

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

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


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

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

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

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

4 小結(jié)

    本文介紹了基于DSP/BIOS的外設驅(qū)動程序模型,并針對基于F2812 DSP的視頻處理系統(tǒng)這一具體的硬件平臺,重點介紹了開發(fā)GIO/FVID設備驅(qū)動的流程和針對低端處理器系統(tǒng)的視頻驅(qū)動模型裁減方法,本視頻驅(qū)動程序為開發(fā)各種視頻處理應用程序(如JPEG圖像)壓縮、MPEG視頻壓縮、視頻監(jiān)控程序等)提供了有力的支持,本文介紹的設備驅(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)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉