
DSTD W130(57160001-YX)
ABBDSTDW130(57160001-YX),现货销售,顺丰包邮,欲购从速。详情描述:本文以MP3***器为例,介绍了一种在嵌入式Linux系统下配置使用处理器片内SRAM的应用方案,有效提高了代码的***效率,降低了执行功耗。该方案不论在性能还是成本上都得到了很大改善。1硬件平台和软件架构硬件平台采用Freescale公司的MCF5329EVB开发板。终端硬件包括ColdFire5329处理器、32KB的片内SRAM、1800×600矩阵LCD显示屏、9×3阵列矩阵键盘、I2S音频***芯片、64MB的SDRAM、10/100M以太网接口,以及3个UART接口。软件构架如图1所示,主要包括MP3***器、音频驱动、键盘驱动和用户图形界面(GUI)等模块。采用μClinux作为操作系统。μClinux针对嵌入式应用的特点作了较大的简化和修改,支持多种文件系统和多任务处理,而且具有相对完整的网络体系协议,因而特别适合嵌入式应用。软件构架2MP3***算法分析本文选用MP3***程序作为方案验证代码。MPEG-1/2AudioLayer3是专门针对音乐和语音数据设计的有损压缩算法。该算法的***过程比较复杂,主要包括反向修正离散余弦变换(IMDCT)、逆量化、Huffman***、子带综合等功能模块。读入一段MP3数据后,首先要检测数据流中的同步字,以确定一帧数据的开始;然后提取帧头信息,特别是***所需要的一些参数,同时分离出帧边信息和主数据;之后对边信息数据***得到Huffman***信息和逆量化信息,再经过重新排序、立体声处理、反混叠处理、IMDCT变换和子带综合滤波器组后,就可以得到PCM输出。MP3***流程如图2所示。大致分为两个阶段,即数据流控制阶段和数值计算阶段。数据流控制阶段包括帧同步、边带信息***和Huffman解压缩等过程。其中,Huffman解压缩是对编码数据进行操作,其他过程则是对帧控制部分进行操作。MP3***流程3基于片内SRAM的优化设计方案3.1方案分析SRAM指令执行速度要比DRAM快得多。Cold-Fire5329处理器内部集成了32KB的SRAM,本设计方案将充分利用处理器片内SRAM来对***程序进行优化。首先对源代码中的主要***函数进行分析,如表1所列。可以看到驱动写函数(write)、子带综合(MPEGSUB_synthesis)、反向修正离散余弦变换(imdct_I)和快速离散余弦变换(fast_dct)对处理器资源消耗较大,几乎占用80%的***时间。根据分析结果,分别把音频驱动程序和上述***函数放进SRAM中执行,以提高流媒体***器的执行速度,降低其对处理器资源的消耗。主要***函数分析3.2配置音频驱动程序到片内SRAM中执行Linux操作系统把内核和运行在其上的应用程序分成两个管理层次,也就是常说的“内核态”和“用户态”。内核态具有较高的应用权限,可以控制处理器内存的映射和分配方式。音频驱动程序是系统内核的重要组成部分,工作在内核态,实现不断从用户空间***文件中读取音频信息,以及驱动音频芯片播放声音等相关功能。通过修改μClinux-2.6内核代码,可以将音频驱动程序配置到片内SRAM中执行,主要通过修改系统链接文件来实现。系统链接文件用于将输入文件根据一定的规则合并成一个输出文件,并对符号与地址进行绑定。为了在修改内核代码的同时不影响系统其他文件的正常运行,要在内核链接脚本中添加新的段区定义(.sramcode),指定该段区链接加载地址为处理器片内SRAM,并在.sramcode段区内定义代码段(.sramtext)和数据段(.sramdata),分别用于存储驱动中的代码和数据。对齐方式采用ALIGN(4),因为对32位微处理器来说,该对齐方式将有效减少处理器执行周期,提高执行效率。然后,使用2个指针_lsramcode和_lsramcodeend分别指向,sramcode段区的段首和段尾,具体实现如下:完成对操作系统链接文件的修改之后,使用宏定义在音频驱动程序中把相关函数和数据分别指定链接到,sramcode代码段和数据段,并由copy函数把相关函数***到SRAM中执行。编译、链接完成后,可以在系统内核存储映射文件Sys-tem.map中查看驱动函数和数据在内存中的地址。图3显示了音频驱动函数在处理器片内SRAM中的映射地址。3.3配置实时数据和函数到片内SRAM中执行把用户空间的实时数据和函数放置到片内SRAM中执行,由于处理器可以直接从片内SRAM中存取数据和指令,减少了处理器存取数据和指令的周期,提高了程序的执行效率。首先,放置实时数据到处理器片内SRAM中。通过S_malloc和S_free函数来实现:S_malloc用来申请处理器内存空间,S_free用来对这一申请的空间进行释放。为了灵活使用定义的S_malloc和S_free函数,需要定义一个结构体和地址指针6ES5095-8MA026ES5-460-7LA136ES5-734-1BD206ES5951-7ND516ES5941-7UB116ES5095-8MC016ES5431-8MA116ES5421-8MA126ES5095-8MA056ES5928-3UB126ES5242-1AA416ES5374-2KH216ES5-482-8MA136ES5451-8MR126ES5095-8MB026ES5951-7LD216ES5308-3UB116ES5524-3UA136ES5948-3UR236ES5943-7UB216ES5441-8MA116ES5095-8MA036ES5431-8MA116ES5928-3UB116ES5375-1LA416ES5955-3L***26ES5942-7UA136ES5928-3UB216ES5393-0UA156ES5943-7UB116ES5456-7LB116ES5944-7UB116ES54648MD116ES5451-7LA216ES5988-3LA116ES5441-8MA116ES5945-7UA236ES5955-3LC146ES5466-4UA116ES5095-8FB016ES5188-3UA126ES5470-7LB136ES5308-3UC116ES5701-1LA126ES5981-0HA216ES5458-7LA116ES5752-0AA436ES5928-3UA126ES57011LA126ES5948-3UA126ES5375-1LA216ES5441-4UA146ES5-393-0UA156ES5421-8MA126ES5466-3LA116ES5374-1KH216ES5948-3UA136ES5463-4UB126ES5431-8MD116ES5103-8MA036ES5955-3N***26ES5-095-8MA036ES5430-7LA126ES5095-8MC036ES5451-7LA126ES5955-3LF126ES5375-0LA216ES5490-7LB216ES5928-3UB126ES5945-7UA136ES5490-8MB116ES5375-0LD216ES5700-8MB116ES5951-7LD126ES5318-8MA126ES5420-7LA116ES5095-8MB016ES53750LC116ES5460-7LA126ES5458-4UA16ES5465-4UA126ES55460-7LA126ES5314-3UA116ES5242-1AA416ES5944-7UB216ES5928-3UA126ES5945-7UA236ES59283UB126ES5308-3UC216ES5752-0AA536ES5460-7LA136ES52474UA316ES5102-8MA026ES5454-7LA116ES5440-8MA216ES5430-4UA146ES5705-0AF006ES5927-3SA116ES5945-7UA136ES5300-5CA116ES5451-4UA136ES5928-3UA216ES5-466-3LA116ES5460-4UA136ES5451-7LA116es53751la616ES5431-8MA116ES5943-7UA116ES5305-7LA116ES5955-3LF416ES5246-4UA316ES5441-4UA146ES5318-8MC126ES5923-3UC116ES5458-7LA116ES5242-1AA326ES5434-4UA126ES5-951-7LB146ES5951-7LB216ES5470-7LA126ES5095-8MC016ES5266-8MA116ES5942-7UF156ES5988-3NA116ES5951-7LD216ES5445-3AA126ES5400-7AA136ES5947-3UA216ES5944-7UA126ES5700-2LA126ES5928-3UB116ES5430-4UA116ES5700-8MA116ES5373-0AA216ES5490-7LB216ES5441-7LA126ES5432-4UA126ES5101-8UB136ES5454-7LA126ES5375-0LB216ES5316-8MA126ES5244-3AA136ES5470-4UC136ES5376-0AA116ES5955-3LF126ES5905-3RA116ES5923-3UA116ES5-734-1BD206ES5464-8ME116ES5491-0LB116ES5981-0HA116ES5095-8MA016ES5452-8MR116ES5263-8MA136ES5947-3UA116ES5470-4UA126ES5482-7LA116ES5948-3UR136ES5695-0AA116ES5301-3AB136ES5700-8BA116ES5470-7LC126ES5441-7LA136ES5-252-3AA136ES5948-3UA116ES5421-8MA116ES5451-8MR116ES5911-0AA426ES5101-8UA136ES5101-8UC116ES5925-3KA126ES5530-7LA116ES5-463-4UB126ES5955-7NC116ES5241-3BA116ES5955-3L***26ES5441-4UA136ES5470-4UC126ES5521-8MA116ES5512-5AA126ES5324-3UR116ES5454-4UA126ES59211BA116ES5451-2BA116ES5470-8MD116ES5242-1AA136ES5951-7LB146ES5350-3KA216ES59263SA126ES5685-0UA116ES5524-3UA156ES5316-8MA126ES5951-7ND516ES54318MD116ES5305-7LB116ES5470-4UC126ES5451-7LA116ES5375-1LA616ES5437-8EA126ES5451-8MD116ES5375-8LC216ES5441-4UA116ES5267-8MA116ES55233UA116ES5308-3UB116ES5921-3UA126ES5470-4UA116ES5435-7LA116ES5955-3LC136ES5526-3LA116ES5465-4UA136ES5373-0AA816ES5455-7LA116ES5456-7LA116ES5304-3UA126ES5948-3UR516ES5955-7NC116ES5095-8MB046ES5460-4UA126ES5458-4UA126ES5521-8MA226ES5-941-7UA136ES5445-3AA126ES5304-3UB116ES5700-8WA116ES5541-8AA116ES5-951-7ND126ES5490-7SA116ES5464-8MC116ES5777-0BB016ES5431-8FA116ES5241-1AA116ES5095-8ME016ES5466-8MC116ES5430-4UA126ES5246-4UA416ES5451-4UA14)