Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ArmPkg Compression

Jordan Justen edited this pageSep 4, 2014 ·1 revision

Introduction

To reduce the size of the firmware and also to speed up the boot process (it is sometimes faster to decompress a compressed file than to copy the original file from a block storage), it is often common to compress the DXE & BDS modules.

Disable compression

To speed up the boot process on platform with slow CPU (eg: FPGA platform), it might help to disable the decompression and copy the image directly into DRAM.
This section will use ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-AEMv8Ax4.fdf as an example.

At the end of the build process you will see these three FVs (Firmware Volume):

FV Space InformationFVMAIN_SEC [14%Full] 524288 total, 77504 used, 446784 freeFVMAIN_COMPACT [45%Full] 2621440 total, 1184312 used, 1437128 freeFVMAIN [99%Full] 4004224 total, 4004168 used, 56 free
FVMAIN_SEC is the secure part of the firmware that should live into Trusted Memory.
FVMAIN is the compressed image. This FV image is added in FVMAIN_COMPACT.

The compression is driven by the Guided Section in the FDF file. See the section '[FV.FVMAIN_COMPACT]':

  FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {    SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {      SECTION FV_IMAGE = FVMAIN    }  }

The GUID 'EE4E5898-3914-4259-9D6E-DC7BD79403CF' corresponds to the LZMA decompression (defined in IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec).
This section says it will compress the FV image named 'FVMAIN' into a file named 'FV_IMAGE'.

The FVMAIN FV image is defined above by the section '[FV.FvMain]'.

To disable the compression:

1. Flatten the FDF file: Move the content of FVMAIN into FVMAIN_COMPACT:

- remove FV_IMAGE file from FVMAIN_COMPACT
- move all the files from FVMAIN to FVMAIN_COMPACT
If you build the UEFI firmware after this step, you might see your firmware does not fit anymore in the size defined by the FDF file:
Generating FVMAIN_COMPACT FV###########################################################################################################################Return Value = 2GenFv: ERROR 3000: Invalid  the required fv image size 0x46ede8 exceeds the set fv image size 0x280000

2. Increase the size of the FDF file

From:

[FD.RTSM_VE_AEMv8_EFI]BaseAddress   = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress  # The base address of the Firmware in NOR Flash.Size          = 0x00300000|gArmTokenSpaceGuid.PcdFdSize         # The size in bytes of the FLASH Device(...)BlockSize     = 0x00001000NumBlocks     = 0x300(...)0x00080000|0x00280000gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize

To:

[FD.RTSM_VE_AEMv8_EFI]BaseAddress   = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress  # The base address of the Firmware in NOR Flash.Size          = 0x00580000|gArmTokenSpaceGuid.PcdFdSize         # The size in bytes of the FLASH Device(...)BlockSize     = 0x00001000NumBlocks     = 0x580(...)0x00080000|0x00500000gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize

3. Build the new firmware:

FV Space InformationFVMAIN_SEC [14%Full] 524288 total, 77504 used, 446784 freeFVMAIN_COMPACT [88%Full] 5242880 total, 4648424 used, 594456 free

Clone this wiki locally


[8]ページ先頭

©2009-2025 Movatter.jp