UEFI——edk安装与配置

本文大部分参考:罗冰,对应数据来源,并且记录了自己的安装及调试过程。

edk安装

Note:尝试在Windows10虚拟机中安装了edk2(使用git clone)及其各种stable版本,使用的配置以及安装步骤大体按照《UEFI编程实践》的配置过程,但均未果。不知是否为同一虚拟机曾安装过UDK2018的原因。之后再进行尝试。

之后建议安装过程参考github中edk官方文档信息进行对比。

UDK2018安装
  1. 主要参考Luobing安装UDK,以及官方说明
  2. 注意点:
    1. 安装虚拟机的时候安装了Windows 10,但开机总是跳出boot management然后更改设置为BIOS设置,成功
    2. 安装所需资料都在文章前述数据来源中。(包括udk,visual studio,openssl,nasm,asl,python)
    3. 使用的是VS2015 x86 Native Tools Command Prompt!

edk调试

UDK2018在WINDBG下的调试
  1. 主要参考Luobing以及《UEFI编程实践》以及这里
  2. 注意点:
    1. 大体步骤按照第一个参考
    2. 顺利进行到步骤3结束,在步骤4——调试UEFI app中,出现问题,先列出我的解决方案
      1. 使用步骤4提到的Luo2.efi以及《UEFI编程实践》中提到的helloworld.efi示例(都是通过),都不能跳转到相应的c文件。
      2. 使用例子是参考3的AppPkg的main作为示例进行调试,将然后调试部分对应的代码我是使用的是NOOPT,不是debug指令。
        使用的指令为build -p AppPkg\AppPkg.dsc -m AppPkg\Applications\Main\Main.inf -b NOOPT -a X64
        生成文件对应路径中为C:\MyWorkspace\edk2-vUDK2018\edk2-vUDK2018\Build\AppPkg\NOOPT_VS2015x86\X64\main.efi
      3. 把main.efi使用Winimage放入dos.img的根文件目录中
      4. 然后首先打开WINDBG,然后打开qemu_x86_64.bat,在WINDBG命令行中输出g,等待,以启动UEFI shell,此时FS0目录就是dos.img对应根目录,然后break WINDBG正在运行,使用bu加入断点,在UEFI shell中输出main.efi即可跳到相应源文件.c
        1. 这一过程首先会定位到cpubreakpoint.c,当点击break后会跳到cpusleep.c,然后会跳到bu设定源文件所在的点
      5. 常用指令(bu设breakpoint,bl显示所有breakpoint(若显示出来是eu,说明不对,没有找到对应breakpoint,正确一般是e(就我所见到的来说)),bc去除breakpoint,k查看)
UDK2018在VS2015下的调试
  1. 主要参考luobing以及《UEFI编程实践》
  2. 注意点:
    1. 大体步骤按照第一个参考,方式为-b DEBUG,可以调试
    2. 同样,使用其他不在NT32Pkg中的程序进行执行时,不能实现代码级的调试。
    3. 只可以IA32,用x64编译(《UEFI编程实践》里使用的)会出现错误。
      Notes: 只是想尝试一下,了解过程,(知道了.vcxproj里面可以设置build时的控制命令。)
posted @ 2022-04-12 19:42  nipper  阅读(392)  评论(0编辑  收藏  举报