U-Boot environment and boot script¶
The last step to configure U-Boot in LmP is to provide the boot
environment (for lmp-base) and the boot command. The user can start by
using the reference board support and adjusting the files according to the
target board.
For the lmp-base distro, provide the boot environment input file
(uEnv.txt.in), which sets the needed variables for booting:
u-boot-base-scr/imx8mmevk/uEnv.txt.in:
devnum=2
devtype=mmc
bootcmd_args=setenv bootargs console=tty1 console=${console} root=/dev/mmcblk2p2 rootfstype=ext4 rootwait rw
bootcmd_dtb=fatload ${devtype} ${devnum}:1 ${fdt_addr} ${fdt_file}
bootcmd_load_k=fatload ${devtype} ${devnum}:1 ${loadaddr} ${image}
bootcmd_run=booti ${loadaddr} - ${fdt_addr}
bootcmd=run bootcmd_args; run bootcmd_dtb; run bootcmd_load_k; run bootcmd_run
The user needs to define the devnum and bootcmd_args root parameters to
meet the eMMC index on their board. Other board specific variables can
be set in this file if needed, like fdt_file or console configurations.
After uEnv.txt.in is in place, provide boot.cmd, which loads this
environment and boots to kernel:
u-boot-base-scr/imx8mmevk/boot.cmd:
For the lmp-base distro, these files live in u-boot-base-scr:
Also for the lmp distro, the only file that needs to be provided is boot.cmd,
but in this case it handles both the environment as well as the boot
command:
u-boot-ostree-scr-fit/imx8mmevk/boot.cmd:
echo "Using freescale_${fdt_file}"
# Default boot type and device
setenv bootlimit 3
setenv devtype mmc
setenv devnum 2
setenv bootpart 1
setenv rootpart 2
# Boot image files
setenv fdt_file_final freescale_${fdt_file}
setenv fit_addr ${initrd_addr}
# Boot firmware updates
setenv bootloader 42
setenv bootloader2 300
setenv bootloader_s 1042
setenv bootloader2_s 1300
setenv bootloader_image "imx-boot"
setenv bootloader_s_image ${bootloader_image}
setenv bootloader2_image "u-boot.itb"
setenv bootloader2_s_image ${bootloader2_image}
setenv uboot_hwpart 1
@@INCLUDE_COMMON@@
The user needs to define devnum as expected by the board and make sure
the initrd_addr is set in U-Boot correctly, otherwise the user may need
to set the initrd_addr (as well as any other missing addresses) in this
file.
Note
If porting to a new SoC not supported in LmP, the boot firmware offsets also need to be calculated and adjusted as the procedure described here TF-A/OP-TEE.
The boot.cmd for the lmp distro lives in:
After providing these files, LmP has all the needed configuration to boot U-Boot and get to the kernel.