前言:
无意在网上看见@Hi,Hubery的博客,他也是在培训三个月后开始写博客。我不知道他在哪家公司,但他自己写了一下成长结点。感谢他的分享,我觉得我也要做些东西出来,就把他的结点过一遍,解答出来。
题目:
1.Define PCD and Configure PCD 如何定义一个PCD以及使用PCD
解答:
在我培训完后的写的一篇博客Setup页面相关探索中,我修改了Timeout的数值。
但这里要求会更多一些,就参考PcdPlatformBootTimeOut去重新定义一个。
首先在MdeModulePkg\Include\Guid下定义一个DavidTokenSpace.h
/** @file
GUID for MdeModulePkg PCD Token Space.
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _DAVID_TOKEN_SPACE_GUID_H_
#define _DAVID_TOKEN_SPACE_GUID_H_
#define DAVID_TOKEN_SPACE_GUID \
{ \
0xA1AFF040, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xB0 } \
}
extern EFI_GUID gEfiDavidTokenSpaceGuid;
#endif
接着在MdeModulePkg.dec的[Guids] 下声明一下
#david start
## Include/Guid/DavidTokenSpace.h
gEfiDavidTokenSpaceGuid = { 0xA1AFF040, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xB0 } }
#david end
声明之后在[PcdsFixedAtBuild]的下面加上
#david start
gEfiDavidTokenSpaceGuid.PccdTime|0|UINT32|0x11111122
#david end
DSC文件中可以修改PCD变量的值,这里我们不需要修改,不用去改DSC文件。就是dsc文件不写也可以
.dsc可以写成下面这种默认值的形式
#david start
gEfiDavidTokenSpaceGuid.PcdTime|0x0f
#david end
将BdsEntry里的PcdGet16 (PcdPlatformBootTimeOut)都改成PcdGet32(PccdTime)
但要在.inf文件中声明自己使用了变量,如以下:
[Pcd]
gEfiDavidTokenSpaceGuid.PcdTime
结果我是可行的