目录
21天 Intel CPU BIOS 学习专栏
第4天:编写和测试简单的BIOS模块
编写和测试简单的BIOS模块
今天我们将通过一个具体的例子来演示如何编写和测试一个简单的BIOS模块。我们将从创建项目文件开始,编写模块代码,然后编译和测试该模块。通过今天的课程,你将能够独立完成一个简单的BIOS模块的开发。
1. 创建项目目录
首先,我们需要创建一个新的项目目录,并设置必要的项目文件。
-
创建项目目录:
- 在
edk2目录下创建一个新的目录,例如SimpleBiosModule。 - 在
SimpleBiosModule目录下创建SimpleBiosModule.inf文件,内容如下: ini深色版本
[Defines] INF_VERSION = 0x00010005 BASE_NAME = SimpleBiosModule FILE_GUID = 12345678-1234-1234-1234-1234567890AB MODULE_TYPE = UEFI_DRIVER VERSION_STRING = 1.0 UNIVERSAL = TRUE PROCESSOR = IA32 X64 [Sources] SimpleBiosModule.c [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec [LibraryClasses] UefiLib UefiDriverEntryPoint [Protocols] gEfiShellProtocolGuid [FeaturePcd] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000000F
- 在
-
编写模块代码:
- 在
SimpleBiosModule目录下创建SimpleBiosModule.c文件,内容如下: c深色版本
#include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiApplicationEntryPoint.h> EFI_STATUS EFIAPI UefiMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { Print(L"Hello, World from SimpleBiosModule!\n"); return EFI_SUCCESS; }
- 在
2. 编译模块
接下来,我们需要编译我们刚刚创建的BIOS模块。
-
导航到
edk2目录:- 打开命令提示符或终端。
- 导航到
edk2目录: sh深色版本
cd path\to\edk2
-
编译模块:
-
运行以下命令编译模块:
sh深色版本
build -p SimpleBiosModule/SimpleBiosModule.inf -
如果一切顺利,编译完成后,你将在
Build目录下找到生成的.efi文件。例如:深色版本
Build\SimpleBiosModule\DEBUG_VS2019x86\X64\SimpleBiosModule.efi
-
3. 测试模块
我们可以使用QEMU或其他虚拟机工具来测试编译好的BIOS模块。
-
下载并安装QEMU:
- 访问 QEMU 官方网站。
- 下载并安装适合你操作系统的QEMU版本。
-
准备虚拟机环境:
- 确保你有一个可用的OVMF固件文件。如果你还没有,可以从EDK II的构建目录中找到它,例如:
深色版本
Build\OvmfPkg\X64\DEBUG_VS2019x86\FV\OVMF.fd
- 确保你有一个可用的OVMF固件文件。如果你还没有,可以从EDK II的构建目录中找到它,例如:
-
运行QEMU:
-
打开命令提示符或终端。
-
导航到QEMU的安装目录。
-
运行以下命令启动QEMU并加载你的BIOS模块:
sh深色版本
qemu-system-x86_64 -bios path\to\OVMF.fd -m 2G -hda path\to\mydisk.img -drive file=path\to\Build\SimpleBiosModule\DEBUG_VS2019x86\X64\SimpleBiosModule.efi,format=raw -
替换
path\to\OVMF.fd和path\to\mydisk.img为实际的文件路径。
-
-
验证模块:
- 如果一切正常,你应该会在QEMU的窗口中看到 "Hello, World from SimpleBiosModule!" 的输出。
作业
-
阅读材料:
- 阅读EDK II的官方文档,了解模块开发的最佳实践。
- 阅读QEMU的官方文档,了解其常用命令和选项。
-
实践任务:
- 编写一个更复杂的BIOS模块,例如读取系统时间并显示。
- 编译并测试该模块,记录下遇到的问题和解决方法。
明天的任务
明天我们将深入探讨Intel CPU的初始化过程,了解如何编写和测试CPU初始化模块。准备好迎接新的挑战吧!

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



