## @file\r
# PCD PEIM produces PCD database to manage all dynamic PCD in PEI phase and install Pcd Ppi service.\r
#\r
+# This version PCD PEIM depends on the external PCD database binary file, not built in PCD data base. \r
# There are two PCD PPIs as follows:\r
# 1) PCD_PPI \r
# It is EDKII implementation which support Dynamic/DynamicEx Pcds.\r
# It is defined by PI specification 1.2, Vol 3 which only support dynamicEx \r
# type Pcd.\r
# For dynamicEx type PCD, it is compatible between PCD_PPI and EFI_PEI_PCD_PPI.\r
+# PCD PEIM driver will produce above two PPIs at same time.\r
+#\r
+# PCD database is generated as the separate binary image at build time. The binary image \r
+# will be intergrated into Firmware volume together with PCD driver. \r
#\r
# ////////////////////////////////////////////////////////////////////////////////\r
# // //\r
# b) Variable Storage: \r
# - The PCD value is stored in variable area. \r
# - As default storage type, this type PCD could be used for PEI/DXE driver\r
-# communication. But beside it, this type PCD could alsp be used to store \r
+# communication. But beside it, this type PCD could also be used to store \r
# the value associate with a HII setting via variable interface.\r
# - In PEI phase, the PCD value could only be got but can not be set due \r
# to variable area is readonly.\r
# PCD information used in PEI phase or use in both PEI/DXE phase. And DXE PCD\r
# database contains all PCDs used in PEI/DXE phase in memory.\r
# \r
-# Build tool will generate PCD database into some C structure and variable for \r
+# Build tool will generate PCD database into the separate binary file for \r
# PEI/DXE PCD driver according to dynamic PCD section in platform DSC file. \r
# \r
# 3.1 PcdPeim and PcdDxe\r
# PEI PCD database is maintained by PcdPeim driver run from flash. PcdPeim driver\r
-# build guid hob in temporary memory and copy auto-generated C structure \r
+# build guid hob in temporary memory and copy the binary data base from flash \r
# to temporary memory for PEI PCD database. \r
# DXE PCD database is maintained by PcdDxe driver.At entry point of PcdDxe driver,\r
# a new PCD database is allocated in boot-time memory which including all\r
# Based on local token number, PCD driver could fast determine PCD type, value\r
# type and get PCD entry from PCD database.\r
# \r
-# 3.3 PCD Database C structure.\r
-# PCD Database C structure is generated by build tools in PCD driver's autogen.h/\r
+# 3.3 PCD Database binary file\r
+# PCD Database binary file will be created at build time as the standalone binary image. \r
+# To understand the binary image layout, PCD Database C structure is still generated \r
+# as comments by build tools in PCD driver's autogen.h/\r
# autogen.c file. In generated C structure, following information is stored:\r
# - ExMapTable: This table is used translate a binary dynamicex type PCD's \r
# "tokenguid + token" to local token number.\r
# token number" as array index to get PCD entry's offset fastly.\r
# - SizeTable: This table stores the size information for all PCD entry.\r
# - GuidTable: This table stores guid value for DynamicEx's token space,\r
-# HII type PCD's variable.\r
+# HII type PCD's variable GUID.\r
# - SkuIdTable: TBD\r
# - SystemSkuId: TBD\r
# - PCD value structure: \r
# - Variable GUID for HII type PCD\r
# - Token space GUID for dynamicex type PCD \r
# \r
-# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
[Defines]\r
INF_VERSION = 0x00010005\r
BASE_NAME = PcdPeim\r
+ MODULE_UNI_FILE = PcdPeim.uni\r
FILE_GUID = 9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50\r
MODULE_TYPE = PEIM\r
- VERSION_STRING = 1.0\r
+ VERSION_STRING = 4.0\r
PCD_IS_DRIVER = PEI_PCD_DRIVER\r
ENTRY_POINT = PcdPeimInit\r
\r
BaseLib\r
PeimEntryPoint\r
DebugLib\r
+ MemoryAllocationLib\r
\r
[Guids]\r
- gPcdDataBaseHobGuid ## PRODUCES ## Hob\r
- gPcdDataBaseHobGuid ## CONSUMES ## Hob\r
+ ## PRODUCES ## HOB\r
+ ## SOMETIMES_CONSUMES ## HOB\r
+ gPcdDataBaseHobGuid \r
+ gPcdDataBaseSignatureGuid ## CONSUMES ## GUID # PCD database signature GUID.\r
\r
[Ppis]\r
- gEfiPeiReadOnlyVariable2PpiGuid ## CONSUMES\r
+ gEfiPeiReadOnlyVariable2PpiGuid ## SOMETIMES_CONSUMES\r
gPcdPpiGuid ## PRODUCES\r
gEfiPeiPcdPpiGuid ## PRODUCES\r
- \r
+ gGetPcdInfoPpiGuid ## SOMETIMES_PRODUCES\r
+ gEfiGetPcdInfoPpiGuid ## SOMETIMES_PRODUCES\r
+\r
[FeaturePcd]\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable ## CONSUMES\r
\r
[Pcd]\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry || PcdPeiFullPcdDatabaseEnable\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress ## SOMETIMES_CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry || gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable ## SOMETIMES_CONSUMES\r
\r
[Depex]\r
TRUE\r
\r
+[UserExtensions.TianoCore."ExtraFiles"]\r
+ PcdPeimExtra.uni\r