基于VW2005的MPEG-4音视频压缩卡设计2
图2 系统驱动程序软件结构
主机与VW2005的通信
VW2005内部的编码存储器(encoder SDRAM)中有两个双端口、128字节的共享存储区,作为主机与VW2005的通信媒介。用于主机到VW2005通信的128字节的共享存储区(以下简称host_VW_SM)位于encoder SDRAM中地址0x3F1800处。Host_VW_SM格式如表1所示。
表1 主机到VW2005的共享存储区格式
VW2005在Firmware ReadyCode中写入0x0A00,表示准备接收命令;CMD为命令码,分别是读数据(CMD=1)、发IOCTL码(CMD=2)、写数据(CMD=3)、打开命令(CMD=4)和关闭命令(CMD=5);Int Flag为中断标识,Int Flag=1则VW2005执行完命令后产生一个中断,Int Flag=0则不产生中断;Device Handle由打开命令从固件中获得;Paremeters为附加参数。
用于VW2005到主机通信的128字节的共享存储区(以下简称VW_host_SM)位于encoder SDRAM中地址0x3F1880处。VW_host_SM格式如表2所示。
表2 VW2005到主机的共享存储区格式
ACK/NACK的含义是:如果Int Flag=1,命令CMD执行成功后则为ACK,失败则为NACK,并将错误代码保存在Return Code字段。Return Code的含义是:无错误产生则为0,有错误产生则为错误代码。其它参数与host_VW_SM类似,不再赘述。
信号灯
由于共享存储区是临界资源,所以必须提供一种机制,用以保证主机和VW2005使用它们时是互斥的。为此,VW2005分别给host_VW_SM和VW_host_SM提供了两个硬件信号灯,分别由寄存器REG_INT1和REG_INT2的最低位实现。驱动程序通过REG_INT1检查固件是否为来自主机的下一个命令作好准备,通过REG_INT2告知固件主机已处理完成前一个命令。
VW2005为信号灯定义了两种操作:
写操作:向REG_INT1或REG_INT2的最低位写入1,释放共享存储区。
读操作:返回REG_INT1或REG_INT2的最低位的值,同时将该位清零。
压缩卡程序流程图
压缩结果是传输流时的程序流程如图3所示。主机只需在编码开始前对压缩卡进行初始化操作,之后的编码压缩完全由VW2005芯片独立完成,这样大大降低了压缩卡对主机CPU的要求。
图3 压缩卡程序流程图
结语
评论