开放式多媒体应用平台(()pen MuITImedia Appli一caTIons PIatform,OMAP)是针对第三代手机开发的高性能多媒体处理器。除具有性能/功耗比的优势外,还提供丰富的外围接口,支持几乎所有流行的有线和无线接口标准。因其出色表现,该平台一直得到世界主要移动设备制造商(如诺基亚、爱立信、索尼等)的青睐。
0MAP5912采用独特的双核结构,内含1个实现控制功能的带有TI增强型ARM926EJ-S内核的处理器和1个实现数据处理功能的高性能、低功耗TMS320C55x DSP内核。arm处理器可用来实现各种通信协议、控制和人机接口;DSP具有多条数据地址总线,非常适合数据密集的多媒体处理(如视频编解码),并具有极低的功耗[l]。为结合这两个处理器的优势,使其发挥最大效率,双核通信机制起了至关重要的作用。
1. OMAP5912的双核间通信方式
在0MAP5912中实现arm和DSP双核通信方式有共享邮箱寄存器、共享存储空间2种,在实际应用中需要配合使用这些双核通信方式。如双核通信中的握手联络,其数据量小,可用传递消息及时可靠的共享邮箱用来实现;当需要传输大量数据(如图像数据)时,通常要使用高效率的共享存储空间这种通信方式。
2.1共享邮箱寄存器方式
双核间可相互中断并通过邮箱寄存器传递少量数据。共有4套邮箱寄存器,每套邮箱寄存器由2个16 bit寄存器和1个1 bit寄存器组成。当一个处理器将合适的命令字写到命令字寄存器后,该寄存器会产生中断,对另一个处理器的标志寄存器进行正确设置。被中断的处理器通过读标志寄存器响应中断并清空标志寄存器。每套邮箱寄存器中,还有1个附加的数据字寄存器,可在每次中断时在处理器间传送2个字的数据。通过命令和数据字通信的信息完全由用户定义。数据字可用来表示地址指针或状态字。
2.2共享存储器方式
共享存储器有2种方式。第一种方式由ARM通过主机接口(MPU Interface,MPUI)获取对DSP存储空间和I/O空间的访问权,由arm完成数据在双核间的搬移。MPUI为MPU和系统DMA控制器与DSP及其外设的通信提供了桥梁,通过MPuI可访问DSP的整个存储空间及其公共外设总线。
另一种方式是ARM通过对DSP存储管理单元(Memoy Management Unit,MMU)的设置将DSP的外部存储空间映射到OMAP5912系统存储资源中,由DSP完成双核间的数据传输。OMAP5912通过通信控制器(Traffic Controller,TC)实现共享存储器,这样arm和DSP可访问共享的静态随机存储器(StaTIcRAM,SRAM)、高速外部存储器接口(I,Zxteraaal:Mem0ryInterface Fast,EMIFF)以及低速外部存储器接口(Ex-terhal Memory Interface Slow,EMIFS)的存储空间[2]。
3 双核间通信的基础应用程序
为降低上层应用开发者的实现难度和节省设计时间,采用双核间通信的基础应用程序--DSP/BIOSLINK[3],其为上述两种双核通信方式的实现。开发人员在进行上层应用程序开发时,只需使用DSP/BIOSLINK提供的接口函数。DSP/BIOS LINK允许开发人员在ARM端利用一套标准API进入和控制DSP的运行环境;用于非对称的、由一个通用处理器(如arm)和一个或多个DSP组成的处理器环境。图1为DSP/BIOSLINK的软件体系结构图。
DSP/BIOS LINK为开发人员提供的服务有:基本的处理器控制(启动、执行、停止)、基于逻辑通道(CHANNEL)的数据传输、消息(基于MSGQ模块)。由PROC,CHNL,MSGQ3个组件组成。PROC是PROCESSCONTROL的缩写,负责DSP处理器在应用程序用户空间的操作,主要功能有:DSP初始化、DSP端程序的加载、执行和停止。CHNL是CHANNEL的缩写,表示ARM和DSP间数据流的逻辑通道,负责ARM和DSP间的数据传输。CHNL是ARM和DSP之间的逻辑实体,实现二者的物理连接。MSGQ是MESSAGEQUEUE的缩写,负责arm和DSP间长短不一的消息的交互和通信。消息的接收和发送是通过消息队列实现的[4]。
4 基于OMAP5912的数字音频系统买现
笔者以基于OMAP5912_的数字音频系统为例介绍OMAP双核间通信的具体应用。系统在RF6(ReferenceFramework Level 6)框架基础上实现,整个系统将输入的立体声音频信号按照给定的采样率和量化精度转化为左、右两声道数据帧,再对其进行有限脉冲滤波器FIR算法和声音控制VOL算法处理,然后合成立体声输出。整个系统划分为arm端应用程序和DSP端算法2部分。
4.1 RF6框架简介
RF6是专门针对双核芯片OMAP中DSP端软件设计提出的一种参考框架[5],不但包含了外围器件驱动模块、线程模块以及算法封装模块,还包含了用于同arm端进行通信的模块。RF6中数据处理的4种基本元素为:单元、通道、任务和TMS320DSP数字信号处理器标准算法(eXpressDSP Algol-ithm InteropeliabilityStandard,XDAIS)。其中,单元是算法的集合,为外界和算法提供标准接口;通道是单元的集合;任务是按时间顺序执行的一系列通道,其目的是和设备驱动程序及其他任务通信。图2为基于RF6框架的数字音频系统结构图。
4.2 arm端应用程序和DSP端算法
ARM端应用程序主要实现人机交互、系统控制(如传送参数)等功能,由2个线程组成:主线程和数据处理线程。主线程提供用户界面和调用DSIVBIOSLINK中:PROC模块的API函数,引导和加载DsP端可执行文件。数据处理线程将从DsP端任务O传输过来的音频数据帧回送给任务1,其通过调用CHNL模块中的API函数来实现arm和DSP间的数据传输。
DSP端有2个任务:任务0和任务1。任务0将交又存取的音频数据帧分开成左、右2个声道。任务0分别对2个声道进行FIR滤波器处理,滤波器参数(如低通、高通)通过ARM端程序调用MSGQ模块中的API函数来设定。然后任务0将左右声道数据帧重新合成一个音频信号数据帧,通过DSP/BIOS LlNK发送给ARM端。任务1与任务0非常相似,其通过DSP/BIOSLlNK从arm端接收数据,然后对其采用音量控制算法实现声音大小控制。
DSP端程序通过CodeComposer Studio编译后,生成out格式的可执行文件。ARM端程序交叉编译后生成应用程序。运行应用程序,可执行文件以参数形式传递给arm端应用程序。采样率44.1 kHz,量化精度16 bit。经测试,用户可通过在超级终端输入命令实现对FIR和音量的调节,其运行结果如图3所示。
5 结束语
0MAP平台因其特有的双核结构,广泛应用于实时多媒体影音数据处理、语音识别系统、网络通信等领域。笔者以OMAP5912平台的数字音频系统为例介绍双核通信的具体应用,希望能对使用OMAP的人员具有借鉴意义。