分享
 
 
 

MP3播放器madplay在ARM的移植

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

主机配置:winxp,vmware5.0,redhat9.0dAkLinux联盟

实验箱:s3c2410,uda1341dAkLinux联盟

dAkLinux联盟

一、移植前的准备工作dAkLinux联盟

首先移植Uboot,Uimage(linux2.6.15)和ramdiskdAkLinux联盟

打开串口,在超级终端上启动linuxdAkLinux联盟

U-Boot 1.1.1 (Jul 11 2006 - 22:04:39)dAkLinux联盟

U-Boot code: 33F80000 -> 33F96830 BSS: -> 33F9AB18dAkLinux联盟

IRQ Stack: 33f4ff7cdAkLinux联盟

FIQ Stack: 33f4ef7cdAkLinux联盟

RAM Configuration:dAkLinux联盟

Bank #0: 30000000 64 MBdAkLinux联盟

Flash: 512 kBdAkLinux联盟

*** Warning - bad CRC, using default environmentdAkLinux联盟

dAkLinux联盟

In: serialdAkLinux联盟

Out: serialdAkLinux联盟

Err: serialdAkLinux联盟

AWEN2410:dAkLinux联盟

输入bootm 32000000dAkLinux联盟

启动linuxdAkLinux联盟

AWEN2410 #dAkLinux联盟

好,ARM上的linux已经启动了。dAkLinux联盟

dAkLinux联盟

二、移植声卡驱动程序dAkLinux联盟

实验箱选用的是UDA1341的声卡,因此必须首先编译UDA1341的驱动,编译完成后才可以移植到实验箱上。当然,这个编译是在redhat中完成的。dAkLinux联盟

驱动程序中共有三个文件:snd-s3c2410-uda1341.c,bitfield.h, Makefile.dAkLinux联盟

拷贝这三个文件到自己的编译目录下dAkLinux联盟

我的根目录是:#/usr/local/mp3来编译的dAkLinux联盟

进入uda1341的目录,#cd uda1341dAkLinux联盟

因为这个是要移植到ARM-s3c2410上的,因此,必须要用ARM的编译工具进行编译。dAkLinux联盟

首先找到交叉工具,我这里是用cross_3.4.1来编译的。dAkLinux联盟

#export PATH=$PATH:/usr/local/arm/3.4.1/bindAkLinux联盟

#vi MakefiledAkLinux联盟

修改KERNELDIR 这一行,要&移植到实验箱上的linux版本一样,否则,可能会引起版本不同导致的问题,dAkLinux联盟

这一行修改如下:KERNEKDIR ?=/usr/local/linux=2.6.15dAkLinux联盟

然后输入# make 进行编译,这时候,会在uda 1341目录下产生snd-s3c2410-uda1341.kodAkLinux联盟

这个就是我们要移植到ARM实验箱上的驱动程序,没有它,uda1341是不能工作的。dAkLinux联盟

dAkLinux联盟

三、编译内核模块dAkLinux联盟

因为前面在编译linux-2.6.15的时候,可能没有编译进对声卡的支持,因此应该重新编译以前的内核linux -2.6.15,相信大家一定很熟悉了哈dAkLinux联盟

在linux-2.6.15目录下,make menuconfigdAkLinux联盟

进入,在 device driversdAkLinux联盟

SounddAkLinux联盟

选中sound card supportdAkLinux联盟

进入open sound systemdAkLinux联盟

选中open sound systemdAkLinux联盟

然后重新编译,这时会在根目录的linux-2.6.15/sound/(你编译kernel的目录)目录下的内核模块 soundcore.ko,在linux-2.6.15/sound/core 产生snd.ko 这就是,我们需要的linux的驱动模块。dAkLinux联盟

dAkLinux联盟

四、开始移植工作dAkLinux联盟

1、下载以下程序libid3tag,libmad,madplay。dAkLinux联盟

2、下载zlib一个压缩库,libid3tag需要它dAkLinux联盟

用交叉编译工具编译zlib,并且把库生成到交叉编译环境的库目录下dAkLinux联盟

./configure --prefix=/usr/local/arm/3.4.1/arm-linux.dAkLinux联盟

修改Makefile.dAkLinux联盟

CC=arm-linux-gccdAkLinux联盟

AR=arm-linux-ar rcdAkLinux联盟

RANLIB=arm-linux-ranlibdAkLinux联盟

然后执行命令make dAkLinux联盟

make installdAkLinux联盟

说明:--prefix是便于寻找头文件和库文件,以下同dAkLinux联盟

3、编译libid3tagdAkLinux联盟

./configure CC=arm-linux-gcc --host=arm-linux --disable-debugging -disable-shared --prefix=/usr/local/arm/3.4.1/arm-linuxdAkLinux联盟

make dAkLinux联盟

make installdAkLinux联盟

说明:--host指明库运行的环境arm-linux不是ix86-pc-linux.dAkLinux联盟

-disable-shared 编译器默认是动态连接共享库的。这里指明为静态连接(关键)dAkLinux联盟

4、编译libmaddAkLinux联盟

./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.4.1/arm-linux CC=arm-linux-gccdAkLinux联盟

makedAkLinux联盟

make install dAkLinux联盟

说明:同上 dAkLinux联盟

5、编译madplaydAkLinux联盟

./configure --host=arm-linux CC=arm-linux-gcc --disable-debugging --disable-shared dAkLinux联盟

make dAkLinux联盟

make installdAkLinux联盟

dAkLinux联盟

五、准备下载文件的准备dAkLinux联盟

