在傳統的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 ,這個檔案可以分成上下兩部分(下圖左邊所示)
下半部為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再比對,每次都不一樣..是正常嗎?是連系統時間都備份了嗎?
張貼留言