新闻中心

EEPW首页 > 消费电子 > 设计应用 > Linux下Cold Fire 片内SRAM的应用程序优化设计

Linux下Cold Fire 片内SRAM的应用程序优化设计

作者:时间:2009-12-14来源:网络收藏


本文以MP3解码器为例,介绍了一种在嵌入式系统下配置使用处理器的应用方案,有效提高了代码的解码效率,降低了执行功耗。该方案不论在性能还是成本上都得到了很大改善。

本文引用地址:http://www.eepw.com.cn/article/166834.htm


1 硬件平台和软件架构
硬件平台采用Freescale公司的MCF5329EVB开发板。终端硬件包括5329处理器、32 KB的、1 800×600矩阵LCD显示屏、9×3阵列矩阵键盘、I2S解码芯片、64 MB的SDRAM、10/100M以太网接口,以及3个UART接口。软件构架如图1所示,主要包括MP3解码器、驱动、键盘驱动和用户图形界面(GUI)等模块。采用μClinux作为操作系统。μClinux针对嵌入式应用的特点作了较大的简化和修改,支持多种文件系统和多任务处理,而且具有相对完整的网络体系协议,因而特别适合嵌入式应用。

2 MP3解码算法分析
本文选用MP3解码程序作为方案验证代码。MPEG-1/2 Audio Layer 3是专门针对音乐和语音数据的有损压缩算法。该算法的解码过程比较复杂,主要包括反向修正离散余弦变换(IMDCT)、逆量化、Huffman解码、子带综合等功能模块。读入一段MP3数据后,首先要检测数据流中的同步字,以确定一帧数据的开始;然后提取帧头信息,特别是解码所需要的一些参数,同时分离出帧边信息和主数据;之后对边信息数据解码得到Huffman解码信息和逆量化信息,再经过重新排序、立体声处理、反混叠处理、IMDCT变换和子带综合滤波器组后,就可以得到PCM输出。
MP3解码流程如图2所示。大致分为两个阶段,即数据流控制阶段和数值计算阶段。数据流控制阶段包括帧同步、边带信息解码和Huffman解压缩等过程。其中,Huffman解压缩是对编码数据进行操作,其他过程则是对帧控制部分进行操作。

3 基于方案
3.1 方案分析
SRAM指令执行速度要比DRAM快得多。-5329处理器内部集成了32 KB的SRAM,本方案将充分利用处理器片内SRAM来对解码程序进行。首先对源代码中的主要解码函数进行分析,如表1所列。可以看到驱动写函数(write)、子带综合(MPEGSUB_synthesis)、反向修正离散余弦变换(imdct_I)和快速离散余弦变换(fast_dct)对处理器资源消耗较大,几乎占用80%的解码时间。根据分析结果,分别把驱动程序和上述解码函数放进SRAM中执行,以提高流媒体解码器的执行速度,降低其对处理器资源的消耗。

3.2 配置音频驱动程序到片内SRAM中执行
操作系统把内核和运行在其上的分成两个管理层次,也就是常说的“内核态”和“用户态”。内核态具有较高的应用权限,可以控制处理器内存的映射和分配方式。音频驱动程序是系统内核的重要组成部分,工作在内核态,实现不断从用户空间解码文件中读取音频信息,以及驱动音频芯片播放声音等相关功能。通过修改μClinux-2.6内核代码,可以将音频驱动程序配置到片内SRAM中执行,主要通过修改系统链接文件来实现。系统链接文件用于将输入文件根据一定的规则合并成一个输出文件,并对符号与地址进行绑定。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