Skip to content

U Boot Configuration Guide

Grant Likely edited this page May 12, 2021 · 12 revisions

This page documents how to enable the SystemReady IR requirements on a U-Boot based system.

This guide assumes the platform is already running a recent version of TF-A and U-Boot.

Update to U-Boot v2021.04 or newer

SystemReady IR requires a UEFI implementation. U-Boot support for UEFI is under active development and only recent versions of U-Boot have all the required features implemented Enable EFI Configuration Options

Make sure the following config options are enabled in the U-Boot .config or .defconfig Core UEFI features

CONFIG_BOOTM_EFI=y
CONFIG_CMD_BOOTEFI=y
CONFIG_CMD_NVEDIT_EFI=y
CONFIG_CMD_EFIDEBUG=y
CONFIG_CMD_GPT=y
CONFIG_EFI_PARTITION=y
CONFIG_EFI_LOADER=y
CONFIG_EFI_DEVICE_PATH_TO_TEXT=y
CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y
CONFIG_EFI_UNICODE_CAPITALIZATION=y
CONFIG_EFI_HAVE_RUNTIME_RESET=y
CONFIG_CMD_EFI_VARIABLE_FILE_STORE=Y

Enable RTC support

CONFIG_DM_RTC=y
CONFIG_EFI_GET_TIME=y
CONFIG_EFI_SET_TIME=y
CONFIG_RTC_EMULATION=y

Enable Device Firmware update (DFU) and UEFI UpdateCapsule features

CONFIG_CMD_DFU=y
CONFIG_FLASH_CFI_MTD=y
CONFIG_EFI_CAPSULE_FIRMWARE_MANAGEMENT=y
CONFIG_EFI_CAPSULE_FIRMWARE=y
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
CONFIG_EFI_CAPSULE_FMP_HEADER=y

Firmware images must be provided as a capsule image. Use the U-Boot mkeficapsule utility to create a suitable image: ./tools/mkeficapsule --raw flash.bin --index 1 capsule1.bin

U-Boot must be able to update itself by applying the capsule image using either the capsule on disk feature, or by using the CapsuleApp.efi utility. By default U-Boot device firmware update (DFU) feature is used by Update Capsule to write images to flash. Setting the dfu_alt_info variable to tell U-Boot where to write the firmware image as described in the DFU Documentation

fatwrite mmc <dev>:<part> ${loadaddr} /EFI/UpdateCapsule/capsule1.bin 0x${filesize}setenv -e -nv -bs -rt -v OsIndications = 0x04efidebug capsule disk-update

(Because CapsuleApp.efi has not been fully verified yet, capsules can also be applied using the U-Boot efidebug command)

efidebug capsule update -v ${loadaddr}
Clone this wiki locally