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