10.4 Create the FV Image File(s)

Once all of the EFI FFS files have been created, these images are bundled into an FV image.

GenFv needs two kinds of information about the target FV:

  • The FV attributes
  • The list of one or more files that will be placed into this FV.

This information is defined in the FV section of the FDF file.

If the [FV] section contains an FvNameString entry and it is set to TRUE, the tools will use the FvUiName from the section tag to create an FvNameString entry in the FV image's extension header.

The following example is for a FV section named "BiosUpdate."

[FV.BiosUpdate]
  BlockSize          = 0x10000
  FvAlignment        = 16
  ERASE_POLARITY     = 1
  MEMORY_MAPPED      = TRUE
  STICKY_WRITE       = TRUE
  LOCK_CAP           = TRUE
  LOCK_STATUS        = TRUE
  WRITE_DISABLED_CAP = TRUE
  WRITE_ENABLED_CAP  = TRUE
  WRITE_STATUS       = TRUE
  WRITE_LOCK_CAP     = TRUE
  WRITE_LOCK_STATUS  = TRUE
  READ_DISABLED_CAP  = TRUE
  READ_ENABLED_CAP   = TRUE
  READ_STATUS        = TRUE
  READ_LOCK_CAP      = TRUE
  READ_LOCK_STATUS   = TRUE

  FILE FV_IMAGE = EDBEDF47-6EA3-4512-83C1-70F4769D4BDE {
    SECTION GUIDED {
      SECTION FV_IMAGE = BiosUpdateCargo
    }
  }

This FV is very simple; it contains only one FILE. But this file contains an entire FV image named BiosUpdateCargo which must be available when GenFds creates the BiosUpdate FV.

The GenFds tool will process the FDF file and place the FV attributes and contents in to an INF file (in this example, the BiosUpdate.inf file) and then processing is transferred to GenFv tool when creating FV images. The following example is what this generated, FV-style, INF file looks like:

[options]
EFI_BLOCK_SIZE = 0x10000

[attributes]
EFI_ERASE_POLARITY     = 1
EFI_WRITE_ENABLED_CAP  = TRUE
EFI_READ_ENABLED_CAP   = TRUE
EFI_READ_LOCK_STATUS   = TRUE
EFI_WRITE_STATUS       = TRUE
EFI_READ_DISABLED_CAP  = TRUE
EFI_WRITE_LOCK_STATUS  = TRUE
EFI_LOCK_CAP           = TRUE
EFI_LOCK_STATUS        = TRUE
EFI_ERASE_POLARITY     = 1
EFI_MEMORY_MAPPED      = TRUE
EFI_READ_LOCK_CAP      = TRUE
EFI_WRITE_DISABLED_CAP = TRUE
EFI_READ_STATUS        = TRUE
EFI_WRITE_LOCK_CAP     = TRUE
EFI_STICKY_WRITE       = TRUE
EFI_FVB2_ALIGNMENT_16  = TRUE

[files]
EFI_FILE_NAME = C:edk2BuildMyPlatformDEBUG_MYTOOLSFVFfsEDBEDF47-6EA34512-83C1-70F4769D4BDEEDBEDF47-6EA3-4512-83C1-70F4769D4BDE.ffs