一种基于EFSL的嵌入式MP3播放器设计方法
播放器采用四层结构来实现其功能。软件层次结构如图2所示。采用模块化的主要目的是方便实现模块移植性。
图2 播放软件层次结构
2.1 开发环境搭建
开发环境主要是建立在The Rowley Cross StudioIDE基础上进行EFSL编译。CrossWorks for ARM1.6 使用GCC 4.1 编译器。安装CrossWorks forARM 1.6软件并导入MP3Player.hzp项目文件。项目文件中已经包含了主板中的文件和设备配置文件。
Rowley Cross Studio IDE自动加载所有文件后,将显示所有主要文件夹:Audio Render Driver文件夹(包含了DAC音频处理相关代码)、Demo Player文件夹(主要模块,可根据需求对其进行配置和修改)、EFSL文件夹(保存了EFSL嵌入式文件系统,通过此文件系统可以用播放器软件对MMC存储卡中的MP3文件进行读写操作)、EFSL Driver文件夹(保存存储设备基本读写操作驱动程序)、Libmad文件夹(主要编码文件,可根据需求改变相关代码以满足Libmad配置要求)。
2.2 文件系统配置与编译功能模块
文件系统配置与编译功能模块进行软件配置和文件系统编译。
2.2.1 设置项目文件路径
通过命令行工具,找到项目文件和包含文件。其路径为:
在ARM Flash Release和ARM Flash调试选项窗口的预处理选项卡配置文件中添加MP3Player项目。
2.2.2 配置编译器
由于定点数字计算量要求非常高,而且扩展的数字指令集只能在32位上运行,所以代码编译也需要32位环境下进行编译,同时需要使用到USB存储器RAM 及其堆栈分配[5].USB RAM 一般情况下不运行在LPC214X环境下,但Rowley Cross Studio IDE已经提供了此硬件设备的初始化。Philips_LPC2148_startup.s创建并放置在MP3播放器项目目录,以支持USB RAM设备,还需要在代码中加入堆栈分配代码到USB DMARAM 的内存部分。
2.2.3 Libmad文件配置
Libmad可以在不同的平台上运行一个库,并为ARM7提供更好的优化。其编译器同样需要设置系统运行环境变量。
![](http://m.amcfsurvey.com/webstorage/images/display/reg.jpg)
评论