|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
|
[ 作者:王进波 加入时间:2008-02-13 09:47:55 来自:CUBLOG
] | |
|
主机配置:winxp,vmware5.0,redhat9.0 实验箱:s3c2410,uda1341
一、移植前的准备工作 首先移植Uboot,Uimage(linux2.6.15)和ramdisk 打开串口,在超级终端上启动linux U-Boot 1.1.1 (Jul 11 2006 - 22:04:39) U-Boot code: 33F80000 -> 33F96830 BSS: -> 33F9AB18 IRQ Stack: 33f4ff7c FIQ Stack: 33f4ef7c RAM Configuration: Bank #0: 30000000 64 MB Flash: 512 kB *** Warning - bad CRC, using default environment
In: serial Out: serial Err: serial AWEN2410: 输入bootm 32000000 启动linux AWEN2410 # 好,ARM上的linux已经启动了。
二、移植声卡驱动程序 实验箱选用的是UDA1341的声卡,因此必须首先编译UDA1341的驱动,编译完成后才可以移植到实验箱上。当然,这个编译是在redhat中完成的。 驱动程序中共有三个文件:snd-s3c2410-uda1341.c,bitfield.h, Makefile. 拷贝这三个文件到自己的编译目录下 我的根目录是:#/usr/local/mp3来编译的 进入uda1341的目录,#cd uda1341 因为这个是要移植到ARM-s3c2410上的,因此,必须要用ARM的编译工具进行编译。 首先找到交叉工具,我这里是用cross_3.4.1来编译的。 #export PATH=$PATH:/usr/local/arm/3.4.1/bin #vi Makefile 修改KERNELDIR 这一行,要&移植到实验箱上的linux版本一样,否则,可能会引起版本不同导致的问题, 这一行修改如下:KERNEKDIR ?=/usr/local/linux=2.6.15 然后输入# make 进行编译,这时候,会在uda 1341目录下产生snd-s3c2410-uda1341.ko 这个就是我们要移植到ARM实验箱上的驱动程序,没有它,uda1341是不能工作的。
三、编译内核模块 因为前面在编译linux-2.6.15的时候,可能没有编译进对声卡的支持,因此应该重新编译以前的内核linux -2.6.15,相信大家一定很熟悉了哈 在linux-2.6.15目录下,make menuconfig 进入,在 device drivers Sound 选中sound card support 进入open sound system 选中open sound system 然后重新编译,这时会在根目录的linux-2.6.15/sound/(你编译kernel的目录)目录下的内核模块 soundcore.ko,在linux-2.6.15/sound/core 产生snd.ko 这就是,我们需要的linux的驱动模块。
四、开始移植工作 1、下载以下程序libid3tag,libmad,madplay。 2、下载zlib一个压缩库,libid3tag需要它 用交叉编译工具编译zlib,并且把库生成到交叉编译环境的库目录下 ./configure --prefix=/usr/local/arm/3.4.1/arm-linux. 修改Makefile. CC=arm-linux-gcc AR=arm-linux-ar rc RANLIB=arm-linux-ranlib 然后执行命令make make install 说明:--prefix是便于寻找头文件和库文件,以下同 3、编译libid3tag ./configure CC=arm-linux-gcc --host=arm-linux --disable-debugging -disable-shared --prefix=/usr/local/arm/3.4.1/arm-linux make make install 说明:--host指明库运行的环境arm-linux不是ix86-pc-linux. -disable-shared 编译器默认是动态连接共享库的。这里指明为静态连接(关键) 4、编译libmad ./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.4.1/arm-linux CC=arm-linux-gcc make make install 说明:同上 5、编译madplay ./configure --host=arm-linux CC=arm-linux-gcc --disable-debugging --disable-shared make make install
五、准备下载文件的准备 1、在redhat中,打开ftp工具,并且用网络将实验箱对结,主要是要将上面编译的文件传输到arm上。 2、设立ip地址:ifconfig eth0 192.168.3. 3、安装ftp服务器 4、建立ftp传输的文件夹: #cd /home # mkdir dsl # useradd # passwd dsl # chown dsl dsl 在dsl下,拷贝前面编译的文件:有snd.ko soundcore.ko,snd-s3c2410-uda1341.ko,madplay 还有,就是你要准备播放的mp3 这里,我准备播放的是10.mp3
六、下载开始 1、首先在串口中建立一个文件系统,这个文件系统用来保存上面要下载的文件。
knod /dev/ram b 1 1 dd if=/dev/zero of=/dev/ram 4096 mke2fs –vm0 /dev/ram 4096 mount -t ext2 /dev/ram /mnt/ramdisk cd /mnt/ramdisk 超级终端中这样操作 / $ cd /mnt/ramdisk /mnt/ramdisk $ ls lost+found /mnt/ramdisk $ 好,这样,文件系统就可以建立起来了 2、 传输文件开始,将pc机和arm 实验箱用网络线连接起来,然后,按照如下操作 Ftpget –udsl –pdsl 192.168.3.3 snd.ko snd.ko ..........................................................Soundcore.ko soundcore.ko ..........................................................Snd-s3c2410-uda1341.ko Snd-s3c2410-uda1341.ko ..........................................................Madplay madplay 最后,还要传输要播放的mp3文件哦 mnt/ramdisk $ ftpget -udsl -pdsl 192.168.3.3 10.mp3 10.mp3 ftpget: Write Error: No space left on device 后面的提示不用关心,原因是前面我得的ramdisk只有4096,不到5M,空间不够的原因,导致的结果是我么后面播放的歌曲只有前面一部分,没有关系。 3、下载完成后,基本的文件已经准备就绪了,下面就可以开始进行mp3音乐的播放。 加载模块: /mnt/ramdisk $ insmod snd.ko /mnt/ramdisk $ insmod soundcore.ko /mnt/ramdisk $ insmod snd-s3c2410-uda1341.ko 建立块专用或字符专用文件 mknod /dev/dsp c 14 3 mknod /dev/mixer c 14 0
注: dev/dsp 数字信号处理(DSP):DSP是指声卡中专门处理效果的芯片,称为效果器,对提高声卡性能很有用 /dev/mixer 混音器混音器是一台控制音频信号的提升,并将音频信号导向所指目的地的设备
4、下面可以播放音乐 mnt/ramdisk $ ./madplay --sample-rate=65535 10.mp3 其中,sample-rate=65535设置播放的频率,否则可能会引起播放速度太快 显示的界面如下:
MPEG Audio Decoder 0.15.1 (beta) - Copyright (C) awen s3c2410-uda1341: audio_set_dsp_speed:44100 prescaler:66 2000-2004 Robert Leslie et al. tty: /dev/tty: No such file or directory Title: 甜蜜蜜 Artist: 邓丽君 Genre: Blues awen s3c2410-uda1341: audio_set_dsp_speed:65535 prescaler:66 output: resampling 44100 Hz to 65535 Hz
七、 存在的问题 1、我的arm 是从nandflash启动的,前面Uboot 的移植中只用了前面的4096,不到5M的空间,导致下载的时候,必须重新建立一个ramdisk,不能存放很大的空间,当然,每次arm重新启动以后,就必须建立新的文件系统,比较麻烦,也很不爽,这个工作以后来完成,当然,如果有朋友完成的话,大家可以共享。 2、usb的开发还没有完成,如果完成的话,就可以直接播放usb 里面的音乐文件了,那可是太爽了。 3、lcd设计没有完成,完成了就可以看电影了。
总结:个人感觉,inux真的是一个很好的东西,大家好好做吧,有什么新的东西可以共享。因为我是教师,所以写的比较详细,在网上经常可以看到很多的帖子,经常有一种找不着北的感觉,因为很多细节没有说清楚,经常会做不下去,大家以后可以写的详细点,便于交流。 4: 参考文献: http://bbs.chinaunix.net/viewthread.php?tid=794077
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|
|
|
|
|