转:BIOS的恢复技术之Top Swap的原理应用

原文地址:https://baijiahao.baidu.com/s?id=1628248717252216590&wfr=spider&for=pcios

一版又一版的BIOS推送,目的无外乎就是为了用户更好的体验。领略到BIOS更新重要性的(或者领情的或者有更新强迫症的)用户,会动手去更新BIOS。不少用户担忧BIOS更新后的安全问题,尤为是不敢面对更新过程当中被打断后带来的“灾难后果”。安全

华硕BIOS更新界面

其实,你能够彻底的将心放在肚子里,咱们将全程为您的BIOS更新保驾护航,这就是今天科普的BIOS恢复技术。ide

BIOS恢复技术spa

BIOS恢复技术,就是当用户在更新BIOS的时候,出现了意外状况(好比断电)而致使的BIOS更新失败,下次开机的时候,BIOS还能正常启动的过程。orm

Dual

常见的BIOS恢复技术以Top Swap /Dual BIOS为主。在这里,针对Top Swap作一详细介绍。blog

Top Swapget

首先,Top Swap(TS)是桥(PCH)里面的一个Bit位,默认值为0。须要注意的是:这个bit值,是由主板上battery(纽扣电池)保存的。it

纽扣电池

其次,既然要说BIOS的恢复技术,就必需要提到Bios的内容存储结构。BIOS ROM就是若干个FV(Fireware Volume)组成的,每一个FV都有本身的使命,并且对于一些特殊的FV,占有的空间大小甚至是固定的。io

好比业内常常提到的NVRAM(NVRAM_BACKUP),在Rom Layout中就是一个FV,大小通常是128K;FV_BB,inel目前规定大小为1M。(以下具备Top Swap功能的Rom Layout部分组成FV,FV_BB_BACKUP为FV_BB的备份)class

你们都知道,CPU开始拿的第一条指令,是位于0xFFFFFFF0的地方。FV_BB存放的是SEC和PEI阶段的Code,在0xFFFFFFF0的位置,拿的第一条指令永远都是SEC的Code。(下图:Rom Layout结构图)

从UEFI启动顺序就知道,SEC和PEI是UEFI开始的地方。因此FV_BB这块代码在开始的时候就决定着BIOS能不能运行下去。

Top Swap的目的,就是为了保证SECPEI阶段的数据完整性。简单的说就是,当电源上电的一刻起,CPU要能正确执行到BIOS里面的代码。

Top Swap原理以及应用

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启动,并继续后续相关动做。

相关文章
相关标签/搜索