首页 / 操作系统 / Linux / S3C6410 Linux内核移植
一、 下载内核及交叉编译工具 (1)http://git.kernel.org/?p=linux/kernel/git/kki_ap/linux-2.6-samsung.git;a=summary到以上地址下载linux内核的三星分支,这里选取“2.6.28-samsung”版本。 (2) 安装4.3.1-eabi-armv6编译器. http://cs.sch.ac.kr/~choicjy/entry/MV6410-Samsung-Arm-linux-toolchain 4.3.1-eabi-armv6是三星官方为其armv6架构处理器维护的一套编译器,不过我 装起来遇到不少麻烦 首先是执行arm-linux-gcc报错 [www.linuxidc.com@linuxidc bin]$ arm-linux-gcc arm-linux-gcc: no such files or directory [www.linuxidc.com@linuxidc bin]$ 解决方法:必须将该编译器解压到/usr/local/arm/目录,因为里面有很多地方指明了绝对路径 其次是make提示mpfr库找不到 [www.linuxidc.com@linuxidc m8-Android-kernel]$ make CHK include/linux/version.h make[1]: “include/asm-arm/mach-types.h”是最新的。 CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC kernel/bounds.s /usr/local/arm/4.3.1-eabi-armv6/usr/bin-ccache/../libexec/gcc/arm-samsung-linux-gnueabi/4.3.1/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory make[1]: *** [kernel/bounds.s] 错误 1 make: *** [prepare0] 错误 2 解决方法:其实是有这个库的,就在/usr/local/arm/4.3.1-eabi-armv6/mpfr/lib 在.bashrc中添加一个环境变量 export LD_LIBRARY_PATH=/usr/local/arm/4.3.1-eabi-armv6/mpfr/lib 然后在source .bashrc即可 最后来看这个编译器有啥好处: [www.linuxidc.com@linuxidc ~]$ arm-linux-gcc -v Using built-in specs. Target: arm-samsung-linux-gnueabi Configured with: /home/scsuh/workplace/final/toolchain-script/toolchain_build_arm/gcc-4.3.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-samsung-linux-gnueabi --enable-languages=c,c++ --with-sysroot=/usr/local/arm/4.3.1-eabi-armv6 --with-build-time-tools=/usr/local/arm/4.3.1-eabi-armv6/usr/arm-samsung-linux-gnueabi/bin --enable-__cxa_atexit --enable-target-optspace --with-gnu-ld --with-pkgversion="for S3C64XX Samsung Electronics AP Development Team" --enable-shared --with-gmp=/usr/local/arm/4.3.1-eabi-armv6/gmp --with-mpfr=/usr/local/arm/4.3.1-eabi-armv6/mpfr --disable-nls --enable-threads --disable-multilib --disable-decimal-float --with-arch=armv6 --with-float=softfp --with-fpu=vfp --enable-symvers=gnu Thread model: posix gcc version 4.3.1 (for S3C64XX Samsung Electronics AP Development Team) a编译时默认使用硬件浮点单元--with-float=softfp --with-fpu=vfp b默认架构armv6 --with-arch=armv6 c有自己的mpfr库,等等. 另外可到http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite 网址下载最新的交叉编译器当前版本是“gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202”。 (3)修改Makefle文件,把arch 改为arm 把CROSS_COMPILE改为arm-none-linux-gnueabi-gcc,当然最简单的方法是从开发板厂商那里获取内核和交叉编译器。 二、 配置 这里推荐一方法,调用arch/arm/configs 目录下的默认配置单smdk6410mtd_defconfig为基础进行配置,同时可以参考现有的文档和配置单进行配置,注意点: (1)要添加ubifs文件系统支持时应先配置device driver->memory technology device下的ubi项。 (2)device drivers->character device->serial drivers: 选中samsung soc serial support取消8250……(否则会出现错误:arch/arm/plat-s3c/init.c:94: error: "CONFIG_SERIAL_SAMSUNG_UARTS" undeclared here (not in a function)); (3)system type->os timer support: 选中fixed tick timer(否则会出现错误:arch/arm/plat-s3c/time.c error) (4)cpu power management:cpu frequency scaling项取消选中(否则会出现错误:arch/arm/plat-s3c/clock.c error) 配置好后要备份配置文件,保存为ctop6410_defconfig。
收藏该网址