基于CY7C68013A和 LGS一8GL5的USB電視棒設(shè)計
4 USB固件設(shè)計要求
USB固件設(shè)計考慮代碼容量絕不能超過CY7C68013A代碼空間的限制。雖然CY7C68013A的128腳封裝可以擴(kuò)展代碼和數(shù)據(jù)空間,基于成本考慮,要求代碼和數(shù)據(jù)不超過USB芯片內(nèi)部SRAM的容量限制,這也是制約固件功能不能太復(fù)雜的一個關(guān)鍵因素。CY7C68013A支持從EEPROM或主機(jī)加載固件兩種模式。直接將固件燒入EEPROM,對固件的升級相對比較繁瑣,適合固件比較穩(wěn)定的情況。采用動態(tài)加載固件的方法,能夠方便地升級固件,是一種推薦的方法。USB固件的主要功能如下:初始化USB芯片狀態(tài),包括CPU時鐘的設(shè)置、USB端點(EP)的設(shè)置以及針對實際物理連接的slave FIFO的設(shè)置;接收主機(jī)的I2C命令,轉(zhuǎn)化為本地設(shè)備的操作;接收紅外信息傳送給主機(jī)。
TS流的傳輸因為設(shè)置為自動傳輸,發(fā)送過程中USB芯片中CPU不干預(yù),故在流程圖不可見。對遙控器的紅外接收數(shù)據(jù)和I2C設(shè)備執(zhí)行結(jié)果統(tǒng)一通過EPlIN采用中斷模式上傳給主機(jī)。
5 上位機(jī)控制要求
上位機(jī)對數(shù)字電視的應(yīng)用針對不同操作系統(tǒng)已經(jīng)定義出不同的架構(gòu)。在常見的微軟Windows平臺上有TVand Broadcast Driver Architecture(簡稱BDA架構(gòu))。有關(guān)BDA詳細(xì)信息請參考微軟官方網(wǎng)站http://www.mi―crosoft.com/whdc/archive/broadcast.mspx;在Linux平臺上有Linux Digital Video Broadcast(DVB) subsystem,其維護(hù)網(wǎng)站為http://linuxtv.org/。兩種架構(gòu)都對上層應(yīng)用屏蔽了具體設(shè)備的細(xì)節(jié),實現(xiàn)這種屏蔽需要編寫相應(yīng)的驅(qū)動完成從系統(tǒng)調(diào)用到自定義操作的轉(zhuǎn)換過程。虛擬設(shè)備的操作直接暴露給操作系統(tǒng)以增強(qiáng)靈活性,而實際的操作轉(zhuǎn)換為基本的I2C操作或紅外操作,并經(jīng)過USB進(jìn)行包裝發(fā)送給底層固件,固件剝離出原始數(shù)據(jù)后對模塊執(zhí)行實際的I2C操作或返回紅外設(shè)備數(shù)據(jù)。針對不同操作系統(tǒng),各自驅(qū)動的編寫分別為:在Linux上主要為注冊dvb_USB_devlceproperties結(jié)構(gòu)中相關(guān)的方法;在BDA架構(gòu)上主要為填充Bda―sup.1ib中要求的屬性方法集。對主機(jī)的要求主要集中在兩個方面:具備能夠流暢解碼當(dāng)前數(shù)字電視壓縮的音視頻的能力;操作系統(tǒng)最好支持多線程,以方便解碼和播放同步操作。
評論