轉: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啓動,並繼續後續相關動做。

相關文章
相關標籤/搜索