基于s3c2440的madplay移植

学习内容: madplay 移植

版本:V1.1

作者:Feng dong rui

整理日期:2009.09.24

嵌入式技术交流群:92388278

交流邮箱:1986fdr@163.com

 

基于 s3c2440 madplay 移植

mini2440 移植声卡后,赶紧找了移植 madplay 的资料,看上去挺简单的,于是接着移植 madplay

一、        环境和软件介绍

1、 主机环境:虚拟机下 Fedora9

2、 交叉编译器: arm-linux-gcc-4.3.2

3、 软件包: zlib-1.2.3 libid3tag-0.15.1b.tar.gz libmad-0.15.1b.tar.gz madplay-0.15.2b.tar.gz

4、  把以上软件包解压到 /opt/studyarm/madplay-make 目录下,分别改名为 zlib libid3tag libmad madplay 。并在 madplay-make 目录下新建 include lib 目录用于存放编译后的头文件和库文件。

二、     移植步骤

1、 编译 zlib-1.2.3

进入 zlib 目录进行如下配置:

./configure –prefix=/opt/studyarm/madplay-make

然后修改生成的 Makefile 文件:

    ...

   CC=arm-linux-gcc

   ...

   LDSHARED=arm-linux-gcc

   CPP=arm-linux-gcc -E

   ...

   AR=arm-linux-arrc

   RANLIB=arm-linux-ranlib

   ...

执行 make

make install

/opt/studyarm/madplay-make 目录下的 included lib 目录里生成了编译后的文件。

2、 编译 libid3tag-0.15.1b.tar.gz

进入 libid3tag 目录,执行“ ./configure --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/opt/studyarm/madplay-make

    make

make install

/opt/studyarm/madplay-make 目录下的 included lib 目录里生成了编译后的文件。

3、 编译 libmad-0.15.1b.tar.gz

进入 libmad 目录,执行“ ./configure --host=arm-linux --enable-static --disable-shared -disable-debugging  --prefix=/opt/studyarm/madplay-make

因为我使用的是高版本的 arm-linux-gcc-4.3.2 编译器, make 时出现了“ cc1: error: unrecognized command line option "-fforce-mem" ”错误,这是因为这个高版本的 gcc 没有 "-fforce-mem" 参数,解决的办法是在 Makefile 里面查找 "-fforce-mem" ,将其删除即可 make 通过。

make

make install

/opt/studyarm/madplay-make 目录下的 included lib 目录里生成了编译后的文件。

4、 madplay-0.15.2b.tar.gz

进入 madplay 目录,执行“ ./configure CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc --host=arm-linux --enable-static --disable-shared CPPFLAGS=-I/opt/studyarm/madplay-make/include LDFLAGS=-L/opt/studyarm/madplay-make/lib

make

在目录下生成了 madplay 可执行文件。

三、     测试

将生成的 madplay 可执行文件拷贝到开发板的 /bin 目录下,播放 U 盘或其它地方的歌曲,这里播放的是 U 盘里面的歌曲。

[rootMrFeng]#ls

01.mp3  2.wma   ??      ???     ????    ?????

[rootMrFeng]#madplay 01.mp3

MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.

          Title: 天空之城(木吉他)

         Artist: 久石让

          Album: 天空之城( Laputa The Castle in

10288 frames decoded (0:04:28.7), +0.3 dB peak amplitude, 31 clipped samples

到了这里, madplay 移植成功,声音播放正常。

四、      我的编译命令:

//written by yichi 2010.02.26 14:22:08
//使用源码:libid3tag-0.15.1b.tar.gz, madplay-0.15.2b.tar.gz, libmad-0.15.1b.tar.gz, zlib-1.2.3.tar.gz

//编译zlib-1.2.3
tar -xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/home/yichi/work2010/madplay/target
gvim Makefile
//修改gcc->arm-linux-gcc, ar rc->arm-linux-ar rc, ranlib->arm-linux-ranlib
make
make install

//编译ibid3tag-0.15.1b
tar -xvf libid3tag-0.15.1b.tar.gz
cd libid3tag-0.15.1b
./configure --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/home/yichi/work2010/madplay/target
make
make install

//编译libmad-0.15.1b
tar -xvf libmad-0.15.1b.tar.gz
cd libmad-0.15.1b
./configure --host=arm-linux --enable-static --disable-shared -disable-debugging  --prefix=/home/yichi/work2010/madplay/target
gvim Makefile
//删除-fforce-mem 参数
make
make install

//编译madplay-0.15.2b.tar.gz
tar -xvf madplay-0.15.2b.tar.gz
cd madplay-0.15.2b
./configure CC=/usr/arm/4.3.2/bin/arm-linux-gcc --host=arm-linux --enable-static --disable-shared CPPFLAGS=-I/home/yichi/work2010/madplay/target/include LDFLAGS=-L/home/yichi/work2010/madplay/target/lib
make
//生成静态编译的madplay
cp madplay /tftpboot

 

五、由于我板子声音架构为alsa,直接使用madplay播放会出现audio: /dev/dsp: No such file or directory错误。

   原因是madplay使用oss建构,在网上查找了一些资料,可以用alsa支持oss架构,但是并没有找到比较容易的方法,有待以后学习。

   简单解决方法如下:使用madplay解码再使用aplay播放:)在这里向有此伟大想法的不知名网友致敬。

     madplay -o wav:- 1.mp3 | aplay

   有关aplay等alsa工具移植请参照http://blog.csdn.net/yichi7758/archive/2010/02/26/5328491.aspx

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值