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