目录
安装库
sudo apt-get install libncurses5-dev bison flex
建好这部分目录
正点Uboot文件,g9c0df34f不一定一样,uboot每次打包版本号都不一样
把正点Uboot文件移动到建好的目录下,并解压
tar -vxf u-boot-stm32mp-2020.01-g9c0df34f-v1.0.tar.bz2
修改Makefile内容
减少编译命令的输入,打开Makefile,添加下面内容
ARCH=arm
CROSS_COMPILE=arm-none-linux-gnueabihf-
ARCH:指定所使用的平台架构,这里肯定是 arm。
CROSS_COMPILE:所使用的交叉编译器前缀
DEVICE_TREE:设备树文件,uboot 也支持设备树,所以在编译的时候需要指定设备树文件,不同的硬件其设备树文件肯定不同,这里为 stm32mp157d_atk,也就是正点原子的STM32MP157 开发板对应的设备树。
清除原编译内容
防止在编译的过程出现错误
make distclean
配置uboot
make stm32mp157d_atk_defconfig
编译
V=1:编译 uboot 的时候输出详细的编译过程,方便观察 uboot 编译过程
make V=1 DEVICE_TREE=stm32mp157d-atk all -j8 //8 线程编译
make DEVICE_TREE=stm32mp157d-atk all -j8 //8 线程编译
编译完成后出现了两个文件,u-boot.bin和u-boot.stm32,STM32MP1 内部 ROM 代码和 TF-A 在运行 uboot 的时候要求前面添加头部信息
u-boot.bin:uboot 的二进制可执行文件
u-boot.stm32:在 u-boot.bin 前面添加了 256 个字节头部信息
烧写
把编译好的u-boot.stm32文件复制到电脑上,修改tsv文件,进行烧录
烧录完成后,使用EMMC启动,从串口可以看到uboot启动成功,但是没有启动进内核