MdePkg and MdeModulePkg Pcd: Implement PCD Driver for External PCD Database and SKU enable Feature.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Bob C Feng <bob.c.feng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14857 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
## @file
|
||||
# PCD PEIM produces PCD database to manage all dynamic PCD in PEI phase and install Pcd Ppi service.
|
||||
#
|
||||
# This version PCD PEIM depends on the external PCD database binary file, not built in PCD data base.
|
||||
# There are two PCD PPIs as follows:
|
||||
# 1) PCD_PPI
|
||||
# It is EDKII implementation which support Dynamic/DynamicEx Pcds.
|
||||
@@ -8,6 +9,10 @@
|
||||
# It is defined by PI specification 1.2, Vol 3 which only support dynamicEx
|
||||
# type Pcd.
|
||||
# For dynamicEx type PCD, it is compatible between PCD_PPI and EFI_PEI_PCD_PPI.
|
||||
# PCD PEIM driver will produce above two PPIs at same time.
|
||||
#
|
||||
# PCD database is generated as the separate binary image at build time. The binary image
|
||||
# will be intergrated into Firmware volume together with PCD driver.
|
||||
#
|
||||
# ////////////////////////////////////////////////////////////////////////////////
|
||||
# // //
|
||||
@@ -58,7 +63,7 @@
|
||||
# b) Variable Storage:
|
||||
# - The PCD value is stored in variable area.
|
||||
# - As default storage type, this type PCD could be used for PEI/DXE driver
|
||||
# communication. But beside it, this type PCD could alsp be used to store
|
||||
# communication. But beside it, this type PCD could also be used to store
|
||||
# the value associate with a HII setting via variable interface.
|
||||
# - In PEI phase, the PCD value could only be got but can not be set due
|
||||
# to variable area is readonly.
|
||||
@@ -89,12 +94,12 @@
|
||||
# PCD information used in PEI phase or use in both PEI/DXE phase. And DXE PCD
|
||||
# database contains all PCDs used in PEI/DXE phase in memory.
|
||||
#
|
||||
# Build tool will generate PCD database into some C structure and variable for
|
||||
# Build tool will generate PCD database into the separate binary file for
|
||||
# PEI/DXE PCD driver according to dynamic PCD section in platform DSC file.
|
||||
#
|
||||
# 3.1 PcdPeim and PcdDxe
|
||||
# PEI PCD database is maintained by PcdPeim driver run from flash. PcdPeim driver
|
||||
# build guid hob in temporary memory and copy auto-generated C structure
|
||||
# build guid hob in temporary memory and copy the binary data base from flash
|
||||
# to temporary memory for PEI PCD database.
|
||||
# DXE PCD database is maintained by PcdDxe driver.At entry point of PcdDxe driver,
|
||||
# a new PCD database is allocated in boot-time memory which including all
|
||||
@@ -180,8 +185,10 @@
|
||||
# Based on local token number, PCD driver could fast determine PCD type, value
|
||||
# type and get PCD entry from PCD database.
|
||||
#
|
||||
# 3.3 PCD Database C structure.
|
||||
# PCD Database C structure is generated by build tools in PCD driver's autogen.h/
|
||||
# 3.3 PCD Database binary file
|
||||
# PCD Database binary file will be created at build time as the standalone binary image.
|
||||
# To understand the binary image layout, PCD Database C structure is still generated
|
||||
# as comments by build tools in PCD driver's autogen.h/
|
||||
# autogen.c file. In generated C structure, following information is stored:
|
||||
# - ExMapTable: This table is used translate a binary dynamicex type PCD's
|
||||
# "tokenguid + token" to local token number.
|
||||
@@ -190,7 +197,7 @@
|
||||
# token number" as array index to get PCD entry's offset fastly.
|
||||
# - SizeTable: This table stores the size information for all PCD entry.
|
||||
# - GuidTable: This table stores guid value for DynamicEx's token space,
|
||||
# HII type PCD's variable.
|
||||
# HII type PCD's variable GUID.
|
||||
# - SkuIdTable: TBD
|
||||
# - SystemSkuId: TBD
|
||||
# - PCD value structure:
|
||||
@@ -271,7 +278,7 @@
|
||||
# - Variable GUID for HII type PCD
|
||||
# - Token space GUID for dynamicex type PCD
|
||||
#
|
||||
# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
@@ -288,7 +295,7 @@
|
||||
BASE_NAME = PcdPeim
|
||||
FILE_GUID = 9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50
|
||||
MODULE_TYPE = PEIM
|
||||
VERSION_STRING = 1.0
|
||||
VERSION_STRING = 4.0
|
||||
PCD_IS_DRIVER = PEI_PCD_DRIVER
|
||||
ENTRY_POINT = PcdPeimInit
|
||||
|
||||
@@ -317,20 +324,22 @@
|
||||
DebugLib
|
||||
|
||||
[Guids]
|
||||
gPcdDataBaseHobGuid ## PRODUCES ## Hob
|
||||
gPcdDataBaseHobGuid ## CONSUMES ## Hob
|
||||
## PRODUCES ## HOB
|
||||
## SOMETIMES_CONSUMES ## HOB
|
||||
gPcdDataBaseHobGuid
|
||||
gPcdDataBaseSignatureGuid ## CONSUMES ## UNDEFINED # PCD database signature GUID.
|
||||
|
||||
[Ppis]
|
||||
gEfiPeiReadOnlyVariable2PpiGuid ## CONSUMES
|
||||
gEfiPeiReadOnlyVariable2PpiGuid ## SOMETIMES_CONSUMES
|
||||
gPcdPpiGuid ## PRODUCES
|
||||
gEfiPeiPcdPpiGuid ## PRODUCES
|
||||
|
||||
[FeaturePcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable ## CONSUMES
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry || gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress ## SOMETIMES_CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry || gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable ## SOMETIMES_CONSUMES
|
||||
|
||||
[Depex]
|
||||
TRUE
|
||||
|
Reference in New Issue
Block a user