本文是按照IMX283配套光盘的流程重新编译uboot和uImage将光盘中的gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 解压缩到系统某个文件夹下(我解压缩到/home/host/soft下)
然后~/.bashrc添加一行:
export PATH=$PATH:/home/host/soft/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/
然后重新打开bash,执行下面的命令:
host@debian:~/nfs/imx283$ arm-fsl-linux-gnueabi-gcc -v Using built-in specs. Target: arm-fsl-linux-gnueabi Configured with: /work/arm-toolchains/tmp/src/gcc-4.4.4/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-fsl-linux-gnueabi --prefix=/work/arm_fsl_gcc_4.4.4_multilib --with-sysroot=/work/arm_fsl_gcc_4.4.4_multilib/arm-fsl-linux-gnueabi/multi-libs --enable-languages=c,c++ --with-pkgversion=4.4.4_09.06.2010 --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-mpfr=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-ppl=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-cloog=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-prefix=/work/arm_fsl_gcc_4.4.4_multilib/arm-fsl-linux-gnueabi/multi-libs --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long --enable-multilib --with-system-zlib --enable-lto Thread model: posix gcc version 4.4.4 (4.4.4_09.06.2010)
如果提示错误,那么说明路径配置有误,需要重新将其配置好。
解压bootloader.tar.bz2,生成两个文件夹:
mx-bootlets-src-10.12.01 u-boot-2009.08
uboot需要分别编译这两个文件夹,最后才能生成需要的uboot。
进入 U-Boot-2009.08目录,进行清理、配置和编译:
$ cd Boot Loader/ U-Boot-2009.08
$ make ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi- distclean $ make ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi- mx28_evk_config
$ make ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi-
将uboot拷贝到mx-bootlets-src-10.12.01下,
$ cp u-boot ../imx-bootlets-src-10.12.01/
$ cd ../imx-bootlets-src-10.12.01/
$ ./build
生成的imx28_ivt_uboot.sb即为所需要的uboot文件。
下面编译linux内核。
解压linux-2.6.35.3.tar.bz2:
tar xf linux-2.6.35.3.tar.bz2
然后进行配置和编译:
$ make ARCH=arm EasyARM-iMX283_defconfig
$ make uImage
生成的uImage即为需要的内核文件。
然后可以用新编译出的内核重新引导系统,系统运行一切正常,与原版内核的输出信息完全一致。
另外也可以用make zImage生成zImage,然后再用imx-bootlets-src-10.12.01下的build工具来生成imx28_ivt_linux.sb。
这样生成的内核文件可以不需要uboot支持即可重新启动。
这样就完成了对uboot和linux内核的编译,有兴趣的可以添加其他功能,相信会更有趣。