MPlayer移植到mini2440开发板
- 格式:doc
- 大小:35.50 KB
- 文档页数:2
Linux 2.6.37内核移植到Mini2440(一)Linux 2.6.37内核移植到Mini2440(一)Linux 2.6.37内核移植到Mini2440(一)一、平台说明1. 主机环境Fedora 9 .6.33.3-85.fc13.i686.PAE 2GB SDRAM2. 目标机环境n 开发板:Mini2440S3C2440A-40n Nor Flash: SST39VF1601 2MBn NAND Flash: k9f2g08u0B 256MBn SDRAM: HY57v561620 64MB n 内核:linux-2.6.37n Bootloader: u-boot-2009.113. 交叉链arm-none-linux-gnueabi-gcc (ctng-1.6.1) 4.4.3(mini2440开发板自带)arm-inux-4.4.3二、下载内核:1) linux-2.6.37.tar.bz22) 解压linux-2.6.37.tar.bz2到如:/mywork/kernel3) 进入linux-2.6.37文件夹4) 修改交叉编译器在内核根目录下,编辑Makefile,找到ARCH=。
修改为如下内容。
注意,行后面的//是注释,不要输入!【技巧】为了让vi中显示行号,执行如下命令即可:#echo “set nu ”>~/.vimrc#vi MakefileARCH ?= armCROSS_COMPILE ?= arm-linux-//这个是交叉编译工具保存退出5) 生成默认.config配置文件说明,在内核代码移植到时候,常常指定文件夹为/的什么,这里的根是指内核文件夹的根。
可以通过复制arch/arm/configs/mini2440_defconfig生成.config,或执行如下命令生成。
#cp arch/arm/configs/mini2440_defconfig .config //此方法可能行不通#make mini2440_defconfig【说明】如果配置乱套了,想重新配置,可以执行如下命令,重新从该步骤开始:#make distclean //清除所有的配置,并删除.config。
郑州轻工业学院校外实习报告实习名称:MiNI2440移植Uboot姓名:冯相楠院(系):计算机通信与工程学院专业班级:嵌入式软件14-2学号:541413430208指导教师:韩雪琴主要实习单位:郑州轻工业学院成绩:时间:2016年6月10日至2016年6月17日一、实习目的MiNI2440移植Uboot。
二、实习内容1、任务与要求1.移植uboot到mini2440,使其可以在nor flash中运行2.支持DM9000网卡3.支持nor flash读写主机:VMWare--redhat 5开发板:Mini2440--256MB Nand编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2008.10.tar.bz22、设计思路1.选择移植参考开发板1.1 首先选择MCU相同的开发板,在uboot-2008.10中不支持MCU为s3c2440芯片的开发板1.2没有找到MCU相同的参考开发板,选择CPU相同的参考开发板,s3c2440的cpu为arm920T,smdk2410的cpu也是arm920T,选择smdk2410作为参考开发板。
2.在顶层makefile中为开发板添加新的配置选项(红色部分为添加代码,下同)smdk2410_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0mini2440_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0注释:增加配置选项,使make mini2440_config得以进行,为make提供编译环境和设置编译选择路径;unconfig执行@rm -f $(obj)include/config.h$(obj)include/config.mk \$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep操作,该操作删除原有的配置;@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0执行根目录下的mkconfig脚本,后面几个为传入该脚本的参数,其中$(@:_config=) 的值为mini2440,mkconfig脚本根据传入的参数对mini2440编译环境进行配置.3.修改cpu/arm920t/start.s3.1修改编译条件使其支持s3c2440136 /*added by snowboyyzx mini2440*/137 #if defined(CONFIG_S3C2400) ||defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)138 /* turn off the watchdog */3.2添加寄存器的定义151 /*added by yzx for mini2440,register define base on the table of s3c2440 datesheet*/152 #define CLK_CTL_BASE 0x4c000000 //基地址153 #define MDIV_405 0x7f << 12154 #define PSDIV_405 0x21155 #define UPLL_MDIV_48 0x38 << 12156 #define UPLL_PSDIV_48 0x22157 #define MDIV_200 0xa1 << 12158 #define PSDIV_200 0x31上述定义是根据芯片手册来设置的MDIV相应的数据之所以要左移12位是因为它在对应的寄存器的12-19位,将pdiv和sdiv放在一起用16进制表示,因为pdiv正好从第四位开始取值。
PERL 移植到ARM(mini2440)过程详解作者:万升级日期:2011-11-30使用的环境:Host: Linux version 2.6.31.5-127.fc12.i686安装i386 perl 5.10.0交叉编译使用 perl-5.10.0.tar.gz源码GCC: gcc version 4.4.2 (交叉编译环境由友善之臂提供的toolchain工具)相关包下载源码包: perl-5.10.0.tar.gz交叉编译包: perl-5.10.0-install.tar.gz/src/5.0/perl-5.10.0.tar.gz/downloads183/ebook/85856388perl-5.10.0-inst all.tar.gz编译过程上传包:把上面下载的两个包上传到编译环境的同一个目录中,如:/home/swan/perl5 如下:解压包:tar -zxvf perl-5.10.0-install.tar.gz解压包后,生成下面的一些文件-rwxr-xr-x 1 swan epdev 808 2009-07-19 02:11install-rwxr--r-- 1 swan epdev 175088 2009-07-19 02:05perl-5.10.0-cross.patch-rwxr-xr-x 1 swan epdev 9813068 2011-11-30 15:55 perl-5.10.0-install.tar.gz-rwxr-xr-x 1 swan epdev 15595020 2011-11-30 15:55 perl-5.10.0.tar.gzdrwxr-xr-x 4 swan epdev 4096 2009-07-19 01:39usr修改安装配置文件installvi install修改前:#!/bin/sh#tar -xzvf $PKG/perl-5.10.0.tar.gz#patch -Np0 -i perl-5.10.0-cross.patchsed -i 's/arm-unknown-linux-gnu-/arm-926ejs-linux-/' \perl-5.10.0/Cross/Makefilesed -i '/^PERL =/c\PERL = ../miniperl-cross' perl-5.10.0/utils/Makefile.SHsed -i -e '/^generate_uudmap/c\generate_uudmap\\\$(EXE_EXT): generate_uudmap.c' -e'/$(CC).*generate_uudmap/c\ gcc \\\$(LDFLAGS) -o generate_uudmap generate_uudmap.c\\\$(libs)' perl-5.10.0/Makefile.SHsed -i -e 's/\.\/perl installperl/\.\/miniperl-cross installperl/' \-e '/$(MAKE) extras.install/d' \-e '/\.\/perl installman/c\ @echo installman \$(DESTDIR)' \perl-5.10.0/Makefile.SH#mkdir -p $PKG/perl-5.10.0#rm -rf $PKG/perl-5.10.0/*#cd perl-5.10.0/Cross#make ARCH=arm CROSS_COMPILE=arm-926ejs-linux-#make DESTDIR=$PKG/perl-5.10.0 install修改后:#!/bin/shtar -xzvf $PKG/perl-5.10.0.tar.gzpatch -Np0 -i perl-5.10.0-cross.patchsed -i 's/arm-unknown-linux-gnu-/arm-926ejs-linux-/' \perl-5.10.0/Cross/Makefilesed -i '/^PERL =/c\PERL = ../miniperl-cross' perl-5.10.0/utils/Makefile.SHsed -i -e '/^generate_uudmap/c\generate_uudmap\\\$(EXE_EXT): generate_uudmap.c' -e'/$(CC).*generate_uudmap/c\ gcc \\\$(LDFLAGS) -o generate_uudmap generate_uudmap.c\\\$(libs)' perl-5.10.0/Makefile.SHsed -i -e 's/\.\/perl installperl/\.\/miniperl-cross installperl/' \-e '/$(MAKE) extras.install/d' \-e '/\.\/perl installman/c\ @echo installman \$(DESTDIR)' \perl-5.10.0/Makefile.SHcd perl-5.10.0/Crossmake ARCH=arm CROSS_COMPILE=arm-linux-make DESTDIR=$PKG/perl-5.10.0 install红色字体表示已修改过的,可以根据实际情况修改相应的路径和宏命令执行脚本进行交叉编译./install在编译过程中如何出现一些错误,请检查install配置是否修改正确,特别是make ARCH=armCROSS_COMPILE=arm-linux-这个需要重点注意,还有就是路径一定要正确.编译成功后,出现下面的内容/usr/lib/perl5/5.10.0/pod/perlxs.pod/usr/lib/perl5/5.10.0/pod/perlxstut.pod/usr/lib/perl5/5.10.0/pod/a2p.podinstallman /home/swan/perl5/perl-5.10.0/Cross/perl-5.10.0make[2]: Leaving directory `/home/swan/perl5/perl-5.10.0'make[1]: Leaving directory `/home/swan/perl5/perl-5.10.0'[swan@devhost perl5]$配置开发板内容1)编译成功后,把perl-5.10.0目录中生成的miniperl文件移植到开发板上的/bin目录下并在开发板上建立链接:Chmod +x miniperl //赋予可执行权限ln –sf miniperl perl //建立链接2)将解压perl-5.10.0-install.tar.gz这个包所生成的usr目录中的lib/perl5/5.10.0 下的所有文件移植到开发板的/usr/lib/perl5/5.10.0中3)开发板上的移植工作已经完成.测试一下,是否安装成功, 运行perl –v检查perl的版本信息perl –v出现以下的信息表示移植成功.[root@FriendlyARM /bin]# perl -vThis is perl, v5.10.0 built for arm-linuxCopyright 1987-2007, Larry WallPerl may be copied only under the terms of either the Artistic License or theGNU General Public License, which may be found in the Perl 5 source kit.Complete documentation for Perl, including FAQ lists, should be found onthis system using "man perl" or "perldoc perl". If you have access to theInternet, point your browser at /, the Perl Home Page.Perl脚本测试以及错误解析1)编写perl测试脚本,测试arm板上的perl的基本功能。
Mplayer在ARM9(2440)上的移植首先、建立节省时间的调试平台:笔记本、台式机、ARM9板笔记本: 用于交叉编译台式机: 用于串口终端控制目标板挂载虚拟机: mount -t nfs -o nolock 192.168.1.3:/root /mnt/nfs目标板挂载SD卡: mount /dev/mmcblk0 /mnt/sd一、交叉编译libmad由于MPlayer中默认的mp3解码器是mp3lib,使用的是浮点数运算,相当占用CPU资源,故在编译的时候可以使用libmad进行音频输出,使用之前需要自己手动编译libmad,保证交叉编译器能够找到libmad库以及头文件,编译时增加--enable-mad就可以了。
利用mad解码MP3文件,可以看到CPU 占用率降到了18左右,得到验证。
1)自己下载libmad包(libmad-0.15.1b.tar.gz)2) 配置命令 ./configure --enable-fpm=arm --host=arm-linux--disable-shared --disable-debugging--cc=arm-linux-gcc--prefix=/opt/toolchains/arm920t-eabi/lib(就是MPlayer需要的头文件和库路径)3) #make #make install,这样就可以在/opt/toolchains/arm920t-eabi/lib目录下多了include和lib目录二、交叉编译MPlayer1) 配置命令 ./configure --cc=arm-linux-gcc--host-cc=gcc(或在makefile中224行把--host-cc改成gcc)--enable-cross-compile --target=arm-armv41-linux--enable-linux-devfs(虚拟设备) --disable-win32dll--disable-win32waveout --disable-mencoder--disable-iconv --disable-live--disable-dvdnav --disable-dvdread--disable-dvdread-internal --disable-libdvdcss-internal--enable-libavcodec_a --enable-mad--disable-mp3lib --enable-fbdev--enable-ossaudio -- enable-static--disable-armv5te --disable-ramv6--with-extraincdir=/opt/toolchanis/arm920t-eabi/lib/include--with-extralibdir=/opt/toolchanis/arm920t-eabi/lib/libnote: 配置成功之后,#make ,可执行程序在该目录下,没指定安装目录不需要#make install 2)播放mp3测试#mplayer -ac mad 1.mp3-ac mad 是告诉MPlayer使用mad解码,可以看到CPU占用率降到了18左右。
移植Madplayer到Mini2440嵌入091-03-冯艳嵌入091-04-王丽新一、开发环境说明●硬件环境:mini2440开发板(nand 128M,SDRAM 64M) 宿主机:xp+vmware+Linux Red Hat 5 (2.6.18-164.el5)●软件环境:Linux下编译器arm-linux-gcc-4.3.2 with EBAI●准备所用的软件包:madplay-0.15.2b.tar.gzlibmad-0.15.1b.tar.gzlibid3tar-0.15.1b.tar.gzzlib-1.2.5.tararm-linux-gcc-4.4.3.tar.gzlibstdc++[1].so.6.0.10(库文件)二、安装交叉编译器1.把以上准备的软件包arm-linux-gcc-4.4.3.tar.gz放在linux中,及/tmp/arm-gcc2.解压此软件包在此目录下tar -zxvf arm-linux-gcc-4.4.3.tar.gz3.添加环境变量,在 /etc/profile 中加入exportPATH=$PATH:/tmp/opt/FriendlyARM/toolschain/4.4/3/bin4.要使环境变量生效,使用如下命令source /etc/profile5.检测路径是否生效echo $PATH6. 编写一个hello.c程序进行测试Arm-linux-gcc –o hello hello.c出现如下状况7.对上状况做如下修改:执行strings /usr/lib/libstdc++.so.6 | grep GLIBC没有GLIBCXX_3.4.9结果如下:8.执行ls -l /usr/lib/libstdc++.so.6出现结果如下:(1)将准备的库文件libstdc++[1].so.6.0.10放在/usr/lib下(2)然后删除原来的软连接rm /usr/lib/libstdc++.so.6(3)再执行ls -l /usr/lib/libstdc++.so.6(4)出现ls :/usr/lib/libstdc++.so.6:没有那个文件或目录(5)重新做新链接ln -s/usr/lib/libstdc++[1].so.6.0.10/usr/lib/libstdc++.so.6a.重新编译一下hello.c文件b. # arm-linux-gcc –o hello hello.cc.没有出现错误d.查看文件的运行平台到此交叉编译器安装成功三、mp3 播放器madplay 移植(此时是在linux下播放mp3)1.建立工作目录,拷贝原软件包在/opt/madplay目录,并以此为工作目录#cd /opt#mkdir madpaly#cd madplay#mkdir tarball src-x86 src-arm target-x86 target-arm目录说明:tarball 目录用来存放所有的源代码包src-x86 目录用来存放X86 版本的所有源代码文件src-arm 目录用来存放ARM 版本的所有源代码文件target-x86 目录是X86 版本的安装目录target-arm 目录是ARM 版本的安装目录2.接下来把准备的源代码包放在tarball目录下方法:通过xftp把上面准备的四个代码包放在/opt/madpaly/tarball下解压源代码包,执行以下命令#cd tarball#for f in $(ls *.tar.gz); do tar xvzf $f –C ../src-x86 ; done结果如图:3.编译madplay所依赖的库文件(1)编译安装libid3tag#cd /opt/madplay/src-x86/libid3tag-0.15.1b #./configure --prefix=/opt/madplay/target-x86 #make#make install出现如下图:(2)编译安装libmad#cd ../libmad-0.15.1b#./configure --prefix=/opt/madplay/target-x86 #make#make install出现的现象如上图……(3)编译安装madpaly#cd madplay-0.15.2b#./configure--prefix=/root/madplay/target-x86出现的错误如下:(4).根据提示我们要设置CPPFLAGS 环境变量,采用如下参数重新配置:#./configure --prefix=/opt/madplay/target-x86 CPPFLAGS=-I/opt/madplay/target-x86/include LDFLAGS=-L/opt/madplay/target-x86/lib执行结果如下图:这样说明配置成功,输入下一个命令开始编译:#make#make install执行完毕,可执行文件将安装在我们指定的目录:/opt/maplay/target-x86目录中4.测试PC版的madplay拷贝一首mp3(我们准备了一首love )文件到madplay(即src-x86/bin)所在的目录,执行#./madpaly test.mp3注:执行前需先给madplay增加权限如下图:四、编一个 shell脚本生成madplay 和库文件 libvi hello.sh#!/bin/shMADPLAY_DIR=/opt/madplaySRC_DIR=src-armTARGET_DIR=$MADPLAY_DIR/target-armtar xvzf ./tarball/libid3tag-0.15.1b.tar.gz -C $SRC_DIR tar xvzf ./tarball/libmad-0.15.1b.tar.gz -C $SRC_DIR tar xvzf ./tarball/madplay-0.15.2b.tar.gz -C $SRC_DIR tar xvjf ./tarball/zlib-1.2.5.tar.bz2 -C $SRC_DIRexport CC=arm-linux-gcccd $SRC_DIR/zlib-1.2.5./configure --prefix=$TARGET_DIRmake && make installcd ../..cd $SRC_DIR/libid3tag-0.15.1b./configure --host=arm-linux --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/includeLDFLAGS=-L$TARGET_DIR/libmake;make installcd ../../cd $SRC_DIR/libmad-0.15.1b./configure --host=arm-linux --prefix=$TARGET_DIRmake;make installcd ../..cd $SRC_DIR/madplay-0.15.2b./configure --host=arm-linux --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/includeLDFLAGS=-L$TARGET_DIR/libmake;make installcd ../../运行后生成madplay 和库文件 lib (target-arm下的lib)运行时若权限不够则 chmod 777 hello.sh四、将在Linux下运行成功的madplay移植到开发板上注:我们是经过U盘移植的(直接把U盘插在开发板上)1.把上面准备好的madplay播放器和所生的的库文件放在U盘中2.在 / 下发现udisk,那就是U盘挂在上了3.将madplay cp 到 /usr/bin4.将准备的歌曲(我们同样用了上次的love.mp3)也同时放在 /uar/bin 下(1)将所需的lib下的库文件传入/liblibid3tag.alibid3tag.solibid3tag.so.0libid3tag.so.0.3.0libz.alibz.solibz.so.1libz.so.1.2.5pkgconfig文件夹(2)进入/usr/bin执行 ./madplay love.mp3也表明移植成功了。
Mini2440之Linux移植开发完全手册2010-9-9简介本手册主要介绍了Linux-2.6.32.2内核的详细移植过程,它包含了友善之臂提供的几乎所有驱动程序的移植或编写、测试等;本手册还详细介绍了mini2440所用文件系统的构建过程,很多用户都了解并体验过我们所提供的独具特色的、超级实用的文件系统,在这里,我们将向你一一详细的介绍它们是如何实现的。
上海嵌入式家园-开发板商城目录目录 (2)第一章Git的安装和使用(基于Fedora 9) (3)1.1 下载Git源代码 (3)1.2 安装Git (3)1.3 检查版本号 (3)第二章关于supervivi和开发环境 (5)2.1 关于supervivi (5)2.1.1 最新的supervivi及分区表 (5)2.1.2 如何识别开发板上supervivi版本 (5)2.1.3如何恢复或者更新开发板的supervivi (7)2.1.4 supervivi功能一览表 (7)2.1.5 如何使用其他开源的bootloader (8)2.1.6 为什么要使用最新的supervivi (9)2.2 关于开发平台 (9)2.3关于交叉编译器 (10)2.3.1 在何处获取 (10)2.3.2 关于ABI和EABI (11)第三章 Linux-2.6.32.2内核移植详细步骤 (12)3.1 引子 (12)3.2 获取Linux内核源代码 (12)3.3 解压内核源代码 (13)3.4 指定交叉编译变量 (14)3.5 克隆建立自己的目标平台 (15)3.5.1 关于机器码 (15)3.5.2 修改时钟源频率 (17)3.5.3 从SMDK2440到MINI2440 (18)3.5.4 编译测试 (19)3.6 关于内核配置菜单中的mini2440选项 (22)3.7 移植Nand驱动并更改分区信息 (25)3.7.1 Linux-2.6.32.2内核所支持的Nand Flash类型 (25)3.7.2 修改Nand Flash分区表 (26)3.7.3 从启动信息中查看分区表 (30)3.8 移植yaffs2 (32)3.8.1 获取yaffs2源代码 (32)3.8.2 为内核打上yaffs2补丁 (33)3.8.3 配置和编译带YAFFS2支持的内核 (34)3.8.4 烧写到开发板运行测试 (36)上海嵌入式家园-开发板商城第一章Git的安装和使用(基于Fedora 9)Git 是用于 Linux 内核开发的版本控制工具。
作者:广东海洋大学09届钟涛硬件平台:RedHat Linux 5、mini2440(arm9)开发板软件:arm-Linux-gcc-4.3.21.下载库文件libmad-0.15.1b.tar.gz并解压到/mywork/ 文件夹输入:cd /mywork/libmad/libmad-0.15.1b //打开文件夹在此文件路径下输入:./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/opt/toolchains/arm920t-eabi/libCC=arm-linux-gcc在make之前,首先解决一个问题先,要不后面make会出现问题。
即在此文件路径下输入:vi Makefile //打开Makefile文件找到Makefile并打开后,找到“--fforce-mem”删除就OK了,既“--fforce-mem”整个删除掉,原因是gcc 4.3.2已经将其去除了,所以会出现上面的错误删除后:输入:wq!然后输入:make输入:make install好了,第一步完成了!2. 下载MPlayer-1.0rc2.tar.gz也解压到/mywork/中。
输入:cd /mywork /MPlayer-1.0rc2输入:./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static--disable-win32dll --disable-ivtv --disable-dvdread --disable-dvdread-internal--disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder--disable-live --disable-mp3lib --enable-mad--with-extraincdir=/opt/toolchains/arm920t-eabi/lib/include--with-extralibdir=/opt/toolchains/arm920t-eabi/lib/lib --enable-libavcodec_a--language=en --disable-live 2>&1 | tee logfile同样在make之前也要修改两个地方,不改后面make会出现错误。
Mplayer在s3c2440上的移植无论是作为何种用途,在s3c2440这块以主频为最大亮点的开发板上,不支持各种媒体的播放着实是件非常尴尬的事。
所以我们要为她添加对媒体播放的支持。
首选播放器当然是MPlayer,这里我们选择的是最新的MPlayer-1.0rc2版本,交叉编译器仍然选择arm-linux-gcc 3.4.1。
说明:虽然我们这里用的是最新的1.0rc2版本,但是对于我们需要移植的目标板2440而言,一些特性不能被很好支持。
所以不仅要做一些参数上的配置,还需要编译一些附加的库来提供支持。
1.编译libmad由于我们的s3c2440开发板并没配备专门用于音频或者视频解码的DSP 芯片,所有解码任务均有CPU完成。
由于arm本身没有浮点运算单元,所有浮点运算均由软件模拟实现,速度之慢可想而知。
而MPlayer自带的音频解码器为完全浮点运算的mp3lib,另一个ffmp3库启动时有明显的延迟,而且在解码某些MPG文件的时候会有兼容性问题,所以我们需要先编译音频解码库mad,为MPlayer的音频解码提供支持。
参考configure的帮助后,很容易写出如下命令行:配置完成后,make,接着make install。
成功后就能得到相应的mad库文件了,一个include文件夹,一个lib文件夹。
2.配置MPlayer--enable-cross-compile:开启交叉编译模式。
--host-cc=gcc--cc=arm-linux-gcc--as=arm-linux-as --ar=arm-linux-ar --ranlib=arm-linux-ranlib:分别指定host和target端编译器的相关信息--target=armv4l-linux:MPlayer支持很多架构的处理器,此处我们选择的2440所使用的armv4l-linux。
注:在早期的pre版本中,必须要指定armv4l-linux,否则相应的优化无法被编译进目标文件。
Mini2440下移植媒体播放器MadPlayer全过程开发环境:操作系统:readhat linux5 版本:2.6.18-164.el5硬件平台:mini2440(友善之臂)gcc交叉编译环境:arm-linux-gcc-4.4.3.tar.gz版本:gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)一、mp3 播放器madplay移植过程1.准备文件如下文件(从网上下载)arm-linux-gcc-4.4.3.tar.gz(交叉编译gcc所用到文件)madplay-0.15.2b.tar.gz(madplay移植所用到文件)libmad-0.15.1b.tar.gz(madplay移植所用到文件)libid3tag-0.15.1b.tar.gz(madplay移植所用到文件)zlib-1.2.5.tar.gz(lib库所需要的文件)libstdc++.so.6.0.10(版本问题所需要的链接)2.打开虚拟机,由于版本问题需要进行如下操作1)删除/usr/lib/libstdc++.so.6文件(#rm /usr/lib/ libstdc++.so.6)2)把下载文件libstdc++.so.6.0.10复制到/usr/lib/下(#cplibstdc++.so.6.0.10 /usr/lib/)3)(#cd /usr/lib/)4)建立链接(#ln–s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6)5)查看链接是否成功(#strings /usr/lib/libstdc++.so.6 | grep GLIBCXX)如下图3.建立交叉编译环境1)将arm-linux-gcc-4.4.3.tar.gz压缩文件复制到/tmp(#cp arm-linux-gcc-4.4.3.tar.gz /tmp)2)解压缩文件arm-linux-gcc-4.4.3.tar.gz(#tar xvzf arm-linux-gcc-4.4.3.tar.gz –C /)cd3)修改文件分别在/root/.bashrc和/etc/profile文件下添加如下一行export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin(#gedit /root/.bashrc)和(#gedit /etc/profile)如下图:保存并退出4)重新登录系统交叉编译环境生效(在字符界面用命令logout,在图形界面直接<注销>)5)重新登录后在命令行输入#arm-linux-gcc-4.4.3–v显示如下图交叉编译成功(可以编写一个c程序测试生效)4.播放器移植1)在根目录如下文件/opt/FriendlyARM/下建立mini2440,并在mini2440文件夹下建立madplay,再在madpalay文件夹下建立四个文件夹tarball src-x86 src-arm target-arm (#cd /opt/FriendlyARM/)(# mkdir mini2440)(#cd mini2440)(#mkdirmadplay)(#cd madplay)(#mkdirtarball src-x86 src-arm target-arm)2)把压缩包madplay-0.15.2b.tar.gzlibid3tag-0.15.1b.tar.gzlibmad-0.15.1b.ta r.gz放入/opt/FriendlyARM/mini2440/madplay/tarball(#cpmadplay-0.15.2b.tar.gz libid3tag-0.15.1b.tar.gzlibmad-0.15.1b.tar.gz /opt/FriendlyARM/ mini2440/ madplay/ tarball )3)解压缩源代码madplay-0.15.2b.tar.gzlibid3tag-0.15.1b.tar.gzlibmad-0.15 .1b.tar.gz(#cd /opt/FriendlyARM/ mini2440/ madplay/ tarball)(#for f in $(ls *.tar.gz); do tar xvzf $f –C ../src-x86 ; done)4)编译madplay所依赖的库文件a) libid3tag(#cd/opt/FriendlyARM/mini2440/madplay/src-x86/libid3tag-0.15.1b)(#./configure--prefix=/opt/FriendlyARM/mini2440/madplay/target-x86)(#make)(#make install)b) libmad(#cd/opt/FriendlyARM/mini2440/madplay/src-x86/libmad-0.1 5.1b)(#./configure--prefix=/opt/FriendlyARM/mini2440/madplay/target-x86)(#make)(#make install)由于gcc版本问题需要删除/opt/FriendlyARM/mini2440/madplay/target-x86/libmad-0.15.1b/Makefile文件中的"-fforce-mem"字符串(#cd /opt/FriendlyARM/mini2440/madplay/target-x86/ libmad-0.15.1b/)(#geditMakefile)以上过程完毕,将在target-x86 目录出现编译madplay所依赖的库文件和头文件。
From:/u2/69999/showart_2036954.html移植Android 到mini2440By Jeef2009年7月17日1 移植环境:Target:友善之臂mini2440HOST OS:Fedora 8kernel Version:Linux-2.6.25编译器:mini2440光盘所提供的编译器2 内核移植(一):2.1 参考资料感谢一下大侠提供的资料,链接如下./u2/85263/showart_1729098.html/u/26691/showart_468007html/home/space.php?uid=5/tekkamanitachi2.2 进展与缺陷:时间:JUL,17th,2009进展:(1)能够显示Android的Home界面,大钟已经显示在屏幕上;(2)驱动程序方面实现了,触摸屏、LCD,RTC的驱动缺陷:(1)触摸屏触摸后监管在控制台上打印坐标,不过Android无任何反应(2)时钟也静止在那里2.2 移植准备在移植之前要对移植的对象有一个大致的了解。
如果你从网站上下载一个主线纯净的内核,这个移植主要要实现两个方面的内容,一是Android与主线内核不同的部分,二是与你移植的硬件平台相关的部分。
我采用的思路是下载Android发布的内核,然后去了Android 中与G1手机硬件平台相关的部分,留下Android内核对主线内核更改但与硬件平台无关的部分,并添加与mini2440硬件平台相关的部分。
下载Android内核:/p/android/downloads/list上下载linux-2.6.25-android-1.0_r1.tar.gz关于Android内核与主线Linux内核不同的地方,夜猫子大侠已经做了分析,分析的比较到位,现在拷贝在这里,标注红色的为与硬件相关的,标注蓝色的是硬件无关的,黑色的部分是笔者目前还不清楚的,有待研究:(1)基于ARM架构增加Gold-Fish平台,相应增加的目录如下:kernel/arch/arm/mach-goldfishkernel/include/asm-arm/arch-goldfish(2)增加了yaffs2 FLASH文件系统,相应增加的目录为:kernel/fs/yaffs2实际上,Android包经过编译后生成的system.img和ramdisk.img文件就是yaffs2格式的包.3. 增加了Android的相关Driver,相应目录为:kernel/drivers/android主要分为:Android IPC系统: Binder (binder.c)Android 日志系统: Logger (logger.c)Android 电源管理: Power (power.c)Android 闹钟管理: Alarm (alarm.c)Android 内存控制台: Ram_console (ram_console.c)Android 时钟控制的gpio: Timed_gpio (timed_gpio.c)4. 增加了switch处理, 相应的目录为:kernel/drivers/switch/5. 增加了一种新的共享内存处理方式, 相应增加的文件为:kernel/mm/ashmem.c6. 其他为Linux-2.6.25内核所做的补丁等等,例如BlueTooth, 在此不做详细分析另外GoldFish平台相关的驱动文件如下:1. 字符输出设备:kernel/drivers/char/goldfish_tty.c2. 图象显示设备: (Frame Buffer)kernel/drivers/video/goldfishfb.c3. 键盘输入设备:kernel/drivers/input/keyboard/goldfish_events.c4. RTC设备: (Real Time Clock)kernel/drivers/rtc/rtc-goldfish.c5. USB Device设备:kernel/drivers/usb/gadget/android_adb.c这里只要用了支持Android的ADB工具,用于调试6. SD卡设备:kernel/drivers/mmc/host/goldfish.c7. FLASH设备:kernel/drivers/mtd/devices/goldfish_nand.ckernel/drivers/mtd/devices/goldfish_nand_reg.h8. LED设备:kernel/drivers/leds/ledtrig-sleep.c9. 电源设备:kernel/drivers/power/goldfish_battery.c10. 音频设备:kernel/arch/arm/mach-goldfish/audio.c11. 电源管理:kernel/arch/arm/mach-goldfish/pm.c12. 时钟管理:kernel/arch/arm/mach-goldfish/timer.c2.3 移植过程:以下内容摘自mini2440论坛/bbs/read.php?tid-1342.html,我的内核版本是2.6.25,是通常内核移植的基本步骤,红色部分是我Anroid系统对内核的特性要求一、解压下载的内核,二、修改内核源码根目录下的Makefile文件#ARCH ?= arm#CROSS_COMPILE ?=arm-linux-三、修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分区信息和Nand Flash的硬件信息。
MPlayer移植到mini2440
2010-12-16上午by pinyue
硬件平台:RedHat Linux 5、mini2440(arm9)开发板
软件:arm-Linux-gcc-4.4.3(注意:交叉编译器使用前需注意测试是否可以正常使用,此版本很可能会测试报错(可能是版本较高的问题吧),解决方法是:根据提示修改一个连接,删除/usr/lib下的libstdc++.so.6,下载libstdc++.so.6.0.10到/usr/lib中,在/usr/lib目录下写命令:ln –s libstdc++.so.6.0.10 libstdc++.so.6建立新连接)
一、首先编译安装库文件
1.下载库文件libmad-0.15.1b.tar.gz并解压到/mywork/libmad
2.cd /mywork/libmad/libmad-0.15.1b
3../configure CC=arm-linux-gcc --host=arm-linux --disable-shared
--disable-debugging --prefix=/tmp/libmab/mad
4.make
完成之后会出现错误,找到Makefile并删除“--fforce-mem”就OK了,原因是gcc 4.4.3已经将其去除了,所以会出现上面的错误
5.make install
二、编译安装MPlayer
6.下载MPlayer-1.0rc2.tar.gz解压到/mywork/mplayer中。
7.cd /mywork/mplayer/MPlayer-1.0rc2
8../configure --prefix=/tmp/mplayer --disable-mencoder --enable-linux-devfs
--disable-iconv --enable-network --disable-live --disable-dvdnav --disable-dvdread --disable-dvdread-internal --disable-libdvdcss-internal --enable-ftp --enable-libavcodec_a --enable-libavcodec_mpegaudio_hp --enable-mad --disable-mp3lib --disable-ivtv--enable-fbdev --enable-ossaudio --enable-cross-compile --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-static --with-extraincdir=/tmp/libmab/mad/include --with-extralibdir=/tmp/libmab/mad/lib 2>&1 |tee logfile
注意:如果不加–disable-ivtv会出现ivtv文件产生的错误。
●MPlayer不支持常见的--host来修改编译工具前缀.必须用--cc,--ar,--ranlib这样参数来修改.
●--disable-mp3lib是关闭默认的MP3解码库,--enable-mad 是使用libmad支持.
●--disable-dvbhead --disable-dvdread --disable-dvdnav --disable-dvdread-internal 都是跟DVD相关库
●--enable-fbdev 打开framebuffer支持.ARM开发板必须的.
●--enable-static 如果使用静态编译尺寸大约是8M,动态编译是6M多,这样可能是无论哪种编译方
式,mplayer都把自带的解码库链接到自身,多出2M应该是系统标准库的尺寸。
●--enable-static 设置静态连接
●--disable-mencoder 禁止编码功能
●--disable-live 禁止live 555流媒体(我也不知道是什么玩意儿。
)
●--enable-libavcodec_a 启用静态的libavcodec解码
9.在make之前修改两个地方,否则会出现不支持pld [r1]指令的问题
在MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件
和MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S文件的开始处写入
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
然后make
10.make install
会出现一个错误,可以不管它,因为此时mplayer已经出来了,也就是说已经成功了。
11.把mplayer通过tftp软件传到开发板中,在传一个视频文件eg:new.avi
12.输入./mplayer new.avi -framedrop -quiet -vf rotate=1,scale=240:320测试
为什么没有声音呢???上网查询解决……….
解决方法:
mkdir -p /dev/sound
ln -s /dev/dsp /dev/sound/
原因:目标系统上有/dev/dsp 音频设备文件,只是OSS音频驱动需要的是/dev/sound/dsp 设备文件,这问题的简单解决方法是建一个符号链接,当然这两条命令可以写在系统的启动文件的适当位置,即修改系统的/etc/init.d/rcS文件。
至此MPlayer移植成功……此移植过程参考大量水友的操作步骤,在此深表感谢!!!。