《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于GIO/FVID的F2812DSP的視頻處理系統
基于GIO/FVID的F2812DSP的視頻處理系統
Icbuy
Icbuy
摘要:  隨著時代的發展,DSP技術在遠程監控、可視電話、工業檢測等視頻處理領域得到了廣泛的應用,對于不同的視頻處理系統,會使用不同的視頻設備,所以有必要為視頻沒備設計驅動程序,為高層應用程序提供統一的接口來操作底層硬件。只要是遵循此驅動程序接口標準開發的高層應用程序,都可以在具有相同接口的不同硬件平臺上運行,具有很好的通用性和可移植性。同時高層應用程序設計人員只要會使用設備驅動程序提供的API接口,就不必了解底層硬件的具體實現,可以大大提高整個視頻系統的開發效率。
Abstract:
Key words :
  隨著時代的發展,DSP技術在視頻處理系統、可視電話、工業檢測等視頻處理領域得到了廣泛的應用,對于不同的視頻處理系統,會使用不同的視頻設備,所以有必要為視頻沒備設計驅動程序,為高層應用程序提供統一的接口來操作底層硬件。只要是遵循此驅動程序接口標準開發的高層應用程序,都可以在具有相同接口的不同硬件平臺上運行,具有很好的通用性和可移植性。同時高層應用程序設計人員只要會使用設備驅動程序提供的API接口,就不必了解底層硬件的具體實現,可以大大提高整個視頻系統的開發效率。

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

  1、基于DSP/BIOS的外設 驅動開發模型

  TI公司為開發DsP的外設驅動程序,推出了DSP/BIOS Device Driver kit,定義了標準的設備驅動模型,并提供了一系列的API接口。如圖1所示,外設驅動程序分為兩層:

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

  ②迷你驅動(mini driver)。迷你驅動程序與設備相關,所以設計迷你驅動程序是外設驅動開發中的重點。迷你驅動程序與類驅動層的接口格式是統一的,但迷你驅動程序對底層硬件的操作是根據硬件平臺的不同而變化的。迷你驅動接收類驅動層發出的IOM_Packet命令包,決定對底層硬件進行什么樣的操作。

  外設驅動程序模型又可以分為以下3類:

  ①PIP/PI0模型。基于數據管道的I/O模型,每個管道都在維護自己的一個緩沖區。當數據寫入緩沖區,或從緩沖區取出數據時,便會激發notifyReader和notifyWriter函數實現數據的同步。

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

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

  2、視頻處理系統硬件平臺

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

  3、視頻設備驅動程序開發

  3.1 設備驅動程序模型的選擇

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

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

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

  3.2 視頻處理程序運行流程

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

  3.3 迷你驅動程序的設計

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

  對各個函數的具體實現如下:

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

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

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

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

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

  3.4 視頻驅動模型裁剪的一般方法

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

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

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

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

  4、小結

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区久久精品| 午夜电影亚洲| 国产婷婷成人久久av免费高清 | 欧美日韩亚洲高清一区二区| 卡通动漫国产精品| 久久久久久久久蜜桃| 欧美一区在线视频| 午夜在线不卡| 午夜一区在线| 欧美影视一区| 久久精品夜色噜噜亚洲a∨| 午夜宅男欧美| 性色av一区二区三区| 亚洲区一区二区三区| 亚洲日本成人在线观看| 亚洲三级影院| 日韩视频中文字幕| 亚洲精品视频在线| 亚洲三级性片| 9久re热视频在线精品| 一区二区三区精品视频| 一本色道久久综合亚洲精品不卡| 日韩视频免费在线| 一区二区三区四区精品| 亚洲精品系列| 9色精品在线| 一本一本久久a久久精品综合妖精| 一区二区三区精密机械公司| 亚洲欧美另类在线观看| 欧美影院成年免费版| 亚洲高清成人| 亚洲伦理久久| 亚洲自拍三区| 久久久久91| 欧美福利小视频| 欧美日韩影院| 国产欧美日韩精品丝袜高跟鞋| 国内精品久久久久久久果冻传媒| 伊人成人在线视频| 亚洲精品影院| 亚洲一区免费| 亚洲国产精品久久人人爱蜜臀 | 久久久综合精品| 欧美国产极速在线| 欧美视频网站| 韩国三级在线一区| 亚洲美女中文字幕| 午夜精品福利一区二区三区av| 亚洲国产欧美一区二区三区丁香婷| 日韩视频三区| 欧美一区日韩一区| 免费在线亚洲欧美| 欧美午夜精品久久久久久孕妇| 国产麻豆9l精品三级站| 在线观看欧美日韩国产| 一本一道久久综合狠狠老精东影业 | 在线一区二区日韩| 欧美在线不卡| 在线亚洲自拍| 久久精品欧美日韩精品| 欧美日韩成人在线| 国产日韩视频一区二区三区| 亚洲国产一区二区三区青草影视| 中文网丁香综合网| 久久国产天堂福利天堂| 一区二区高清在线| 久久久精品国产一区二区三区| 欧美日韩国产精品专区 | 日韩一级黄色av| 欧美一区二区观看视频| 在线午夜精品自拍| 欧美中文在线视频| 欧美日韩国产一区| 一区二区在线观看视频在线观看 | 亚洲免费视频成人| 男女视频一区二区| 国产精品私拍pans大尺度在线 | 日韩亚洲精品电影| 久久精品99无色码中文字幕| 亚洲午夜黄色| 欧美成人免费va影院高清| 国产美女一区二区| 亚洲毛片视频| 91久久久久久久久| 欧美在线资源| 国产精品久久999| 亚洲欧洲一区二区三区在线观看| 西西裸体人体做爰大胆久久久| 在线午夜精品自拍| 欧美成人高清视频| 国产亚洲免费的视频看| 在线亚洲电影| 亚洲日韩成人| 久久一综合视频| 国产日产精品一区二区三区四区的观看方式 | 国产亚洲综合精品| 亚洲一区二区视频在线观看| 日韩一区二区高清| 免费在线成人| 激情丁香综合| 欧美一级淫片播放口| 亚洲欧美中文字幕| 欧美性淫爽ww久久久久无| 亚洲区在线播放| 亚洲精品午夜| 欧美夫妇交换俱乐部在线观看| 娇妻被交换粗又大又硬视频欧美| 午夜视频在线观看一区二区三区| 亚洲欧美电影在线观看| 欧美日韩一区高清| 亚洲剧情一区二区| 日韩一级黄色大片| 欧美激情精品久久久久| 1204国产成人精品视频| 久久狠狠亚洲综合| 久久频这里精品99香蕉| 国产亚洲精品7777| 欧美亚洲一区| 久久er99精品| 国产女主播视频一区二区| 亚洲天堂av综合网| 亚洲欧美大片| 国产伦精品一区二区三区高清版 | 99热免费精品在线观看| 欧美国产日本在线| 91久久黄色| av成人动漫| 欧美三级午夜理伦三级中视频| 亚洲美女黄色| 亚洲色图自拍| 国产精品sm| 亚洲一区二区三区在线| 欧美一区免费| 狠狠色综合日日| 亚洲黄色影院| 欧美国产日本高清在线| 亚洲美洲欧洲综合国产一区| 亚洲视频在线免费观看| 欧美三级网址| 亚洲欧美日韩国产综合精品二区| 欧美一区二区三区免费观看视频 | 久久久水蜜桃av免费网站| 国产亚洲欧美日韩一区二区| 亚洲第一色在线| 欧美 日韩 国产精品免费观看| 亚洲国产岛国毛片在线| 亚洲毛片av| 欧美日韩成人精品| 亚洲午夜久久久久久尤物| 欧美亚洲视频一区二区| 国产亚洲一区二区三区| 亚洲承认在线| 欧美美女bb生活片| 亚洲一级黄色| 久久免费高清| 亚洲欧洲精品成人久久奇米网| 一区二区精品在线观看| 国产精品超碰97尤物18| 欧美亚洲专区| 欧美二区乱c少妇| 一区二区三区日韩精品| 午夜欧美大片免费观看 | 中日韩午夜理伦电影免费| 亚洲一区成人| 国产亚洲精品激情久久| 亚洲黄色片网站| 国产精品对白刺激久久久| 欧美在线观看你懂的| 欧美激情久久久久久| 亚洲视频一区在线| 久久久久久亚洲精品不卡4k岛国| 亚洲高清免费| 亚洲欧美卡通另类91av| 一区免费观看| 亚洲一级黄色av| 合欧美一区二区三区| 一本大道av伊人久久综合| 国产九九精品视频| 亚洲看片网站| 国产欧美日韩在线播放| 最新国产乱人伦偷精品免费网站 | 亚洲一区欧美二区| 狠狠色丁香婷婷综合影院| 在线一区二区三区四区| 国产一区二区三区免费不卡| 99精品国产热久久91蜜凸| 国产精品影片在线观看| 亚洲六月丁香色婷婷综合久久| 国产欧美日韩在线视频| 日韩一级欧洲| 国产最新精品精品你懂的| 一区二区电影免费观看| 欧美日本三区| 久久精品国产久精国产一老狼| 欧美天天在线| 亚洲成色精品| 国产毛片久久| 一区二区三区日韩在线观看 | 亚洲午夜极品| 欧美极品在线播放|