基于VW2005的MPEG-4音視頻壓縮卡設(shè)計2
圖2 系統(tǒng)驅(qū)動程序軟件結(jié)構(gòu)
主機與VW2005的通信
VW2005內(nèi)部的編碼存儲器(encoder SDRAM)中有兩個雙端口、128字節(jié)的共享存儲區(qū),作為主機與VW2005的通信媒介。用于主機到VW2005通信的128字節(jié)的共享存儲區(qū)(以下簡稱host_VW_SM)位于encoder SDRAM中地址0x3F1800處。Host_VW_SM格式如表1所示。
表1 主機到VW2005的共享存儲區(qū)格式
VW2005在Firmware ReadyCode中寫入0x0A00,表示準(zhǔn)備接收命令;CMD為命令碼,分別是讀數(shù)據(jù)(CMD=1)、發(fā)IOCTL碼(CMD=2)、寫數(shù)據(jù)(CMD=3)、打開命令(CMD=4)和關(guān)閉命令(CMD=5);Int Flag為中斷標(biāo)識,Int Flag=1則VW2005執(zhí)行完命令后產(chǎn)生一個中斷,Int Flag=0則不產(chǎn)生中斷;Device Handle由打開命令從固件中獲得;Paremeters為附加參數(shù)。
用于VW2005到主機通信的128字節(jié)的共享存儲區(qū)(以下簡稱VW_host_SM)位于encoder SDRAM中地址0x3F1880處。VW_host_SM格式如表2所示。
表2 VW2005到主機的共享存儲區(qū)格式
ACK/NACK的含義是:如果Int Flag=1,命令CMD執(zhí)行成功后則為ACK,失敗則為NACK,并將錯誤代碼保存在Return Code字段。Return Code的含義是:無錯誤產(chǎn)生則為0,有錯誤產(chǎn)生則為錯誤代碼。其它參數(shù)與host_VW_SM類似,不再贅述。
信號燈
由于共享存儲區(qū)是臨界資源,所以必須提供一種機制,用以保證主機和VW2005使用它們時是互斥的。為此,VW2005分別給host_VW_SM和VW_host_SM提供了兩個硬件信號燈,分別由寄存器REG_INT1和REG_INT2的最低位實現(xiàn)。驅(qū)動程序通過REG_INT1檢查固件是否為來自主機的下一個命令作好準(zhǔn)備,通過REG_INT2告知固件主機已處理完成前一個命令。
VW2005為信號燈定義了兩種操作:
寫操作:向REG_INT1或REG_INT2的最低位寫入1,釋放共享存儲區(qū)。
讀操作:返回REG_INT1或REG_INT2的最低位的值,同時將該位清零。
壓縮卡程序流程圖
壓縮結(jié)果是傳輸流時的程序流程如圖3所示。主機只需在編碼開始前對壓縮卡進(jìn)行初始化操作,之后的編碼壓縮完全由VW2005芯片獨立完成,這樣大大降低了壓縮卡對主機CPU的要求。
圖3 壓縮卡程序流程圖
結(jié)語
評論