* Changed the FDF_SPECIFICATION value from 0x0001001A to 0x0001001B or 1.27 * Extended the FV and Capsule, FILE RAW statement formats to support multiple binary files. * Changed section 3.8 [FmpPayload] to add definitions for MONOTONIC_COUNT and CERTIFICATE_GUID, plus some notes about how these are used.
Cc: Liming Gao <liming....@intel.com> Cc: Yonghong Zhu <yonghong....@intel.com> Cc: Kevin W Shaw <kevin.w.s...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael Kinney <michael.d.kin...@intel.com> --- 2_fdf_design_discussion/README.md | 8 ++++---- 3_edk_ii_fdf_file_format/34_[defines]_section.md | 17 +++++++++-------- 3_edk_ii_fdf_file_format/36_[fv]_sections.md | 16 ++++++++++++++-- 3_edk_ii_fdf_file_format/37_[capsule]_sections.md | 5 +++-- 3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md | 10 ++++++++++ README.md | 5 ++++- 6 files changed, 44 insertions(+), 17 deletions(-) diff --git a/2_fdf_design_discussion/README.md b/2_fdf_design_discussion/README.md index 37e37c7..3202f56 100644 --- a/2_fdf_design_discussion/README.md +++ b/2_fdf_design_discussion/README.md @@ -50,10 +50,10 @@ The EDK II Build generates UEFI and PI specification compliant binary images. The tools provided in the EDK and the EdkCompatibilityPkg module support earlier versions of the specifications. -This revision of the specification adds support for multiple EDK II Packages -directories outside of the WORKSPACE. FDF files that use this feature must -use the new `FDF_SPECIFICATION = 0x00010019` in the `[Defines]` section. Older -FDF files do not need to update the `FDF_SPECIFICATION` value. +This revision of the specification adds support for multiple binary files in +an FV FILE RAW statement. FDF files that use this feature must use the new +`FDF_SPECIFICATION = 0x0001001B` in the `[Defines]` section. Older FDF files +do not need to update the `FDF_SPECIFICATION` value. The EDK II build system has been updated to allow the setting of multiple paths that will be searched when attempting to resolve the location of EDK II diff --git a/3_edk_ii_fdf_file_format/34_[defines]_section.md b/3_edk_ii_fdf_file_format/34_[defines]_section.md index 789f114..eec7698 100644 --- a/3_edk_ii_fdf_file_format/34_[defines]_section.md +++ b/3_edk_ii_fdf_file_format/34_[defines]_section.md @@ -40,14 +40,15 @@ This section describes the defines section content in the FDF files. This file can be created by a developer and is an input to the EDK II build tool parsing utilities. Elements may appear in any order within this section. -The code for this version of the FDF specification is "0x0001001A" and new -versions of this specification must increment the minor (001A) portion of the -specification code for backward compatible changes, and increment the major -number for non-backward compatible specification changes. - -This revision of the specification adds FMP Capsule support. Any FDF file that -uses this feature must use the 0x0001001A FDF_SPECIFICATION value. Older FDF -files that do not use this feature do not need to update the value. +The code for this version of the FDF specification is "0x0001001B". New +versions of this specification must increment the minor (001B) portion of the +specification code for backward-compatible changes, and increment the major +specification number for non-backward-compatible changes. + +This revision of the specification adds support for multiple binaries in an +FV or Capsule RAW FILE statement. Any FDF file that uses this feature must use +the value `0x0001001B` in the `FDF_SPECIFICATION` statement. Older FDF files +that do not use this feature do not need to update the value. Conditional statements may be used anywhere within this section. diff --git a/3_edk_ii_fdf_file_format/36_[fv]_sections.md b/3_edk_ii_fdf_file_format/36_[fv]_sections.md index b80f6be..f2d34cf 100644 --- a/3_edk_ii_fdf_file_format/36_[fv]_sections.md +++ b/3_edk_ii_fdf_file_format/36_[fv]_sections.md @@ -157,11 +157,13 @@ Conditional statements may be used anywhere within this section. {<Filename>} {<SectionData>} <TS> <TS> "}" [<EOL>] <Options2> ::= [<Use>] [<FileOpts>] <MTS> "{" [<EOL>] - {<Filename>} {<SectionData>} <TS> "}" [<EOL>] + <TS> {<Filename>} {<FileList>+} {<SectionData> <EOL>} + "}" <EOL> +<FileList> ::= <TS> [<FfsAlignment>] <NormalFile> <EOL> <FileOpts> ::= ["FIXED" <MTS>] ["CHECKSUM" <MTS>] [<FfsAlignment>] <FfsAlignment> ::= "Align" <Eq> <FfsAlignmentValues> <MTS> -<Filename> ::= {<FvImage>} {<FdImage>} {<NormalFile>} +<Filename> ::= <TS> {<FvImage>} {<FdImage>} {<NormalFile>} <EOL> <FvImage> ::= <TS> "FV" <Eq> <FvUiName> <EOL> <FdImage> ::= <TS> "FD" <Eq> <FdUiName> <EOL> <FdUiName> ::= {<Word>} {"common"} @@ -415,4 +417,14 @@ INF $(SAMPLE)/Universal/Network/Tcp4/Dxe/Tcp4.inf INF $(SAMPLE)/Universal/Network/Dhcp4/Dxe/Dhcp4.inf INF $(SAMPLE)/Universal/Network/Mtftp4/Dxe/Mtftp4.inf INF $(SAMPLE)/Universal/Network/SnpNt32/Dxe/SnpNt32.inf + +FILE RAW = 197DB236-F856-4924-90F8-CDF12FB975F3 { + $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/$PLATFORM_ARCH)/File.bin +} + +FILE RAW = 197DB236-F856-4924-90F8-CDF12FB975F3 { + Align=16 $(PLATFORM_PACKAGE)/Binaries/File1.pdb + Align=16 $(PLATFORM_PACKAGE)/Binaries/File2.pdb + Align=16 $(PLATFORM_PACKAGE)/Binaries/File3.pdb +} ``` diff --git a/3_edk_ii_fdf_file_format/37_[capsule]_sections.md b/3_edk_ii_fdf_file_format/37_[capsule]_sections.md index c912b40..85f65c7 100644 --- a/3_edk_ii_fdf_file_format/37_[capsule]_sections.md +++ b/3_edk_ii_fdf_file_format/37_[capsule]_sections.md @@ -121,15 +121,16 @@ Conditional statements may be used anywhere within this section. <EOL> <Options2> ::= [<Use>] [<FileOpts>] "{" [<EOL>] - <TS> {<Filename>} {<SectionData>} [<EOL>] + {<Filename>} {<FileList>+} {<SectionData> <EOL>} <TS> "}" <EOL> +<FileList> ::= <TS> [<FfsAlignment>] <NormalFile> <EOL> <FileOpts> ::= ["FIXED" <MTS>] ["CHECKSUM" <MTS>] [<FfsAlignment>] <FfsAlignment> ::= "Align" <Eq> <FfsAlignmentValues> <FvAlignment> ::= [<TS> "FvBaseAddress" <Eq> <UINT64> <EOL>] [<TS> "FvForceRebase" <Eq> <TrueFalse> <EOL>] "FvAlignment" <Eq> <FvAlignmentValues> <EOL> -<Filename> ::= {<FvImage>} {<FdImage>} {<NormalFile>} +<Filename> ::= <TS> {<FvImage>} {<FdImage>} {<NormalFile>} <EOL> <FvImage> ::= "FV" <Eq> <FvUiName> <EOL> <FdImage> ::= "FD" <Eq> <FdUiName> <EOL> <FdUiName> ::= {<Word>} {"common"} diff --git a/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md b/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md index 8368ac3..c1356e8 100644 --- a/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md +++ b/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md @@ -44,9 +44,19 @@ Capsule files. [<TS> "IMAGE_TYPE_ID" <Eq> <RegistryFormatGUID> <EOL>] [<TS> "IMAGE_INDEX" <Eq> <Hex2> <EOL>] [<TS> "HARDWARE_INSTANCE" <Eq> <Hex2> <EOL>] + [<TS> “MONOTONIC_COUNT”<Eq> <NumValUint64> <EOL>] + [<TS> “CERTIFICATE_GUID”<Eq> <RegistryFormatGUID><EOL>] <FmpFileData> ::= <TS> "FILE" <Space> "DATA" <Eq> <Filename> <EOL> ``` +********** +**Note:** The `CERTIFICATE_GUID` and `MONOTONIC_COUNT` must work as a pair. +If `CERTIFICATE_GUID` is provided, the FMP payload is processed as UEFI FMP +Authentication format, and `MONOTONIC_COUNT` **MUST** be provided. If +`CERTIFICATE_GUID` is not provided, the FMP payload is processed as UEFI FMP +non-Authentication format, and `MONOTONIC_COUNT` **MUST NOT** be provided. +********** + #### Example ```ini diff --git a/README.md b/README.md index 23d5201..79643c4 100644 --- a/README.md +++ b/README.md @@ -194,4 +194,7 @@ Copyright (c) 2006-2017, Intel Corporation. All rights reserved. | | PACKAGES_PATH and EDK_TOOLS_BIN, used by the build system. | | | | Allow INF statements in FD regions. | | | | Clarified [UserExtensions] content in chapter 2 (to match implementation) | | -| 1.28 | Convert to GitBooks | March 2017 | +| 1.28 | Convert to GitBooks | April 2017 | +| | Changed the FDF_SPECIFICATION value from 0x0001001A to 0x0001001B or 1.27 | | +| | Extended the FV and Capsule, FILE RAW statement formats to support multiple binary files. | | +| | Changed section 3.8 [FmpPayload] to add definitions for MONOTONIC_COUNT and CERTIFICATE_GUID, plus some notes about how these are used. | | -- 2.6.3.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel