当前位置:首 页 --> 方案设计
N903A晶心科技处理器的MP3解决方案与Andes平台的MP3移植
发布时间:2010/11/20 23:42:00 来源:
在线咨询:
给我发消息
李湘宁 2850985550
给我发消息
张代明 3003290139
给我发消息
姚红霞 3003214837
13713728695

随着人们对于音频电子产品功能的需求越来越高,8位及16位MCU逐渐向32位MCU转型已经成为市场趋势。晶心科技(Andes)作为亚洲首家原创性32位微处理器IP与系统芯片开发平台的设计公司,面向32位MCU市场推出了Andes Core N9系列低功耗高性价比的32位处理器软硬核IP。基于该系列处理器,晶心科技针对不同音频应用提供了多种解决方案。其中包括将多种音频格式的编、解码器(开源),例如MP3、AAC、WMA、G729等移植到Andes平台上。并且利用nds32(基于Andes Core)架构的优势和针对音频效能的扩展指令集,以及算法上的改进,对这些编解码器做了进一步的优化,使其不仅占用的空间较小而且具备了较高的运行性能。本文以MP3解码器为例,介绍如何将madplay移植到Andes平台,以及晶心科技基于N903A处理器提供的MP3解决方案。

 

1.MP3简介

MPEG-1 Audio Layer3(简称MP3)是一种有损音频编码方式,它利用掩蔽效应(一种心理声学模型),将脉冲编码调制(Pulse Code Modulation)音频数据中人耳听觉系统无法察觉的那部分数据去掉,使得MP3能够在音质丢失很小的情况下把音乐文件压缩到很小的程度(1:10 甚至 1:12 的压缩率)。因为其体积小、音质高的特点,MP3已经成为当今最为流行的音频格式。madplay是目前使用较为广泛的一种MP3的解码器,下面将详细介绍如何使用Andes提供的AndeSight集成开发工具将madplay移植到Andes平台。

 

2.环境及软件介绍

 

2.1系统环境:

 

Linux:Fedora 8。

 

2.2开发环境:

 

AndeSight v1.4。

 

AndeSight是晶心科技提供的一种基于nds32架构开发嵌入式工程的图形化的集成开发环境。主要由AndeSight IDE, AndESLive和nds32工具集3个部分组成。

 

AndeSight IDE为工程师提供了各种友好的界面,包括对嵌入式工程做编辑,编译,运行,调试或者评测等等操作。

 

AndESLive提供了基于nds32架构的仿真器和一种图形化的虚拟SoC构建模型,它与AndeSight IDE相结合为用户提供了一个虚拟的硬件平台。这个虚拟评估平台提供Andes自行定义ISA的多组系列32位CPU IP以及各种外围设备IP,并且支持用户自定义IP模型。

 

AndESLive配合AndeSight IDE不仅使得SoC设计者能在计划初期就开始软件设计、侦错、最优化等工作,并对系统架构及功能进行检验,而且使硬件工程师和软件工程师具有一样的能力去制作和修改他们各自的系统模型,可以有效的控制NRE(NonRecurring Engineering)成本,让软件工程师在拿到硬件原型之前,即可以进行软件的开发和优化。

 

nds32工具集提供了一套在Andes平台上开发嵌入式应用程序所需要的标准工具,例如编译器、调试器、链接器等。

 

2.3交叉编译器:

 

nds32le-linux-gcc。

 

nds32工具集中对应不同的Andes Core型号,不同的系统函数库以及大小端形式等条件,提供了各种对应的交叉编译器。这里我们选用nds32le-linux-gcc。

 

2.4软件包:

 

除了源码外,madplay还需要MP3的解码库libmad,以及zlib和libid3tag来正确的读取MP3头段信息。这四个软件包都可以在开源网站上获得。其中,madplay-0.15-1b.tar.gz、libmad-0.15.1b.tar.gz、libid3tag-0.15.1b.tar.gz可以在http://sourceforge.net/project/showfiles.php?group_id=12349获取,zlib-1.2.4.tar.gz可以在http://zlib.net/获取。

3.Madplay的移植

 

3.1编译函数库

 

3.1.1编译libmad

 

进入libmad目录,首先将如下nds32架构的信息加入到配置文件config.sub中(可加到第675行):

nds32*)

basic_machine=nds32-elf

os=-linux

;;

然后依次执行:

 

#CC=nds32le-linux-gcc ./configure --prefix=$PREFIX/MP3_Decoder --host=nds32-elf --disable-debugging --disable-shared

#make

#make check

#make install

 

编译成功后,可以在$PREFIX/MP3_Decoder($PREFIX是用户设定的路径)目录下的included和lib目录里找到相应的.h文件和.a文件。

 

3.1.2编译zlib和libid3tag

 

需要先编译zlib。进入zlib目录后,依次执行:

 

#CC=nds32le-linux-gcc ./configure --prefix=$PREFIX/MP3_Decoder

#make

#make install

 

