-
Notifications
You must be signed in to change notification settings - Fork 4
Capsule Based System Firmware Update DSC FDF
Back to Capsule Based System Firmware Update
Add the following CAPSULE_ENABLE
define to the [Defines]
section with a default
value of FALSE
. The capsule-based system firmware update feature can be enabled by
passing in -D CAPSULE_ENABLE
flag on to the EDK II build command.
#
# Used to enable/disable capsule update features. The default is FALSE for disabled.
# Add -D CAPSULE_ENABLE to the build command line to enable capsule update features.
# The build process generates a capsule update image along with the UEFI application
# CapsuleApp.efi. These 2 files must be transferred to storage media to in order for
# a user to boot to UEFI Shell and use CapsuleApp.efi to submit the signed capsule.
# Once the system is rebooted, the signed capsule is authenticated and the firmware is
# update with the new system firmware version.
#
DEFINE CAPSULE_ENABLE = FALSE
Make sure the following library mappings are in the [LibraryClasses]
section. The path to
the PlatformFlashAccessLib
must be updated to match the path to the implementation provided
in the previous step. These library mappings are required to support building the modules that
provide the Firmware Management Protocol for the system firmware, the UEFI application to test
capsule-based firmware update, along with the modules that authenticate a signed system firmware
update capsule
[LibraryClasses]
OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
!if $(CAPSULE_ENABLE)
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
!else
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
!endif
EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf
PlatformFlashAccessLib|<Your Platform Package>/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLibDxe.inf
Make sure the following library mappings are in the [LibraryClasses.common.DXE_RUNTIME_DRIVER]
[LibraryClasses.common.DXE_RUNTIME_DRIVER]
!if $(CAPSULE_ENABLE)
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
!endif
[PcdsDynamicExDefault.common.DEFAULT]
!if $(CAPSULE_ENABLE)
gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0xc0, 0x20, 0xaf, 0x62, 0x16, 0x70, 0x4a, 0x42, 0x9b, 0xf8, 0x9c, 0xcc, 0x86, 0x58, 0x40, 0x90}
!endif
NOTE: This example below uses a PEI CPU architecture of IA32. Replace IA32 with PEI CPU Architecture
[Components.IA32]
!if $(CAPSULE_ENABLE)
# FMP image descriptor
<Your Platform Package>/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
!endif