学习 Mainline 之 U-Boot 编译


#1

安装 Toolchain

apt-get install gcc-arm-linux-gnueabihf

安装完查看一下gcc-arm-linux-gnueabihf的版本号,arm-linux-gnueabihf-gcc-5 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609这个版本有BUG,没办法编译Mainline U-Boot,需要去linaro重新下载一个, 然后解压

**
**

安装 Device-tree Compiler

apt-get install device-tree-compiler

**
**
**
获取 Mainline U-Boot 源代码**

git clone git://git.denx.de/u-boot.git

**
**
**
配置**
在编译之前需要生成用于编译配置文件

make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig

<board_name>_defconfig处选择自己板子的defconfig,有些在 u-boot 中自带, 有些没有

可以在u-boot/configs/中可以查看已有的 defconfig 文件

编译

make CROSS_COMPILE=arm-linux-gnueabihf-

如果使用非安装的编译器CROSS_COMPILE=需要填写编译器的位置, 如CROSS_COMPILE=/home/user/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

编译成功后

编译成功后, 会在 U-Boot 源码目录下生成一个名为u-boot-sunxi-with-spl.bin的文件, 这个文件就是我们可以烧进卡里的u-boot

烧写

如果要烧进 TF 卡使用, 需要写到卡的8KiB处:

sudo dd if=<u-boot-sunxi-with-spl.bin 文件> of=<你的 TF 卡设备目录> bs=1024 seek=8
#如 sudo dd if=./u-boot/u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

参考

特别感谢 大姐姐 的技术支持!