基于OMAP5910 的双核通信机制及其在MP3 编码中的应用 | |
作者:蒋庆汝,齐美彬,蒋建国 时间:2006-12-13 来源: | |
摘要:基于OMAP5910 的硬件结构特点, 详细阐述了其双核间的通信机制, 并以MP3 编码为例介绍了双核通信的具体应用。 关键词:OMAP5910;双核通信;邮箱;MP3 编码 引言 随着通信技术的发展, 新一代移动通信设备所提供的服务不仅有话音通信, 还包括移动电子商务、语音识别、音频和活动视频流等复杂的业务。因此新的移动通信设备需要具有更强大的信号处理能力和寿命长、体积更小的电池。这对于设备制造商来说, 就需要有一个既高效又节能的系统解决方案。由TI 公司推出的面向3G 无线终端的开放式的多媒体应用平台(OMAP) 是能满足上述需求的一个较好的解决方案。目前, TI 公司的OMAP 芯片中以OMAP5910 最为典型。OMAP5910 器件结合了DSP 与RISC 内核, 可提供无线多媒体设备独一无二的性能与功能优势。ARM RISC 适用于控制代码, 例如用户界面、操作系统及操作系统应用。而DSP 非常适用于在多媒体使用的实时信号处理应用。 OMAP5910 的硬件架构 OMAP 的硬件架构主要由DSP 核、ARM核以及业务控制器(Traffic Controller) 组成。这3 个部分可以独立地进行时钟管理, 有效地控制功耗。OMAP5910 内具有命令与控制能力的增强型ARM925 核和高性能低功耗的TMS320C55X DSP 核, 以及二者的交互机制、存储器管理模块和系统的各种增强外设。TI 增强型ARM925 是ARM RISC 体系结构的典型代表, 工作主频175 MHz, 片内有1.5 MHz 的内部SRAM, 也可接外部存储器, 为液晶显示提供了大量的数据和代码存储空间。它有13 个内部中断和19 个外部中断, 采用两级中断管理。C5510DSP 具有最佳的功耗性能比, 工作主频200 MHz。内部有32 KB 的双存取DRAM, 48 KB 的单存取SRAM 和12 KB 的高速指令缓存。此外,OMAP1510 芯片具有丰富的外围接口, 例如, 液晶控制器、存储器接口、摄像机接口、GPIO 接口等。 OMAP5910 处理器的双核通信机制 在OMAP5910 器件中, MPU 和DSP 间的通信可以由多种通信机制实现, 其中最主要的是邮箱寄存器、MPU 接口以及共享存储器空间这3 种方式。 MPU/DSP 邮箱寄存器 MPU 和DSP 的处理器, 通过一个邮箱中断机制实现相互间的通信。该机制在处理器间提供了一种非常灵活的软件协议。公共TIPB 空间中, 共有4 套邮箱寄存器, 可由两个处理器共享, MPU 和DSP 都可在它们各自的公共TIPB 空间内访问这些寄存器。 4 套邮箱寄存器中2 个用于MPU 发送信息并对DSP 产生中断, 另外2 个用于DSP 发送信息并对MPU产生中断。每套邮箱寄存器由2 个16 bit 寄存器和1个1 bit 的标志寄存器组成。产生中断的处理器可用一个16 bit 的寄存器传输数据字到被中断的处理器, 并对另一个16 bit 寄存器传输一个命令字。两个处理器间的通信是这样实现的: 当一个处理器将合适的命令字写到命令字寄存器后, 该寄存器会产生中断, 对另一个处理器的标志寄存器进行正确设置。被中断的处理器通过读标志寄存器响应中断并清空标志寄存器。每套邮箱寄存器中, 还有一个附加的数据字寄存器, 可以在每次中断时在处理器间传送两个字的数据。通过命令和数据字通信的信息完全由用户定义。数据字可以用来表示地址指针或状态字。 MPU 接口(MPUI) MPU 接口为MPU 和系统DMA 控制器与DSP 及其外设的通信提供了桥梁。通过MPUI 可以访问DSP的整个存储空间( 16 MB) 及DSP 的公共外设总线。因此, MPU 和系统DMA控制器都可以访问整个DSP I/O 空间( 128 KB) , 包括DSP 公共外设的控制寄存器。MPUI 端口支持以下特性 1) 4 种访问模式; ( 2) 访问超时,对MPU 产生中断; ( 3) 编程决定优先级别(MPU 与DMA) ; ( 4) 数据的打包和解包( 12~32 bit, 反之亦然) ; ( 5) 支持32 bit 单访问; ( 6) 软件控制的端模式转换; ( 7) 对整个DSP 存储空间及DSP 公共外设的系统DMA 访问能力。该端口有多种功能, 比如: 把MPU 的程序代码装入到DSP 的程序空间、在MPU 和DSP 间共享数据、通过共享存储器实现处理器间通信协议, 或者允许MPU使用和控制DSP 的公共TIPB 外设。3.3 MPU/DSP 共享存储器OMAP5910 通过一个通信控制器来实现共享存储器结构。这样, MPU 和DSP 就可以访问同一个共享SRAM存储器( 192 KB) 、EMIFF 以及EMIF 存储空间。通过DSP 存储管理单元(MMU) , MPU 可以控制DSP,访问共享存储器空间中的某个区域, 并定义MPU 和DSP 访问这个共享区的协议, 从而实现处理器间的通信机制。这种方法可用来结合邮箱寄存器产生握手中断, 使MPU 和DSP 能以同步方式访问共享存储器。当希望在MPU 和DSP 间传输的数据大小超过每个邮箱命令和数据寄存器所能提供的2 个16 bit 的限度时,以这种方式使用共享存储器是很有效的。 双核通信在MP3 编码中的具体应用 MP3 编码原理及设计 MP3 是目前世界上最流行的音频格式之一, 其采用了MPEG 层Ⅲ标准压缩编码格式, 遵循MP3 标准的音乐具有很高的压缩率和较高的保真度。它基于感知音频编码技术, 结合了MUSICAM( 掩蔽模式通用子带集成编码与多路复用) 算法和ASPEC( 自适应频谱感知熵编码) 算法的优势, 利用人耳的听觉特性, 在保证高品质音响效果的前提下, 可以把原始的音乐数据压缩为原来的, 目标编码速率为64 Kb/s/声道, 适合于网络上音频数据的传输。编解码算法框图如图1 所示。笔者在TI 的OMAP5910 平台上实现MP3 编码,CODEC 芯片采用TI 的TLV320AIC23, OMAP5910 通过I2C 接口与TLV320AIC23 连接, OMAP5910 作为主设备, TLV320AIC23 作为从设备。TLV320AIC23 的控制接口遵从I2C 标准, 可以用来对寄存器进行编程。OMAP5910 有3 个McBSP 端口:McBSP1 和McBSP3为DSP 的外设, McBSP2 为ARM 的外设。这里使用OMAP5910 的McBSP1 驱动总线的比特时钟(McBSP1.CLK) 和帧同步信号(McBSP1.FSK) , 控制DSP 与TLV320AIC23 之间的数据通信。 由于MP3 编码算法复杂度高、运算量大, 可利用OMAP 中信号处理能力强的DSP 部分来实现。同时,OMAP 的DSP 由ARM 来引导, DSP 的外设时钟由ARM 启动, audio 芯片由ARM 设置, DSP 的代码由ARM装载。另外, 除了DSP 内部存储器, DSP 要访问其它存储器空间, ARM需要设置DSP 的MMU, 所以DSP的MP3 编码程序必须要有ARM端程序来配合。这里ARM和DSP 之间的通信主要用到了共享存储器及邮箱寄存器方式。 双核通信方式的实现 DSP 的音频编码程序需要使用OMAP1510 板SDRAM。这些内存需要通过ARM设置DSP MMU 映射到DSP 的内存空间中去。DSP 的音频编码程序共使用两个SDRAM内存块, 分别是用于DSP BOOT 的内存和DSP 工作内存。 应用程序使用DSP 编码程序时, 必须采用EMIF16 BOOTLOAD 的DSP BOOT 模式(DSP BOOT模式3) 。在BOOT DSP 前, 需要将DSP 的BOOTTABLE 存放到SDRAM的某个内存空间中, 其物理地址( 注意: 不是虚拟地址) 的首地址dsp_boot_base 必须16 bit 对齐( 即低16 位为“0”) , 大小为128 KB。设置DSP MMU, 将其首地址dsp_boot_base 映射到DSP 地址空间中的0x080000(BYTE 地址) , 将dsp_boot_base+0x00010000 映射到DSP 地址空间的0x090000(BYTE地址) 。 由于DSP 的片内内存有限, DSP 的编码程序需要使用一定数量的外部内存; 同时, 为了方便DSP 和ARM交换数据, 需要设置DSP MMU 使得DSP 可以访问OMAP 板上的SDRAM。DSP 的工作内存共1 MB。在BOOT DSP 前, 设置DSP MMU, 将首地址( 物理地址)为dsp_work_base 的1 MB 内存映射到DSP 地址空间的0x400000(BYTE 地址) 。DSP 工作内存的详细使用情况如表1 所示。 这些数据段的详细描述如下: (1)DSP 私用数据— —这128KB 供DSP 编码使用,ARM禁止访问这块内存。 ( 2) 音频缓冲区标志— —这8 KB 的前8 个32 bitWORD 分别标志ARM是否已从音频缓冲区中对应的8 个2 KB 段中取走已编码的数据。ARM将第n 个音频缓冲区的编码数据读走后, 需要将音频缓冲区标志的第n 个WORD 清“0”。 ( 3) 音频缓冲区— —这块内存分为8 块, 每块2KB。DSP 会将编码后的每帧音频数据依次、循环地写入每块中。ARM端需要及时将这些数据读走, 并将音频缓冲区标志中的相应WORD 清零。(DSP 在写一块音频数据帧之前会检查音频缓冲区标志中的对应WORD 是否为“0”, 在写入一块音频数据帧后会将其置“1”) 。 ( 4) 保留—— 这段内存为以后应用保留。 ( 5)DSP 代码空间—— 这127.5 KB 内存用于存放DSP 的部分代码, ARM禁止访问。Mailbox 是OMAP1510 中ARM 和DSP 通信的主要方式之一。每个Mailbox 可以传递2 个16 bit 字— —命令号和数据。在音频编码程序中, 命令号指定对方处理器进行何种操作, 其中的数据表示操作的参数( 如果有的话) 。ARM端的应用程序通过Mailbox 和DSP 端的编码程序进行通信, 以达到协调工作的目的。表2 和表3 分别描述了ARM发给DSP 及DSP 发给ARM的Mailbox 中各命令号所代表的含义。 ARM 程序 总的说来ARM端应用程序要完成I2C 驱动程序, 为DSP 分配引导和工作内存, DSP MMU 的设置, 以及与DSP 之间的Mailbox 中断服务。具体按下列操作进行, 程序流程图如图2 所示。 ( 1) 获取128 KB 的内存空间, 作为DSP BOOT 内存, 并将DSP BOOT TABLE 拷贝到这个内存空间。 ( 2) 获取1 MB 的内存空间, 作为DSP 工作内存。 ( 3) 设置DSP MMU, 将DSP BOOT 内存映射到DSP 内存空间0x080000(BYTE 地址) ; 将DSP 工作内存映射到DSP 内存空间0x400000(BYTE 地址) 。 ( 4)BOOT DSP 并等待DSP 发过来的Mailbox。 ( 5) 收到DSP 的第一个Mailbox 后, 运行ARM端的编码程序, 在需要DSP 启动编码时, 向DSP 发送命令号为0x0F60 的Mailbox, 如果同时进行音频编码, 需要在这个Mailbox 的数据中设置音频编码参数。同时,将读音频码流的指针指向DSP 工作内存中音频缓冲区的第一个2 KB 块。 ( 6) 在应用程序运行过程中, 如果收到DSP 发来的命令号为0xF001 的Mailbox, 则: ( 1) 从Mailbox 的数据寄存器中读取数据长度length; ( 2) 从读音频码流的指针处读取长度为length 的字节; ( 3) 将相应的音频缓冲区标志清“0”; ( 4) 将读音频码流的指针指向音频缓冲区的下一个2 KB 块。 ( 7) 在应用程序运行过程中, 如果收到DSP 发来的命令号为0x0F40 的Mailbox, 则结束程序。 ( 8) 当应用程序结束编码时, 向DSP 发送一个命令号为0x0F70 的Mailbox, 要求DSP 结束编码。由此可以看出, 要想让ARM核和DSP 核协调工作并达到高效运行, 就必须把任务合理地分配给两个处理器, 双核通信在其中所起的巨大作用显而易见。可以将繁重的数据处理任务交给DSP 来完成, 而ARM处理器只需执行有限的命令来控制, 这样就可以保持最小的处理开销, 大大降低了功率。 结束语 OMAP 平台因其独有的双核结构和为无线应用提供了一个强大的软硬件基础, 它将广泛应用于实时的多媒体影音数据处理、语音识别系统、网络通信、无线通信与电子商务等领域。目前已经有许多世界性的大厂宣布将以OMAP 作为新一代无线通信的新信息家电产品核心, 如Nokia, SONY, Handsprin 等。笔者以OMAP 家族中最具代表性的OMAP5910 为例, 详细分析了其双核间的通信机制, 并给出了双核通信在MP3编码中的具体应用方式, 希望能对使用OMAP 或准备使用的人员具有借鉴意义。 |
标签: OMAP5910;双核通信;邮箱;MP3编码 |
文章评论(0条评论)
登录后参与讨论