当前位置: 首页 > news >正文

EDK II PCD的概念、类型、使用

一、基本概念

在 UEFI中,PCD(Platform Configuration Database)是一种用于管理平台配置数据的机制。PCD 允许固件和操作系统在运行时读取和修改配置数据,以支持系统的定制和优化。

目的

为了把代码中可配置的信息抽象出来成PCD,使得Module和Platform容易做定制化,不用修改源码,容易维护,便于改动。三个方面:

1)不仅可以在Build-time中可以通过编译选项配置,

2)在Run-time(boot过程)中也可以配置,

3)在Binary中也可以进行配置

二、PCD类型

(对应的数据类型都是基本数据类型)

1、FixedAtBuild

作用域在一个模块中(模块级的)。用于控制Feature,在build之后不能修改(相当于一个宏)。不同模块可以配置不同的值。只支持静态设置。

2、FeatureFlag

和FixedAtBuild是一样的作用,但是是Boolean类型。(同1的作用)

3、PatchableInModule

作用域在一个模块中(模块级的),可以在Binary Level进行修改。

4、Dynamic

作用域在整个系统中(系统级的)。动态的(在整个启动过程中可以set、get)。PCD的值存在memory里面,下次启动时,上次更改的值丢失了,每次启动都是从default值开始。

5、DynamicEx

与DynamicEx类似。区别是:

如果platform是从源码build出来的,没有binary在里面的时候,PCD用的都是Dynamic这种类型;

如果在BIOS里面有一些模块是binary方式集成进来的而这些binary又需要用到PCD(用于Binary Release),那么这些Binary集成的要用到的PCD就必须要设置为DynamicEx类型。

6、DynamicHii

作用域在整个系统中(系统级的)。动态的(在整个启动过程中可以set、get)。PCD的值和EFI Variable关联在一起(可能是non-volatile的,下次作启动还起效)

7、DynamicVpd

作用域在整个系统中(系统级的)。动态的(在整个启动过程中可以set、get)。是存在VPD空间的(在FLASH上,只读),一般是出厂配置。

三、PCD的使用

1、在.DEC中声明

[PcdsFixedAtBuild]gEmulatorPkgTokenSpaceGuid.PcdEmuFlashNvStorageVariableBase|0x0|UINT64|0x00001014

PCD的唯一性是通过GuidName和TokenNum(0x00001014)决定。GuidName、TokenNum不能修改了,Value可以修改。

2、在.INF中引用

在Pcd section中列出来,示例如下:

[Pcd]gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow                          ## PRODUCESgEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn                       ## PRODUCESgEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution          ## PRODUCES

3、在.DSC中配置

设置PCD的值,示例如下:

[PcdsFixedAtBuild]gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0fgEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x06gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule|0x0

4、在.c中使用

通过PCB Library进行操作,最常用的是:PCDGetXX()PCDSetXX()
(其中:XX = 8/16/32/Size/Ptr/Boolean),示例如下:

PcdStatus = PcdSet16S(PcdPlatformBootTimeOut, GetFrontPageTimeoutFromQemu);
Timeout = PcdGet16(PcdPlatformBootTimeOut);
http://www.jsqmd.com/news/48182/

相关文章:

  • 岛屿计数深度解析:DFS与BFS的联系、差异及实战选择
  • 实验3 熟悉常用的HBase操作
  • 实用指南:开源AI智能客服、AI智能名片与S2B2C商城小程序融合下的商家客服能力提升策略研究
  • 2025 靠谱白酒商标转让平台测评:资源量 + 过户效率 大比拼
  • 完整教程:[sam2图像分割] mask_decoder | TwoWayTransformer
  • 微内核安全设计原理详解
  • 2025国内隐形车衣品牌最新推荐——莱茵骑士,守护原厂漆,源头工厂实力出圈,国产汽车贴膜、汽车装饰贴纸首选服务商
  • 2025 大型正规商标转让平台测评:5 大头部平台资质、标源全对比
  • 完整教程:攻克兼容、安全、零中断的“不可能三角”:电科金仓异构多活架构交出集团化医院信创最佳答卷!
  • c语言完成队列【由浅入深-数据结构】
  • JS 特性 有哪些
  • 动态重定位技术
  • 2025年11月汽车车衣、贴膜贴纸最新源头厂商榜单推荐,抗暴、防紫外线、汽车装饰,优质品牌选择指南!
  • 2025汽车隐形车衣Top10品牌榜单,防爆膜、紫外线贴膜、装饰贴纸哪个厂家好?服务、品质、性价比选型指南。
  • 自动清理B站稍后再看列表
  • Gemini下载
  • 高斯约旦消元模版
  • 每日一练-ping返回数据解析-TTL
  • 完整教程:设计模式-备忘录模式(Memento)
  • SQL之表的增删 - 指南
  • PixPin_cn_zh-cn_2.2.4.0 解锁会员功能
  • 左移是不是可以想成指针的移动
  • 详细介绍:【优选算法】DC-Mergesort-Harmonies:分治-归并的算法之谐
  • 2025年11月西安宣传片,西安活动跟拍,西安活动跟拍公司推荐:全流程拍摄服务与性价比优选指南
  • 2025年11月北京财税机构评价榜单:服务性能与用户口碑评测
  • 2025年11月立体库厂家推荐榜:基于资质与案例的五大品牌对比分析
  • 2025年11月立体库厂家推荐榜单与客观评价指南
  • 2025年11月西安宣传片,西安活动跟拍,西安活动跟拍公司推荐:影视制作口碑品牌与实力红榜发布
  • 【stm32】【Freertos】config详解(2) - 实践
  • V形磁场超时空转换器