iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

嗨我是k66,前一篇介紹想做的九項功能,今天介紹實作第一項—顯示OinkBT(OinkBootloader)的Logo的背後思路。

開發UEFI過程會是需先找到對應的C function/variable,還要在INFDSC內填上對應的library,相信大家在Day8已經體會過,
光是HelloWorld.dsc[LibraryClasses]就有13項。

因此,為加速開發,我們想要顯示Logo可參考MdeMoudle\Logo\,資料夾內有Logo.cLogo.infLogo.bmp[註1]。
https://ithelp.ithome.com.tw/upload/images/20230918/20161828jdpTSmmY81.png

觀察Logo.c會用到的Library,除了基本的<Uefi.h>,另還有<Protocol/>下的HiiDatabase.hHiiImageEx.hHiiPackageList.hGraphicsOutput.hPlatformLogo.h<Library>UEFIBootServicesTableLib.hDebugLib.h

https://ithelp.ithome.com.tw/upload/images/20230918/20161828gIuDHeA841.png

其中HII(Human Interface Infrastructure)[註2]是個好用的Library,在spec中1717頁提到可以產生幾乎和時下主流電腦大廠一致的圖形化介面(GUI),[註3]。


總結:

介紹完開發思路,包含MdeMoudle\Logo\資料夾下的.c.infINFMODULE_TYPE設為USER_DEFINEDC用到HII
明天實作會放程式碼,我們明天見!


[註1] UEFI提供的protocol僅接受bmp,建議先將png/jpg轉成bmp,目前已有許多線上網站可供png2bmp。
[註2] UEFI spec 第33至第35章https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf ,擁有以下功能:local/remote text/graphics display與OS-present GUI。
[註3] 時下筆電大廠使用UEFI的HII設計UEFI BIOS boot menu,若我們學會了HII便能做出媲美大廠的boot menu。


上一篇
【Day 11】實作UEFI開機畫面—功能設計
下一篇
【Day 13】自己寫UEFI顯示自己的Logo (1/5)
系列文
世界第一簡單的UEFI,實作打造自己的開機畫面31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言