U-Boot的编译与烧写
U-Boot的编译与烧写
- ST 官方 uboot 源码下载
- 1.安装库
- 正点原子提供的 uboot 源码
- 修改makefile文件
- 编译完成后
ST 官方 uboot 源码下载
ST 官方 uboot 源码
“u-boot-stm32mp-2020.01-r0”就是 ST 官方 uboot 源码包
1.安装库
首先需要在 Ubuntu 中安装一些库,否则编译 uboot 会报错,安装命令如下:
sudo apt-get install libncurses5-dev bison flex
正点原子提供的 uboot 源码
新建“alientek_uboot”文件存放uboot 源码
使用如下命令对其进行解压缩:
tar -vxf u-boot-stm32mp-2020.01-gdb8d2374-v1.0.tar.bz2
每个人的压缩包不一样,所以u-boot-stm32mp-2020.01-gdb8d2374-v1.0.tar.bz2可以替换的,解压后是
面命令每次编译的时候都要指定 ARCH、CROSS_COMPILE 和 DEVICE_TREE,这三个
含义如下:
ARCH:指定所使用的平台架构,这里肯定是 arm
CROSS_COMPILE:所使用的交叉编译器前缀
DEVICE_TREE:设备树文件,uboot 也支持设备树,所以在编译的时候需要指定设备树文
件,不同的硬件其设备树文件肯定不同,这里为 stm32mp157d_atk
make distclean
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
修改makefile文件
出错了
然后 我才发先我没复制完全
这是我复制的错误代码
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- stm32mp157d_atk_defcon
make V=1 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- DEVICE_TREE=stm
正确的
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
修改makefile
ARCH = arm
CROSS_COMPILE = arm-none-linux-gnueabihf-
修改makefile文件怎么保存
sudo vim Makefile
想保存并退出,可以输入 :wq 然后按 Enter。
设置好 Makefile 里面的 ARCH 和 CROSS_COMPILE 以后就可以将编译命令简化为如下所
示:
make distclean //清除
make stm32mp157d_atk_defconfig //配置 uboot
make V=1 DEVICE_TREE=stm32mp157d-atk all //编译
为加快变编译速度,使用多线程编译,这样比上面的更快,但是结果相同,如下
make V=1 DEVICE_TREE=stm32mp157d-atk all -j8
编译完成后
编译多了一些文件,重点是 u-boot.bin 和 u-boot.stm32 这两个文件。
在U-Boot源码目录下生成u-boot.bin和u-boot.stm32镜像文件,需要将u-boot.stm32烧写到开发板的eMMC中。
修改前面创建的 tf-a.tsv 文件
添加
P 0x06 ssbl Binary mmc1 0x00080000 u-boot.stm32
中间是TAB键
最后将上一小节编译出来的 u-boot.stm32,拷贝到前面创建的 images 目录下(在做 TF-A 实
验的就有 u-boot.stm32 这个文件,我们只要替换就行)。