[原創]搭建UEFI調試環境


需要的軟件包如下

安裝UEFI開發環境EDK2

 

本文在Windows7x64上測試,安裝Windows SDK作為編譯器

  1. 安裝.Net Framework 4
  2. 安裝Windows SDK v7.1

  3. 安裝配置EDK2
    設置TARGET=NOOPT,TARGET_ARCH=X64,TOOL_CHAIN_TAG=VS2010x86,別的步驟請參考其它文章

編譯OVMF

給OvmfPkg添加NOOPT的TARGET,2016-7-16的edk2需要修改,以后的edk2更新了應該不需要。

執行編譯命令:build -p OvmfPkg\OvmfPkgX64.dsc -D SOURCE_DEBUG_ENABLE
把編譯得到的文件D:\EDK2\Build\OvmfX64\NOOPT_VS2010x86\FV\OVMF.fd復制到d:\temp\目錄下(這一步無所謂,知道編譯后的OVMF文件在哪就行)

安裝調試工具

  1. 安裝windbg(6.11.1.404_x86外的其它版本也可以)
  2. 安裝Intel UDK Debugger Tool v1.5,切記別修改默認安裝目錄C:\Program Files (x86)\Intel\Intel(R) UEFI Development Kit Debugger Tool


  3. 安裝qemu(特定版本http://homepage3.nifty.com/takeda-toshiya/qemu/qemu-0.13.0-windows.zip)
  4. 啟動Intel UDK Debugger Tool
  5. 啟動Qemu,Windbg馬上連接上斷下來(這里應該是最早的斷點),g繼續運行,隨着UEFI啟動Windbg加載很多PDB符號,在Windbg中主動斷下來后如下圖
    qemu-system-x86_64.exe -bios d:\temp\OVMF.fd -serial pipe:qemu_pipe_dbg

調試UEFI程序

  1. 編譯測試程序
    build -p AppPkg\AppPkg.dsc -m AppPkg\Applications\Main\Main.inf
  2. 復制文件d:\EDK2\Build\AppPkg\NOOPT_VS2015x86\X64\Main.efi到d:\temp\myefihd.vdi硬盤鏡像中(通過VirtualBox虛擬機)
  3. 啟動Intel UDK Debugger Tool
  4. 啟動Qemu
    qemu-system-x86_64.exe -bios d:\temp\OVMF.debug -hda d:\temp\myefihd.vdi -serial pipe:qemu_pipe_dbg
  5. Windbg連上后下未決斷點(在入口函數上下斷點,Main.efi的入口函數是main),g繼續執行
  6. 等一會OVMF就會啟動內置的shell,運行准備好的測試程序Main.efi
  7. Windbg馬上就會斷下來

 

參考資料

https://software.intel.com/en-us/articles/xdb-agent-based-uefi-debug

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM