一、环境搭建
1、安装设备树编译器
sudo apt-get install device-tree-compiler -y
2、 uboot、内核源码和编译器
源码
itop4412_kernel_4_14_2_bsp-20190225.tar.gz
已经按照自己的习惯将该目录解压后,文件夹的名字为linux_4.14。
编译器
gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz
已经按照自己的习惯将该目录解压后,文件夹的名字为gcc_4.6.2。
在家目录的.bashrc下添加如下内容:
export PATH=$PATH:/home/mint/itop/gcc-4.6.2/fsl-linaro-toolchain/bin
二、编译命令
1、单独编译uboot
按照个人习惯,将uboot单独放在一个目录下件夹。
执行build.sh脚本
./build_uboot.sh
脚本内容如下:
#!/bin/bash
cd ../u-boot-2017.11/
if [ ! -f .config ]
then
make itop4412_defconfig
fi
make -j4
cp u-boot.bin ../u-boot/
echo "copy u-boot.bin done."
cd spl/
if [ ! -f itop4412-spl.bin ] ; then
echo "notice: not found itop4412-spl.bin !"
exit 0
else
echo "copying itop4412-spl.bin..."
fi
cp itop4412-spl.bin ../../u-boot/
echo "copy u-boot-spl.bin done."
cd ../../u-boot/
echo "fusing u-boot-iTOP-4412.bin......"
################ for sd MMC boot ##################
#cat E4412_N.bl1.bin itop4412-spl.bin env.bin u-boot.bin > u-boot-iTOP-4412.bin
################# for eMMC boot ####################
cat E4412_N.bl1.bin itop4412-spl.bin u-boot.bin > u-boot-iTOP-4412.bin
####################################################
echo "build success !!!"
2、单独编译内核和设备树
执行编译内核和设备树的脚本
./build_kernel.sh
脚本内容如下:
#cp config_for_iTop-4412_scp .config
export ARCH=arm
make iTop-4412_scp_defconfig
make uImage LOADADDR=0x40007000 -j4
make dtbs
build_kernel.sh编译脚本中可知:iTop-4412_scp_defconfig 是默认的编译配置文件(.config)。
如果修改内核配置文件,需要覆盖掉iTop-4412_scp_defconfig,才能编译成功。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7f2bfa57703071786d98de957233cf56.png)
三、生成的文件
1、uboot镜像
/home/mint/itop/u-boot-2017.11/u-boot
2、内核镜像
/home/mint/itop/linux_4.14/arch/arm/boot/uImage
3、设备树镜像
/home/mint/itop/linux_4.14/arch/arm/boot/dts/exynos4412-itop-elite.dtb