需要的软件包如下

安装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

 

posted on 2016-08-20 09:51  zhongts  阅读(9644)  评论(0编辑  收藏  举报