4 USB固件设计要求
USB固件设计考虑代码容量绝不能超过CY7C68013A代码空间的限制。虽然CY7C68013A的128脚封装可以扩展代码和数据空间,基于成本考虑,要求代码和数据不超过USB芯片内部SRAM的容量限制,这也是制约固件功能不能太复杂的一个关键因素。CY7C68013A支持从EEPROM或主机加载固件两种模式。直接将固件烧入EEPROM,对固件的升级相对比较繁琐,适合固件比较稳定的情况。采用动态加载固件的方法,能够方便地升级固件,是一种推荐的方法。USB固件的主要功能如下:初始化USB芯片状态,包括CPU时钟的设置、USB端点(EP)的设置以及针对实际物理连接的slave FIFO的设置;接收主机的I2C命令,转化为本地设备的操作;接收红外信息传送给主机。
TS流的传输因为设置为自动传输,发送过程中USB芯片中CPU不干预,故在流程图不可见。对遥控器的红外接收数据和I2C设备执行结果统一通过EPlIN采用中断模式上传给主机。
5 上位机控制要求
上位机对数字电视的应用针对不同操作系统已经定义出不同的架构。在常见的微软Windows平台上有TVand Broadcast Driver Architecture(简称BDA架构)。有关BDA详细信息请参考微软官方网站http://www.mi—crosoft.com/whdc/archive/broadcast.mspx;在Linux平台上有Linux Digital Video Broadcast(DVB) subsystem,其维护网站为http://linuxtv.org/。两种架构都对上层应用屏蔽了具体设备的细节,实现这种屏蔽需要编写相应的驱动完成从系统调用到自定义操作的转换过程。虚拟设备的操作直接暴露给操作系统以增强灵活性,而实际的操作转换为基本的I2C操作或红外操作,并经过USB进行包装发送给底层固件,固件剥离出原始数据后对模块执行实际的I2C操作或返回红外设备数据。针对不同操作系统,各自驱动的编写分别为:在Linux上主要为注册dvb_USB_devlceproperties结构中相关的方法;在BDA架构上主要为填充Bda—sup.1ib中要求的属性方法集。对主机的要求主要集中在两个方面:具备能够流畅解码当前数字电视压缩的音视频的能力;操作系统最好支持多线程,以方便解码和播放同步操作。