UEFI原理与编程实践--PCD的使用

PCD说白了就是个全局变量,就看你怎么去调用了,先看一下它的定义用法:

 

 然后再看一下通过编译后有AutoGen生成的一个定义:

 

 PCD的类型有很多种,但是经常使用的也就是静态PCD与动态PCD

静态PCD

(干货)

顾名思义,就是一个静态全局变量,这种变量有个特点,一旦赋值了,是不能改动的,而且只能get不能set,这应该容易理解。典型代表:PcdsFixedAtBuild.common,这种需要说明一下,如果你在dec文件中定义了,然后又在dsc文件中定义,编译器只会选择dsc文件中定义的,也就是说,dsc文件中的定义会覆盖dec文件中的定义。当然还有一种情况,那就是FV的address和size,这个就是在FDF中定义咯。代码中怎么用?直接inf包含dec和PCD那列填入整个变量名,然后就直接使用PCD的函数get就行

动态PCD

PcdsDynamicDefault.common.DEFAULT,动态全局变量,这种PCD变量可以在代码中进行更改并进行传递,可以使用pcdget和pcdset,在使用动态PCD的时候需要特别注意,我操作过程中发现,不管你在dec还是dsc设置默认值,只要没使用过pcdset进行重设,那么编译出来貌似是个0,所以我的建议,一定要在某个地方进行pcdset,然后在pcdset后进行pcdget就行,这个值绝对是你想要的。比如:

UINT8 INDEX;

PcdSet8 (PcdXXXXX, INDEX);

OK,PCD理解这些基本上就可以使用了,protocol,variable,pcd,UEFI的三驾马车就说完了

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值