然后编译libid3tag。先将nds32架构信息加入到文件config.sub中(方法同libmad),然后执行如下命令,编译libid3tag时需要用到编译zlib生成的头文件和库文件:

 

#CC=nds32le-linux-gcc ./configure --prefix=$PREFIX/MP3_Decoder --disable-debugging --disable-shared CPPFLAGS="-I/tmp/MP3_Decoder/include" LDFLAGS="-L/tmp/MP3_Decoder/lib" --host=nds32-elf

#make

#make install

 

同样,在编译成功后libid3tag的相关文件也保存在$PREFIX/MP3_Decoder目录下面。

 

3.2在AndeSight中生成madplay

 

在进入AndeSight图形化集成开发环境之前,需要先对madplay源码中的makefile进行配置。首先同样需要将nds32架构信息加入到config.sub文件中,然后执行如下配置:

 

#CC=nds32le-linux-gcc ./configure --disable-debugging --disable-shared --host=nds32-elf CPPFLAGS="-I$PREFIX/MP3_Decoder/include -lmad -lid3tag -lz" LDFLAGS="-L$PREFIX/MP3_Decoder/lib" --prefix=/Andestech/AndeSight14/ide/workspace/MP3decoder_madplay

 

接着打开AndeSight v1.4,建立一个STD C(标准C)工程mp3decoder,并将madplay目录下的所有文件导入工程中。选择Project菜单栏选择Build Project一项,成功进行编译和链接后,在指定的目录下就会生成madplay的可执行文件,如图1所示。这样madlpay就成功移植到Andes平台上了。

 

 

基于晶心科技N903A处理器的MP3解决方案与Andes平台的MP3移植(电子工程专辑)
图1:成功进行编译和链接后,在指定的目录下就会生成madplay的可执行文件。

3.3测试与验证

 

为了验证移植的正确性,这里我们采用在虚拟的Andes硬件平台上运行的方式,也就是在AndeSight中通过AndESLive提供的虚拟SoC平台进行仿真。这里选用Andes_demo.vep这个虚拟开发平台,它与真实的Andes demo开发板是一样的。

选取一首MP3格式的歌曲“test.mp3”拷贝到工程mp3decoder的目录下,然后在运行视窗的Arguments选项中加入指定输入文件和输出的文件的格式:

 

 

基于晶心科技N903A处理器的MP3解决方案与Andes平台的MP3移植(电子工程专辑)
图2:在虚拟SoC平台上运行madplay。

 

在虚拟开发平台上运行madplay。运行结束后,在工程目录下会看到“test.wav”文件,如图2所示。这个文件可以在Windows Media Player进行播放,这样就验证了madplay移植到Andes平台上的正确性。

 

4.晶心科技在MCU层级的mp3解决方案

 

晶心科技基于Andes Core N903A处理器对MCU层级的音频应用提供了全方位的解决方案,包括硬件平台和软件包支持。图3展示了晶心科技提供的完整的音频开发平台。

 

--output=wave:PATH1/test.wav PATH2/test.mp3(输出格式还可以为.pcm)。

 

 

 

基于晶心科技N903A处理器的MP3解决方案与Andes平台的MP3移植(电子工程专辑)
图3:晶心科技提供的音频开发平台。

 

 

考虑到从8位MCU升级到32位带来的硬件成本的增加,晶心科技推出了N903A低功耗高性价比的32位处理器。N903A提供了完全可配置的处理器IP核,包括可配置的I/D cache大小,I/D local memory大小,GPR数量,硬件乘法器等等。这样,客户可以根据自己产品的需求,以最小的硬件成本获得较8位系统更为优化的系统性能。在指令方面,N903A不仅包含了晶心科技自主知识产权的一套高效指令集,而且加入了为提高音频数据处理能力而特别设计的四十余条音频扩展指令。另外,针对现有及可预期未来的大多数软硬件应用特性,晶心科技还提供一种16bit/32bit混合指令集形式,在提供功能之余,缩小了程序所需的内存空间,从而进一步实现降低成本的效益。

 

软件方面,晶心科技同样提供了全方面的支持。包括操作系统、设备驱动、开发工具、中间件、函数库以及上层的各种应用程序。对于MP3的编解码器,晶心科技对其代码大小做了进一步的优化,并利用nds32架构的优势以及音频扩展指令集,使其在Andes平台上运行的性能达到很高的水平。以48KHz/128Kbps的MP3歌曲为例,晶心科技优化的madplay解码器正朝着10MHz的工作频率迈进。表1为晶心科技优化的MP3编解码器在N903A处理器上运行的结果。

 

 

 

基于晶心科技N903A处理器的MP3解决方案与Andes平台的MP3移植(电子工程专辑)
表1:晶心科技提供的MP3编解码器数据。

 
    您可能对以下产品感兴趣  
产品型号 功能介绍 兼容型号 封装形式 工作电压 备注
 
深圳市永阜康科技有限公司 粤ICP备17113496号 服务热线:0755-82863877 手机:13242913995