1、在redhat中,打开ftp工具,并且用网络将实验箱对结,主要是要将上面编译的文件传输到arm上。dAkLinux联盟

2、设立ip地址:ifconfig eth0 192.168.3.dAkLinux联盟

3、安装ftp服务器dAkLinux联盟

4、建立ftp传输的文件夹:dAkLinux联盟

#cd /homedAkLinux联盟

# mkdir dsldAkLinux联盟

# useradddAkLinux联盟

# passwd dsldAkLinux联盟

# chown dsl dsldAkLinux联盟

在dsl下,拷贝前面编译的文件:有snd.ko soundcore.ko,snd-s3c2410-uda1341.ko,madplaydAkLinux联盟

还有,就是你要准备播放的mp3 这里,我准备播放的是10.mp3dAkLinux联盟

dAkLinux联盟

六、下载开始dAkLinux联盟

1、首先在串口中建立一个文件系统,这个文件系统用来保存上面要下载的文件。dAkLinux联盟

dAkLinux联盟

knod /dev/ram b 1 1 dAkLinux联盟

dd if=/dev/zero of=/dev/ram 4096dAkLinux联盟

mke2fs –vm0 /dev/ram 4096dAkLinux联盟

mount -t ext2 /dev/ram /mnt/ramdiskdAkLinux联盟

cd /mnt/ramdiskdAkLinux联盟

超级终端中这样操作dAkLinux联盟

/ $ cd /mnt/ramdiskdAkLinux联盟

/mnt/ramdisk $ lsdAkLinux联盟

lost+founddAkLinux联盟

/mnt/ramdisk $dAkLinux联盟

好,这样,文件系统就可以建立起来了dAkLinux联盟

2、 传输文件开始,将pc机和arm 实验箱用网络线连接起来,然后,按照如下操作dAkLinux联盟

Ftpget –udsl –pdsl 192.168.3.3 snd.ko snd.kodAkLinux联盟

..........................................................Soundcore.ko soundcore.kodAkLinux联盟

..........................................................Snd-s3c2410-uda1341.ko Snd-s3c2410-uda1341.kodAkLinux联盟

..........................................................Madplay madplay dAkLinux联盟

最后,还要传输要播放的mp3文件哦dAkLinux联盟

mnt/ramdisk $ ftpget -udsl -pdsl 192.168.3.3 10.mp3 10.mp3 dAkLinux联盟

ftpget: Write Error: No space left on devicedAkLinux联盟

后面的提示不用关心,原因是前面我得的ramdisk只有4096,不到5M,空间不够的原因,导致的结果是我么后面播放的歌曲只有前面一部分,没有关系。dAkLinux联盟

3、下载完成后,基本的文件已经准备就绪了,下面就可以开始进行mp3音乐的播放。dAkLinux联盟

加载模块:dAkLinux联盟

/mnt/ramdisk $ insmod snd.kodAkLinux联盟

/mnt/ramdisk $ insmod soundcore.kodAkLinux联盟

/mnt/ramdisk $ insmod snd-s3c2410-uda1341.kodAkLinux联盟

建立块专用或字符专用文件dAkLinux联盟

mknod /dev/dsp c 14 3dAkLinux联盟

mknod /dev/mixer c 14 0dAkLinux联盟

dAkLinux联盟

注:dAkLinux联盟

dev/dsp 数字信号处理(DSP):DSP是指声卡中专门处理效果的芯片,称为效果器,对提高声卡性能很有用 dAkLinux联盟

/dev/mixer 混音器混音器是一台控制音频信号的提升,并将音频信号导向所指目的地的设备dAkLinux联盟

dAkLinux联盟

4、下面可以播放音乐dAkLinux联盟

mnt/ramdisk $ ./madplay --sample-rate=65535 10.mp3 dAkLinux联盟

其中,sample-rate=65535设置播放的频率,否则可能会引起播放速度太快dAkLinux联盟

显示的界面如下:dAkLinux联盟

dAkLinux联盟

MPEG Audio Decoder 0.15.1 (beta) - Copyright (C) awen s3c2410-uda1341: audio_set_dsp_speed:44100 prescaler:66dAkLinux联盟

2000-2004 Robert Leslie et al.dAkLinux联盟

tty: /dev/tty: No such file or directorydAkLinux联盟

Title: 甜蜜蜜dAkLinux联盟

Artist: 邓丽君dAkLinux联盟

Genre: BluesdAkLinux联盟

awen s3c2410-uda1341: audio_set_dsp_speed:65535 prescaler:66dAkLinux联盟

output: resampling 44100 Hz to 65535 HzdAkLinux联盟

dAkLinux联盟

dAkLinux联盟

七、 存在的问题dAkLinux联盟

1、 我的arm 是从nandflash启动的,前面Uboot 的移植中只用了前面的4096,不到5M的空间,导致下载的时候,必须重新建立一个ramdisk,不能存放很大的空间,当然,每次arm重新启动以后, 就必须建立新的文件系统,比较麻烦,也很不爽,这个工作以后来完成,当然,如果有朋友完成的话,大家可以共享。dAkLinux联盟

2、usb的开发还没有完成,如果完成的话,就可以直接播放usb 里面的音乐文件了,那可是太爽了。dAkLinux联盟

3、lcd设计没有完成,完成了就可以看电影了。dAkLinux联盟

dAkLinux联盟

总结:个人感觉,inux真的是一个很好的东西,大家好好做吧,有什么新的东西可以共享。因为我是教师,所以写的比较详细,在网上经常可以看到很多的帖子,经常有一种找不着北的感觉,因为很多细节没有说清楚,经常会做不下去,大家以后可以写的详细点,便于交流。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有