NXP

Freescale iMX6的u-boot和kermel编译,并生成.dtb

2019-07-12 13:09发布

前提:         ①.已有u-boot源码,要求包含配置文件;         ②.已有kernel源码,要求包含配置文件(此处使用了imx_v7_defconfig)、imx6solo_RIoTboard.dts (用于生成dtb文件)         ②.安装了LTIB,此处将借用LTIB的工具链(?)        ③.采用的开发板为RIoTboard  iMX6 Solo,其它开发板借鉴。
一、编译u-boot:        cd到u-boot源码根目录:         1、export PATH=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/:$PATH         2、export ARCH=arm         3、export CROSS_COMPILE=arm-none-linux-gnueabi-         4、make mrproper         5、make mx6solo_RIoTboard_config         6、make         ==》u-boot 编译成功,生成了u-boot.bin,但下载需要u-boot.imx;         7、./tools/mkimage -n board/freescale/mx6solo_RIoTboard/mx6solo_RIoTboard.cfg -T imximage -e 0x10008000 -d u-boot.bin u-boot.imx         ==》生成了u-boot.imx,可以用于下载。 二、编译kernel:
        需要先安装lzop:sudo apt-get install lzop         cd到kernel源码根目录:
        1、export PATH=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/:$PATH         2、export ARCH=arm         3、export CROSS_COMPILE=arm-none-linux-gnueabi-         (忽然发现不需要上面3步有时也行)         4、make imx_v7_defconfig         5、make uImage LOADADDR=0x10008000         ==》生成了uImage,可用于下载。
        补充:
        ①.可使用make menuconfig来配置内核;
       ②.安装完LTIB后第一次使用make需要先运行一次./ltib生成/opt/freescale/usr目录。 三、生成dtb文件:
        接上:         6、make imx6solo_RIoTboard.dtb         ==》生成.dtb文件。
        
         之后的补充:
        1、make uImage时的错误:                 LZO     arch/arm/boot/compressed/piggy.lzo
                /bin/sh: 1: lzop: not found
                make[2]: *** [arch/arm/boot/compressed/piggy.lzo] 错误 1
                make[1]: *** [arch/arm/boot/compressed/vmlinux] 错误 2
                make: *** [uImage] 错误 2
        解决:
        ①.安装lzo:
                wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
                ./configure --enable-shared
                make
                make install
        ②.安装lzop:
                wget 'http://www.lzop.org/download/lzop-1.03.tar.gz'
                ./configure
                make
                make install         以后这种能轻易搜到解决方案的问题就不写了。