基于DSP/BIOS的外設驅動開發模型及DSP視頻驅動程序
③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這樣系統資源比較有限的視頻處理系統,具有很好的可借鑒性。
評論