Creating the U-Boot Configuration Fragments

The two fragments are:

  • lmp-base-cfg
  • lmp.cfg

The meta-lmp layer uses .cfg configuration fragments to append and override configurations in the board defconfig file.

lmp-base.cfg is used for DISTRO=lmp-base, while lmp.cfg is used for DISTRO=lmp.

The .cfg file enables the features required for SPL and U-Boot proper to support LmP. This includes booting SPL, verifying the signature of the consequent loaded images, enabling eMMC secure storage, and custom boot command.

To create this file, use the reference board support in LmP and modify the configuration files as needed. The list of supported boards and their .cfg files can be found in the meta-lmp repo.

For example, see imx8mmevk/lmp-base.cfg:

CONFIG_SPL_DM=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_SPL_FIT=y
CONFIG_SPL_LOAD_FIT=y
# CONFIG_SPL_FIT_IMAGE_TINY is not set
# CONFIG_CMD_DEKBLOB is not set
# CONFIG_SPL_DM_USB is not set
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_FIT=y
CONFIG_FIT_SIGNATURE=y
CONFIG_FIT_VERBOSE=y
CONFIG_LEGACY_IMAGE_FORMAT=y
CONFIG_PARTITION_UUIDS=y
CONFIG_CMD_XIMG=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_SUPPORT_EMMC_BOOT=y
# CONFIG_ENV_IS_IN_MMC is not set
CONFIG_ENV_IS_IN_FAT=y
CONFIG_ENV_FAT_INTERFACE="mmc"
CONFIG_ENV_FAT_DEVICE_AND_PART="2:1"
CONFIG_ENV_SIZE=0x4000
CONFIG_CMD_IMPORTENV=y
CONFIG_CMD_EDITENV=y
CONFIG_CMD_SAVEENV=y
CONFIG_USE_BOOTCOMMAND=y
CONFIG_BOOTCOMMAND="fatload mmc ${emmc_dev}:1 ${loadaddr} /boot.scr;
source ${loadaddr}; reset"

Most of the configuration is generic to all boards. You will need to pay attention to board-specific configuration. In this case:

CONFIG_ENV_FAT_DEVICE_AND_PART="2:1"

Where 2 represents the uSDHC index for the eMMC device in imx8mmevk. You should align this with what is expected for your board.

Note

It is recommended to set an eMMC device as the boot target if applicable. In i.MX targets, lmp-base distro does not support SD card boot at this time.