Lu Blog

Segment fault!

学习Mainline之U-Boot编译

记录:学习Mainline之U-Boot编译

安装Toolchain

apt-get install gcc-arm-linux-gnueabihf

如果安装的是arm-linux-gnueabihf-gcc-5 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609这个版本,恭喜你,这个版本有BUG没办法编译的,
需要去linaro 重新下载一个,然后解压

安装 Device-tree Compiler

apt-get install device-tree-compiler

获取Mainline U-Boot源代码

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

defconfig 文件
defconfig 文件有些在u-boot中自带,有些没有
configs/中可以查看已有的 defconfig 文件,命名规则是<board_name>_defconfig
我使用的是BananaPi M2+,u-boot中没有自带 defconfig 文件,需要自行添加
linux-sunxi.org/Banana_Pi_M2中找到对应的 defconfig 文件,下载然后丢进configs/

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

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

make CROSS_COMPILE=arm-linux-gnueabihf- Sinovoip_BPI_M2_plus_defconfig

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

编译

make CROSS_COMPILE=arm-linux-gnueabihf-

记在最后
编译成功后,会在U-Boot源码目录下生成一个名为u-boot-sunxi-with-spl.bin的文件,这个文件就是我们最后需要的.
如果要烧进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

参考

特别感谢 大姐姐

评论卡