top swap

大家都知道,CPU开始拿的第一条指令,是位于0xFFFFFFF0的地方。FV_BB存放的是SEC和PEI阶段的Code,在0xFFFFFFF0的位置,拿的第一条指令永远都是SEC的Code。
从UEFI启动顺序就知道,SEC和PEI是UEFI开始的地方。所以FV_BB这块代码在开始的时候就决定着BIOS能不能运行下去。
BIOS更新FV_BB过程

  1. BIOS在更新之前,FV_BB和FV_BB_BACKUP区域的数据都是一样的。
  2. BIOS在更新BIOS的时候,也是一块一块刷的,我们这里假设先刷的是FV_BB区域。
  3. 当在开始刷FV_BB区域的时候,Top Swap bit位就会被写为1,等刷完FV_BB,Top Swap再被写为0。
    那么,如果在刷的过程中,出现了异常情况(比如断电)导致FV_BB阶段未完成,下一次开机再从FV_BB启动,就会出现启动失败。这个时候,Top Swap作用就来了。因为更新FV_BB阶段未完成,所以Top Swap bit位的就是1。
    下一次开机的时候,Cpu下地址0xFFFFFFF0给PCH,PCH会去检查Top Swap的值,如果是1,就不会从FV_BB开始启动,会将FV_BB的地址+1M(FV_BB的大小),从FV_BB_BACKUP位置启动,而FV_BB_BACKUP这块数据并未被破坏,启动自然没问题

简单总结一下:
如果FV_BB未完成更新,下一次启动将会从FV_BB_BACKUP启动,并继续完成更新BIOS的大业;
如果FV_BB完成更新,直至BIOS更新完成前,不管出什么意外,下一次启动都将从FV_BB启动,并继续后续相关动作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值