標籤

2014年2月18日 星期二

UEFI edkI vs edkII


其實由intel和這種大企業制定的標準,本來就會比較OOXX。
現在又來個大改版,更加模組化。
光看資料的長相就大不同。



UEFI從edk到edkII,來小小整理一下,希望不要理解錯誤

UFEI是個interface,跟windows很像((畢竟就是這些人訂的
像是FV->folder, FFS->file,
所有描述的方式都是為了讓UFEI"認識"這是什麼東西。

到了edkII,又多了一個package,要讓他更模組化。
以往寫的driver或是module,就是一隻一隻的,沒有模組的概念。
現在可以把這些driver包起來變成一package。
蠻直觀,EX: Securitypkg,那大概裡面放的都是跟security有關的driver,
裡面會有自己的dsc,也可以分開build 這些package。
如果你發現package folder裡面沒有dsc檔,那是因為bios vendor幫你auto generate。
而且是for 整個project,我覺得失去edk2的原意,但你還是可以自己寫code去build。

缺點,是我覺得讓整個CODE又更加肥大了。

為了這樣的改變,就必須多一些描述,讓UEFI認識這些新東西。
像是inf裡面
[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePageNumber    ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageNumber     ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable            ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxEfiSystemTablePointerAddress         ## CONSUMES

多了packages and PCD的描述

至於PCD,platform configuration database,又讓code海更加茫茫。
翻開SPEC可用的protocol很簡單,不是get就是set。

我暫時簡單理解他像Setup variable那樣,也實際佔了ROM size,只是用途不同,可以runtime改變這些PCD的值((透過PCD的PROTOCOL去存取。
實作上還完全不明白。

DEC
定義PCD的entry,PCD entries會被build tool自動產生成 autogen.h autogen.c。

待續






Not least of which

"Not the least of which" usually follows a plural noun phrase that implies a set of things or qualities, and draws attention to a significant member of that set, e.g.

1. Tom has many engaging qualities, not the least of which is his considerable good humour.

Thus here, the underlined part is the set, and the emboldened part is the significant member of that set.

In your example, which is extremely elliptic, the set is only implicit:

2. Tom is a bad guy, [with many bad qualities], not the least of which [is the fact that] he is always criticizing others.

http://forum.wordreference.com/showthread.php?t=1442830