本文是按照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內核的編譯,有興趣的可以添加其他功能,相信會更有趣。