调试笔记-系列文章目录
调试笔记-20240516-Windows-使用VS2019编译edk2(上)
文章目录
- 调试笔记-系列文章目录
- 调试笔记-20240516-Windows-使用VS2019编译edk2(上)
- 前言
- 一、安装开发工具
- 1. 安装 VS2019
- 2. 安装 Python 3.10
- 3. 安装 iASL
- 4. 安装 NASM
- 二、准备 EDK2 源代码
- 1.从 github 下载
- 2. 从 gitee 下载
- 三、编译测试模拟器
- 1. 配置项目
- 2. 编译基本工具
- 3. 编译测试模拟器
- 4. 运行测试模拟器
- 总结
前言
本文介绍了在 Windows 平台上搭建 edk2 开发环境的步骤,为研究 QEMU 的UEFI 支持提供实验基础。
本文读者需要具备 Windows 平台的开发经验,并对 QEMU 系统仿真有一定的使用经验。
实验使用的电脑如下:
CPU:
Intel Core i5 8265U
操作系统:
Microsoft Windows 10 Professional (x64), Version 22H2, Build 19045.4412
一、安装开发工具
1. 安装 VS2019
下载地址:https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/history#installing-an-earlier-release
选择 BuildTools
下载后运行,选择 “使用C++的桌面开发”
我的安装路径是:D:\VS\2019\BuildTools
安装完成后,在系统变量中添加
CLANG_BIN=D:\VS\2019\BuildTools\VC\Tools\Llvm\x64\bin\
注意目录 bin 最后的 “”
2. 安装 Python 3.10
主页:https://www.python.org/
选择最新的稳定版本下载安装即可。
我的安装目录是:D:\Python\Python310\
安装完成后,在添加系统变量
PYTHON_HOME=D:\Python\Python310
3. 安装 iASL
下载地址: https://www.intel.cn/content/www/cn/zh/developer/topic-technology/open/acpica/download.html
选择 “Windows Binary Tools”
下载后解压安装到 D:\iASL\ 目录中
并在环境变量中添加
IASL_PREFIX=D:\iASL\
注意目录 iASL 后的 “\”
4. 安装 NASM
主页: https://www.nasm.us/
下载地址: https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/win64/
下载后安装到 D:\NASM\ 目录中
并在环境变量中添加
NASM_PREFIX=D:\NASM\
注意目录 NASM 后的 “\”
![添加系统变量 NASM_PREFIX
二、准备 EDK2 源代码
1.从 github 下载
项目主页:https://github.com/tianocore/edk2
使用命令
git clone https://github.com/tianocore/edk2.git edk2
或直接下载 zip 打包文件
下载解压后,需要对项目的子模块初始化,在 edk2 根目录下执行命令
cd edk2
git submodule update --init
2. 从 gitee 下载
项目主页:https://gitee.com/david921518/mingw-edk2](https://gitee.com/david921518/mingw-edk2)
使用命令
git clone https://gitee.com/david921518/mingw-edk2.git mingw-edk2
或直接下载 zip 打包文件
下载解压后,需要对项目的子模块初始化,在 edk2 根目录下执行命令
cd mingw-edk2
git submodule update --init
此仓库为我在 Windows MSYS2 环境中的工作仓库,同步更新开发中遇到的各种问题,建议使用此仓库来练习。
三、编译测试模拟器
1. 配置项目
启动 VS2019 的开发者命令行窗口,进入 edk2 项目的根目录。
注意,此处我们使用 VS2019 的开发者命令行窗口而不是直接用 Windows 自带的命令行窗口,这样可以省去配置环境变量的步骤。当然,如果有兴趣了解 VS2019 为我们设置了怎样的环境变量,你也可以用 Windows 自带的命令行工具一步一步添加缺少的环境变量。
运行命令,配置 EDK2 的编译设置。此命令在每一次新开 VS2019 开发者命令行窗口都需要执行一次,在窗口未退出前执行一次后不需要再执行。
edk2setup.bat
执行此命令后会在 Conf\ 目录中生成项目配置文件。
其中 target.txt 是我们重点关注的。
打开 target.txt 文件,确认以下设置
TARGET = DEBUG
...
TARGET_ARCH = X64
...
TOOL_CHAIN_TAG = VS2019
2. 编译基本工具
在 edk2 的根目录下,执行命令
cd BaseTools
nmake
执行成功,显示如下:
3. 编译测试模拟器
在 edk2 的根目录下,执行命令
build
执行成功,显示如下:
4. 运行测试模拟器
在运行模拟器前,需要将键盘切换到英文键盘,如下图:
在 edk2 的根目录下,执行命令
cd Build\EmulatorX64\DEBUG_VS2019\X64\
进入测试模拟器的生成目录
执行以下命令启动模拟器
WinHost.exe
在 UEFI 的 shell> 环境中运行命令
fs0:
这样 UEFI shell 就切换到主机的 Build\EmulatorX64\DEBUG_VS2019\X64\ 目录下了。
在 UEFI shell 中运行命令
dir
可以列出当前目录的文件信息,如下图:
最后运行命令
reset
退出模拟器。
总结
以上搭建了 EDK2 在 Windows 上使用 VS2019 进行开发的环境,并生成了第一个 EFI 模拟器程序。