STM32MP157_uboot_初次编译
前言:
为了快速入门,这边选择直接使用正点原子提供的uboot源码,先体验一下uboot的编译流程,为后面的移植原厂uboot做环境准备。
1、获取正点原子的uboot源码(复制到虚拟机里面)
2、解压源码压缩包
tar -vxf u-boot-stm32mp-2020.01-gdb8d2374-v1.0.tar.bz2
3、安装必要的库
sudo apt-get install libncurses5-dev bison flex
4、设置交叉编译器
ST 推荐了两款通用交叉编译器,一个是 ARM 官方出品的:gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf
//创建一个目录
sudo mkdir /usr/local/arm
//把交叉编译工具链复制到这个目录下
sudo cp gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz /usr/local/arm/ -f
//解压这个工具链
sudo tar -vxf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz
//配置环境变量
sudo vi /etc/profile
/把这句添加到环境变量
export PATH=$PATH:/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin
//查看工具链版本
arm-none-linux-gnueabihf-gcc -v
5、编译uboot源码
ARCH:指定所使用的平台架构,这里肯定是 arm。
CROSS_COMPILE:所使用的交叉编译器前缀,本教程使用的是交叉编译器前缀为 armnone-linux-gnueabihf-。
DEVICE_TREE:设备树文件,uboot 也支持设备树,所以在编译的时候需要指定设备树文
件,不同的硬件其设备树文件肯定不同,这里为 stm32mp157d_atk,也就是正点原子的
STM32MP157 开发板对应的设备树。
//清除
make distclean
//配置 uboot
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- stm32mp157d_atk_defconfig
//编译
make V=1 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- DEVICE_TREE=stm32mp157d-atk all
6、编译成功
7、烧录uboot
重点是 u-boot.bin 和 u-boot.stm32 这两个文件。u-boot.bin 是 uboot 的二进制可执行文件,u-boot.stm32 是在 u-boot.bin 前面添加了256 个字节头部信息