iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
SideProject30

世界第一簡單的UEFI,實作打造自己的開機畫面系列 第 29

【Day 29】豬腳城結局 + 回顧所學 + UEFI debug技巧

  • 分享至 

  • xImage
  •  

嗨我是k66,本系列文到了尾聲,為了有始有終,本篇會先看漫畫主角們最後結局。接著再帶讀者回顧這28天實作內容,最後再介紹一些寫UEFI程式時常見錯誤及如何debug。


https://ithelp.ithome.com.tw/upload/images/20231012/20161828UW8eErq0xv.png


回顧所學


以下為文字版,漫畫版請點


  • Day2:
    1.開機畫面轉圈圈: CPU與OS控制權的轉換
    2.開機過程控制權轉移: Bootloader->kernel->OS
    3.boot menu(Linux)
    4.boot menu(macOS)
    5.boot menu(Windows)
    6.豬油博士: Windows最霸道!我們的bootloader可以學它!
  • Day3:
    豬油博士: 第一支OinkBL.asm->Oink.bin
  • Day4:
    1.豬油博士: OinkBL.bin在QEMU上執行成功!
    2.Oink: 這支OinkBL.bin不能在實體機上運行怎辦?
    3.豬油博士: 寫UEFI!
  • Day5:
    1.豬油博士介紹UEFI開機七階
    2.豬油博士介紹簡化後的三階
  • Day6-Day7:
    手把手超詳細安裝過程
  • Day8:
    第一支efi
  • Day9:
    1.博士介紹超詳細Modue、Package
    2.博士介紹超詳細INF、DSC、DEC
  • Day10:
    介紹三種UEFI APPLICATION
  • Day11:
    設計OinkBL開機畫面

Day12以後正式實作開機畫面

  • Day12-13:
    1.設定螢幕解析度
    2.畫紅色矩形
  • Day14-Day15:
    畫Logo但會跑版
  • Day16:
    解決Logo跑板問題
  • Day17:
    提供第二種畫Logo方法
  • Day18:
    顯示系統時間
  • Day19:
    按ESC退出
  • Day20:
    豬油博士介紹kernel開發原理
  • Day21:
    1.Kernel.asm->Kernel.bin
    2.Kernel.c與Kernel.bin連結
  • Day22:
    OinkBootMenu.c
  • Day23:
    將OinkBL.c與kernel.c連結
  • Day24:
    開機畫面成形!
  • Day25:
    把之前寫的c檔案合併至Entry.c
  • Day26:
    在開機選單加入之前寫的螢幕解析度
  • Day27:
    來寫個UEFI小遊戲吧!

UEFI程式報錯與debug

代碼 問題描述 解法
7000 namke.exe沒裝好 更正之
7000 inf的EntryPoint設錯 更正之
7000 c程式存在compile error 單元測試
4000 缺library class [LibStudio] 通常找不到是錯字,需在inf內更正之
7000和F002 已初始化區域變數,但並未參考 表示變數被宣告但未使用,解法是使用之。
1005 Not support [xx.inf] Please select one of: all genc genmake modules libraries fds clean cleanall cleanlib run 通常是k66run1.bat或edk2setup.bat沒執行

今天回顧所學與介紹常見程式報錯,明天會介紹名詞與後續規劃,我們明天見!



上一篇
【Day 28】實體機跑自己寫的UEFI開機畫面
下一篇
【Day 30】結束是新的開始?
系列文
世界第一簡單的UEFI,實作打造自己的開機畫面31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言