<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          基于DSP/BIoS設(shè)備驅(qū)動模型的視頻驅(qū)動程序開發(fā)

          作者: 時間:2009-05-06 來源:網(wǎng)絡(luò) 收藏
          微型主要通過一些函數(shù)來完成對外部設(shè)備的直接控制。只要微型創(chuàng)建了規(guī)定的函數(shù),應(yīng)用程序就可以方便地通過DIO適配模塊、PIo適配模塊或(和)GIO類調(diào)用。
          例如:GIO_create被調(diào)用時,會運(yùn)行mdCreate-Chan來創(chuàng)建一個通道。
          這些微型驅(qū)動函數(shù)包括:mdBindDev/mdUBind-Dev(綁定/刪除通道函數(shù)):在程序建立接口時調(diào)用,完成設(shè)備的初始化硬件設(shè)備/在程序結(jié)束時調(diào)用,卸載設(shè)備。mdCreateChan/mdDeleteChan(創(chuàng)建/刪除通道):需要在應(yīng)用程序與設(shè)備實(shí)例之間創(chuàng)建一個邏輯通信通道,用于交換驅(qū)動數(shù)據(jù)。應(yīng)用程序可創(chuàng)建一個或多個邏輯通道,微型驅(qū)動用通道對象來代表這些通道。這兩個函數(shù)就是用來分配和釋放通道對象。mdSubmitChan(遞交I/O請求):該函數(shù)處理傳遞給它的IOM_Pack-et結(jié)構(gòu)體中的命令代碼(cmd),根據(jù)命令代碼,完成相應(yīng)的處理或返回錯誤代碼。ISR(服務(wù)設(shè)備中斷并完成I/O操作):IOM微型驅(qū)動在中斷的ISR中將以處理完的IOM_Packet請求出隊,啟動下一次傳輸或服務(wù)請求,調(diào)用類驅(qū)動的回調(diào)函數(shù)與應(yīng)用程序進(jìn)行同步,并返回出隊的IOM_Packet。mdControlChan(控制設(shè)備):用來操作外部設(shè)備。
          這些微型驅(qū)動的函數(shù)入口放在接口表(IOM_Fxns)中,供適配模塊或GIO類驅(qū)動調(diào)用。
          2 驅(qū)動
          下面以TMS320DM842芯片為例,介紹有關(guān)采集與顯示的驅(qū)動程序的開發(fā)。通過編寫驅(qū)動程序,完成信號的實(shí)時采集與顯示功能。是TI公司推出的一款專門用于視頻/圖像處理的定點(diǎn)數(shù)字信號處理器,它C64x內(nèi)核,帶有3個可配置的視頻端口,與視頻采集芯片直接相連,無需外加邏輯電路或FIFO緩存,只需編寫相關(guān)解編碼芯片的驅(qū)動程序,就可以完成視頻信號的采集與顯示。在這里使用的解碼、編碼芯片分別為PHILIPS SAA7115和SAA7105。
          2.1 視頻類驅(qū)動
          在視頻驅(qū)動程序結(jié)構(gòu)中,為了最大程度地提高視頻驅(qū)動代碼的復(fù)用性和通用性,將類驅(qū)動又劃分為兩層結(jié)構(gòu),其中上層為FVID,它是在/BIOS GIO類驅(qū)動之上的簡單封裝,下層是GIO類驅(qū)動程序。GIO類驅(qū)動提供獨(dú)立的、一般的API函數(shù)集并且為微型驅(qū)動提供廣泛的服務(wù),而上層的FVID向上層的視頻采集、顯示結(jié)構(gòu)提供定制的API函數(shù)。
          在視頻驅(qū)動中,主要是通過調(diào)用FVID模塊函數(shù)來完成類驅(qū)動代碼的編寫工作。FVID主要有以下幾個API函數(shù):FVID_create:分配并初始化通道對象;FVID_control:向微型驅(qū)動發(fā)送控制命令;FVID_al-loc:向應(yīng)用程序分配視頻端口緩沖區(qū);FVID_ex-change:交換緩沖區(qū);FVID_free:釋放緩沖區(qū);FVID_delete:刪除通道對象。
          在配備視頻接口的時,至少指定它要開設(shè)3個以上的視頻緩沖區(qū)(FVID中,默認(rèn)分配3個緩沖區(qū)),幀緩沖區(qū)通過FVID_alloc(),F(xiàn)VID_free(),F(xiàn)VID_exchange()三個函數(shù)在應(yīng)用程序與驅(qū)動之間交換。
          2.2 視頻微型驅(qū)動
          視頻微型驅(qū)動也分為兩層結(jié)構(gòu),上層為通用視頻端口層部分,下層為指定編解碼芯片微驅(qū)動層部分,它們通過外部設(shè)備控制接口(External Device Control,EDC)實(shí)現(xiàn)對外圍芯片的操作。這種微驅(qū)動結(jié)構(gòu)的好處是,當(dāng)使用不同的芯片時,只需修改指定編解碼芯片微驅(qū)動那一部分,不需將整個微驅(qū)動重新編寫,使得驅(qū)動的復(fù)用性大大增強(qiáng)。
          視頻驅(qū)動程序模型如圖3所示。
          2.3 TMS320DM642視頻驅(qū)動設(shè)計步驟
          2.3.1 注冊微型驅(qū)動
          由于應(yīng)用程序、類驅(qū)動最終都是要通過微型驅(qū)動的函數(shù)來完成對外部設(shè)備的直接控制,所以驅(qū)動程序設(shè)計的第一步就是要在/BIOS Config中的Input/Output->Device Drivers->Uger-Defined Devices項目添加設(shè)備并注冊微驅(qū)動,進(jìn)行屬性的設(shè)置,并指明IOM_Fxns函數(shù)表地址和設(shè)備參數(shù)地址,如圖4所示。
          /BIOS會在內(nèi)部維護(hù)一個“設(shè)備表”,其中包含User-Defined Devices對象進(jìn)行配置的設(shè)備實(shí)例。
          2.3.2 編寫類驅(qū)動代碼
          FVID函數(shù)會在設(shè)備表中查找已注冊的微驅(qū)動,并調(diào)用微驅(qū)動函數(shù)完成對外部設(shè)備的操作控制。

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();