* [edk2-FdfSpecification Patch] FILE RAW Multiple binaries and FmpPayload extensions
2017-04-05 22:53 [edk2-FdfSpecification Patch] FILE RAW Multiple binaries and FmpPayload extensions Michael Kinney
@ 2017-04-05 22:53 ` Michael Kinney
[not found] ` <E92EE9817A31E24EB0585FDF735412F57D168057@ORSMSX113.amr.corp.intel.com>
1 sibling, 0 replies; 3+ messages in thread
From: Michael Kinney @ 2017-04-05 22:53 UTC (permalink / raw)
To: edk2-devel; +Cc: Liming Gao, Yonghong Zhu, Kevin W Shaw
* 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.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Cc: Kevin W Shaw <kevin.w.shaw@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael Kinney <michael.d.kinney@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
^ permalink raw reply related [flat|nested] 3+ messages in thread