目录
21天 Intel CPU BIOS 学习专栏
第3天:开发环境搭建
开发环境搭建
今天我们将详细讲解如何搭建一个完整的BIOS开发环境。这包括安装和配置EDK II、设置环境变量、初始化EDK II等步骤。通过今天的课程,你将能够在一个干净的环境中开始编写和测试BIOS模块。
1. 安装和配置EDK II
EDK II(EFI Development Kit II)是一个开源的固件开发框架,广泛用于UEFI BIOS的开发。以下是详细的安装和配置步骤:
1.1 克隆EDK II仓库
-
安装Git:
- 访问 Git 官方网站。
- 下载并安装Git。
-
克隆EDK II仓库:
- 打开命令提示符或终端。
- 运行以下命令克隆EDK II仓库: sh
深色版本
git clone https://github.com/tianocore/edk2.git
-
初始化子模块:
- 进入克隆的目录: sh
深色版本
cd edk2 - 初始化子模块: sh
深色版本
git submodule update --init --recursive
- 进入克隆的目录: sh
1.2 安装依赖工具
-
安装Python:
- 访问 Python 官方网站。
- 下载并安装Python 3.x版本。
- 确保在安装过程中勾选“Add Python to PATH”选项。
-
安装Visual Studio:
- 访问 Visual Studio 官方网站。
- 下载适用于Windows的Visual Studio Community版(免费版)。
- 在安装向导中选择“自定义安装”。
- 选择以下组件:
- .NET桌面开发
- 桌面开发用C++
- Python开发(可选)
-
安装NASM:
- 访问 NASM 官方网站。
- 下载并安装NASM。
- 将NASM的安装路径添加到系统的PATH环境变量中。
1.3 配置环境变量
为了确保开发环境的正确配置,我们需要设置一些环境变量和路径。
-
设置环境变量:
- 打开“系统属性”对话框。
- 点击“高级系统设置”。
- 点击“环境变量”。
- 在“系统变量”部分,点击“新建”,添加以下变量:
EDK_TOOLS_PATH:指向EDK II工具目录,例如C:\edk2\BaseToolsPYTHON_HOME:指向Python安装目录,例如C:\Python39
- 修改
Path变量,添加以下路径:%EDK_TOOLS_PATH%\Source\C/bin%PYTHON_HOME%
-
验证配置:
- 打开命令提示符或终端。
- 运行以下命令验证配置是否成功: sh
深色版本
echo %EDK_TOOLS_PATH% echo %PYTHON_HOME%
2. 初始化EDK II
初始化EDK II是确保所有必要的工具和脚本都已正确设置的重要步骤。
-
生成BaseTools:
- 打开命令提示符或终端。
- 导航到
edk2目录。 - 运行以下命令生成BaseTools: sh
深色版本
build -j $(nproc) -p BaseTools\Source\C\Makefile
-
设置工作环境:
- 在
edk2目录下,创建一个Conf目录。 - 复制模板文件到
Conf目录: sh深色版本
copy Conf\tools_def.template Conf\tools.def copy Conf\target.template Conf\target.txt copy Conf\build_rules.template Conf\build_rules.txt
- 在
-
编辑配置文件:
- 打开
Conf\tools.def文件,确保PYTHON_COMMAND和其他路径设置正确。 - 打开
Conf\target.txt文件,设置目标平台和构建类型,例如: sh深色版本
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TOOL_CHAIN_TAG = VS2019x86 TARGET = DEBUG BUILD_NUMBER = 0 TOOL_CHAIN_CONF = Conf/tools.conf
- 打开
3. 编译和测试一个简单的BIOS模块
让我们编写并编译一个简单的BIOS模块,以确保开发环境配置正确。
-
创建项目目录:
- 在
edk2目录下创建一个新的目录,例如MyFirstModule。 - 在
MyFirstModule目录下创建MyFirstModule.inf文件,内容如下: ini深色版本
[Defines] INF_VERSION = 0x00010005 BASE_NAME = MyFirstModule FILE_GUID = 12345678-1234-1234-1234-1234567890AB MODULE_TYPE = UEFI_DRIVER VERSION_STRING = 1.0 UNIVERSAL = TRUE PROCESSOR = IA32 X64 [Sources] MyFirstModule.c [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec [LibraryClasses] UefiLib UefiDriverEntryPoint [Protocols] gEfiShellProtocolGuid [FeaturePcd] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000000F
- 在
-
编写模块代码:
- 在
MyFirstModule目录下创建MyFirstModule.c文件,内容如下: c深色版本
#include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiApplicationEntryPoints.h> EFI_STATUS EFIAPI UefiMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { Print(L"Hello, World!\n"); return EFI_SUCCESS; }
- 在
-
编译模块:
- 打开命令提示符或终端。
- 导航到
edk2目录。 - 运行以下命令编译模块: sh
深色版本
build -p MyFirstModule/MyFirstModule.inf
-
运行模块:
- 编译成功后,你可以在
Build目录下找到生成的.efi文件。 - 使用QEMU或其他虚拟机工具运行生成的模块,验证其功能。例如,使用QEMU: sh
深色版本
qemu-system-x86_64 -bios Build\OvmfPkg\X64\DEBUG_VS2019x86\FW\OVMF.fd -m 2G -hda mydisk.img -drive file=Build\MyFirstModule\DEBUG_VS2019x86\X64\MyFirstModule.efi,format=raw
- 编译成功后,你可以在
作业
-
阅读材料:
- 阅读EDK II的官方文档,了解其架构和开发流程。
- 阅读Visual Studio的官方文档,了解其常用功能和快捷键。
-
实践任务:
- 完成上述步骤,确保开发环境配置正确。
- 编译并运行一个简单的BIOS模块,记录下遇到的问题和解决方法。
明天的任务
明天我们将继续深入开发环境的搭建,重点介绍如何编写和测试更复杂的BIOS模块。准备好迎接新的挑战吧!
566

被折叠的 条评论
为什么被折叠?



