小華的部落格: EFI教學(1)-Flashmap.fdf

搜尋此網誌

網頁

星期二, 6月 14, 2011

EFI教學(1)-Flashmap.fdf

在傳統的BIOS 中我們都會使用一些Build tool把一些需要的檔案(OPROM/VBIOS...etc)、BIOS程式碼依照一些"描述檔的設定"把它依序擺放在一個BIOS Image file中,而在EFI BIOS中又是如何操作這部分的動作呢?

在EFI環境中已經有現成的Build tool會去做這件事情,他會去參考一個描述檔內的設定來幫你打包好整個BIOS Image file,然後我們就可以把這個BIOS Image file燒進去SPI ROM裡面。

而這個描述的檔案就叫做Flashmap.fdf ,這個檔案可以分成上下兩部分(下圖左邊所示)

上半部為FlashDevice ,簡稱FD,他是用來先區分好整個BIOS Image file的區塊為何? 他就類似像說你先決定好整個抽屜的大小,然後幫這個抽屜放隔板,隔出一塊塊小區塊。

下半部為FlashDeviceImage,也就是當你把抽屜放隔板,隔出一塊塊小區塊後,你要放那些東西進去這些小區塊,這些東西你就要描述在這邊。

所以從範例圖中可以看到上半部先隔出一個區塊叫做NVSTORE,而這個區塊還可以再細分成更多小區塊,例如圖中的SLPKEY,接著在FlashDeviceImage中告訴Build tool說你幫我把Slpkey.bin放到NVSTORE->SLPKEY的這個小區塊中。

而一般我們的EC BIOS也是透過這種方式包進去BIOS Image file內的。

但是你可能會問說那VBIOS跟OPROM也是嗎? 這兩個東西目前是包在DXE code裡面(我們稱FV,firmware volume,有很多的FV,DXE code只是其中之一),所以VBIOSOPROM並非像上面的方式來打包,而是先經過軟體壓縮後放進去FV裡面(可以省Code size),然後再把檔名為XXX.FV依照上面的方式描述在FlashDeviceImage {...} 內,然後Build tool就會把他們打包進去BIOS Image file。

因此,在BIOS開機過程中會把DXE code解壓縮,然後再從裡面把VBIOS/OPROM撈出來。

希望以上的解說對於剛入門EFI的人有幫助啦~

1 則留言:

無責任 提到...

你好~我對這種不了解,想請教

我在網拍購入1155工程主板,MSI代工
南橋是H67 B1,正式版是P67 B3
下載正式版FW大膽更新,開機無誤,
但原SATA有4組,但變成2組?...
所以又還原了

心裡亂想,如果把新FW中的SATA的模塊替換舊版應該可行的,但問題是我利用MMTOOL來看,並不清楚一個模塊才是...

不知你對這方面有沒有研究...

另一種可能想法,也許新FW加入非B3強制關閉SATA2.0的判斷?

再請問,備份EFI FW再比對,每次都不一樣..是正常嗎?是連系統時間都備份了嗎?