-
Notifications
You must be signed in to change notification settings - Fork 37
U Boot Configuration Guide
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.
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}