I.MX8MM系统构建 -- 2.U-Boot编译烧录

介绍

由于 i.MX8M/Mini 的引导有几部分组成,所以需要编译这几个部分生成最终的目标镜像。有以下几个文件组成:

  • imx-atf:ATF 主要负责 Non-secure 环境和 secure 环境的切换。
  • myir-imx-uboot: i.MX8M/Mini 平台使用系列使用 SPL 启动 ,不同的 boot chains 模式 会对应不同启动阶段。spl 的编译是编译 uboot 的一部分,和 uboot.bin 走的是两条编 译流程,这个要重点注意。正常来说,会先编译主体 uboot,也就是 uboot.bin.再编译 uboot-spl,也就是 uboot-spl.bin,虽然编译命令是一起的,但是编译流程是分开的。下 面就介绍整个 u-boot 的编译。
  • firmware-8.7:初始化的 bin 格式文件,由 spl 或者 uboot 调用,用以初始化 ddr。
  • imx-mkimage:生成目标镜像的工具

开发环境搭建

初始化SDK

准备源码

  • 源码位置:04-sources/目录中找到 bootloader
  • 源码结构
bootloader/ 
├── firmware-imx-8.7 
├── firmware-imx-8.7.bin       //初始化的 bin 格式文件,由 spl 或者 uboot 调用,用以初始化 ddr。 
├── imx-atf                    //主要负责 Non-secure 环境和 secure 环境的切换。
├── imx-mkimage                //生成目标镜像的工具
├── myir-imx-uboot		       //Uboot 源码
├── make-uboot-emmc.sh 	       //制作 eMMC 和 SD 卡启动的脚本文件
└── make-uboot-qspi.sh         //是制作 QSPI 启动的脚本文件。

U-Boot编译

编译 myir-imx-uboot

  • eMMC 或 SD 卡启动
 $: cd bootloader/myir-imx-uboot/ 
 /bootloader/myir-imx-uboot$: make distclean 
 ~/bootloader/myir-imx-uboot$: make myd_imx8mm_defconfig 
 ~/bootloader/myir-imx-uboot$: make -j16
  • 编译后生成镜像如下
u-boot-nodtb.bin 
spl/u-boot-spl.bin 
arch/arm/dts/myb-imx8mm-base.dtb

编译 imx-atf

myir@myir-server1:~$ cd bootloader/ 
wujl@myir-server1:~/bootloader/imx-atf$ tar xvf imx-atf.tar.gz 
wujl@myir-server1:~/bootloader/imx-atf$ cd imx-atf 
wujl@myir-server1:~/bootloader/imx-atf$ make clean PLAT=imx8mm 
wujl@myir-server1:~/bootloader/imx-atf$ LDFLAGS="" make PLAT=imx8mm
  • 编译后生成文件如下
build/imx8mm/release/bl31.bin

生成引导目标镜像

  • eMMC 或 SD 卡启动
    进入 bootloader 目录,执行以下命令制作 uboot 目标镜像:
myir@myir-server1:~$ cd bootloader/ 
wujl@myir-server1:~/bootloader$ ./make-uboot-emmc.sh
  • 编译完成后,生成引导镜像
imx-mkimage/iMX8M/flash.bin

U-Boot单独烧录

烧录镜像到 sdcard

烧录镜像到 eMMC

使用uuu下载uboot

  • 将生成的 flash.bin 拷贝到uuu下载文件夹
  • 添加修改uuu下载脚本flash_uboot.uuu
uuu_version 1.0.1

SDP: boot -f flash.bin
# This command will be run when use SPL
SDPU: delay 1000
SDPU: write -f imx-boot-myd-imx8mm-sd.bin-flash_ddr4_evk -offset 0x57c00
SDPU: jump
# This command will be run when ROM support stream mode
SDPS: boot -f imx-boot-myd-imx8mm-sd.bin-flash_ddr4_evk

FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev ${emmc_dev}
FB: ucmd mmc dev ${emmc_dev}
#FB: flash -raw2sparse all myir-image-full-myd-imx8mm.sdcard
FB: flash bootloader flash.bin
FB: ucmd mmc partconf ${emmc_dev} 0 1 0
FB: done
  • 开发板切换到下载模式下,执行 uuu.exe flash_uboot.uuu
    I.MX8MM系统构建 -- 2.U-Boot编译烧录_第1张图片

  • 烧录完成后切换到 emmc 运行模式重启
    I.MX8MM系统构建 -- 2.U-Boot编译烧录_第2张图片
    可以看到uboot已经更新到2023新编译的uboot。

U-Boot编译到整体镜像

你可能感兴趣的:(I.MX8mm,linux)