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

DSP/BIOS會在內部維護一個“設備表”,其中包含User-Defined Devices對象進行配置的設備實例。
2.3.2 編寫類驅動代碼
主站蜘蛛池模板:
鄂伦春自治旗|
东丽区|
铁岭县|
伊金霍洛旗|
慈溪市|
苏尼特右旗|
定结县|
密山市|
西林县|
买车|
锦州市|
繁昌县|
巴东县|
临武县|
灵宝市|
南召县|
绍兴市|
林西县|
偏关县|
晋州市|
铜川市|
罗甸县|
枣阳市|
辽阳县|
九龙县|
栖霞市|
酉阳|
安阳市|
景谷|
沾化县|
岚皋县|
海阳市|
吉木萨尔县|
涪陵区|
乌兰浩特市|
蕲春县|
赤水市|
大荔县|
天峻县|
白水县|
彝良县|
評論