本文大部分参考:罗冰,对应数据来源,并且记录了自己的安装及调试过程。
edk安装
Note:尝试在Windows10虚拟机中安装了edk2(使用git clone)及其各种stable版本,使用的配置以及安装步骤大体按照《UEFI编程实践》的配置过程,但均未果。不知是否为同一虚拟机曾安装过UDK2018的原因。之后再进行尝试。
之后建议安装过程参考github中edk官方文档信息进行对比。
UDK2018安装
- 主要参考Luobing安装UDK,以及官方说明
- 注意点:
- 安装虚拟机的时候安装了Windows 10,但开机总是跳出boot management然后更改设置为BIOS设置,成功
- 安装所需资料都在文章前述数据来源中。(包括udk,visual studio,openssl,nasm,asl,python)
- 使用的是VS2015 x86 Native Tools Command Prompt!
edk调试
UDK2018在WINDBG下的调试
- 主要参考Luobing以及《UEFI编程实践》以及这里
- 注意点:
- 大体步骤按照第一个参考
- 顺利进行到步骤3结束,在步骤4——调试UEFI app中,出现问题,先列出我的解决方案
- 使用步骤4提到的Luo2.efi以及《UEFI编程实践》中提到的helloworld.efi示例(都是通过),都不能跳转到相应的c文件。
- 使用例子是参考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
- 把main.efi使用Winimage放入dos.img的根文件目录中
- 然后首先打开WINDBG,然后打开qemu_x86_64.bat,在WINDBG命令行中输出g,等待,以启动UEFI shell,此时FS0目录就是dos.img对应根目录,然后break WINDBG正在运行,使用bu加入断点,在UEFI shell中输出main.efi即可跳到相应源文件.c
- 这一过程首先会定位到cpubreakpoint.c,当点击break后会跳到cpusleep.c,然后会跳到bu设定源文件所在的点
- 常用指令(bu设breakpoint,bl显示所有breakpoint(若显示出来是eu,说明不对,没有找到对应breakpoint,正确一般是e(就我所见到的来说)),bc去除breakpoint,k查看)
UDK2018在VS2015下的调试
- 主要参考luobing以及《UEFI编程实践》
- 注意点:
- 大体步骤按照第一个参考,方式为-b DEBUG,可以调试
- 同样,使用其他不在NT32Pkg中的程序进行执行时,不能实现代码级的调试。
- 只可以IA32,用x64编译(《UEFI编程实践》里使用的)会出现错误。
Notes: 只是想尝试一下,了解过程,(知道了.vcxproj里面可以设置build时的控制命令。)