问题标签 [edk2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
79 浏览

uefi - 变量存在时无法使用 EDK2 GetVariable2() 检索 UEFI 变量

我通过 Linux efivarfs 接口创建了一个非易失性 UEFI 变量。efivar我可以使用命令行获取变量的值。但是,当我尝试在引导阶段通过 EDK2 获取该变量的值时,GetVariable2()出现“未找到”错误。

这是 .dec 文件和 C++ 片段:

0 投票
0 回答
199 浏览

linux - uuid-dev 未安装,Ubuntu

我正在尝试使用 coreboot + tianocore 为 Intel CPU 主板构建固件映像(我以前没有这样做,但我相信 coreboot+tianocore 应该是使用开源工具的正确方法)。我正在使用 Ubuntu 16.04.7 LTS。

我正在关注官方的 coreboot 教程:https ://doc.coreboot.org/tutorial/part1.html

我已经成功构建了教程中给出的 coreinfo 有效负载,但是当我尝试构建 tianocore 有效负载(在第 4 步)时,我收到以下错误:

它说未安装 uuid-dev。但是我已经安装了uuid-dev using sudo apt-get install uuid-dev,如下图:

确认已安装 uuid-dev,我尝试使用不同的标志、升级等重新安装它几次,但错误并没有消失。https://www.reddit.com/r/coreboot/comments/kigu2z/uuiddev_libuuiddev_tianocore/已经观察到此错误,但没有关于如何删除错误的答案。

那么我该如何解决这个错误呢?任何人?

提前致谢...

0 投票
1 回答
119 浏览

libc - 在 efi shell 应用程序中包含 edk2-libc

一种方法如何添加对https://github.com/tianocore/edk2-libc的支持,比如我想在我的 edk2 应用程序中包含 stdio 并使用 printf ?我遵循了 StdLib/Readme.txt,并且能够在 AppPkg 中成功构建示例,但是,当我尝试将 StdLib 添加到我的项目中时,我收到如下错误:

我确实将样板文件(!包括 StdLib/StdLib.inc)添加到了我的 dsc 文件中,在 inf 中,我将 StdLib.dec 添加到了 Packages 中,并将 LibC 和 LibStdio 添加到了 LibraryClasses 中。我正在使用 VS2017 工具链进行编译,并且正在使用 edk2-stable202108 版本。

0 投票
0 回答
38 浏览

qemu - 如何在 qemu 上模拟支持安全功能的 sata 设备?

我可以使用如何在 QEMU 中模拟 SATA 磁盘驱动器中的答案在 qemu 上模拟 sata 设备,但是这个模拟设备不支持安全功能(可以使用 ATA 识别数据检查安全状态)。

如何在 qemu 上模拟支持安全功能的 sata 设备?

0 投票
1 回答
95 浏览

uefi - 如何将 iPXE 嵌入到基于 EDK2 的 UEFI 固件中?

我刚刚开始研究 UEFI 开发,作为一个游乐场,我有一个自定义的 AARCH64 平台,其中包含基于 EDK2 的源代码,用于构建完整的固件映像(要烧录到闪存中)。

DXE 驱动程序中的“Hello world”已经完成,所以我选择了一项实际任务:将 iPXE 包含到固件中以避免链式加载。

这个想法是构建 iPXE EFI 应用程序并将其放入固件卷中。然后我希望能够从 UEFI shell 中调用它,最后一步是将它添加到启动管理器中。

在这里我卡住了:我找不到有关如何将 EFI 应用程序添加到 FV 的任何信息。

请告知是否可能以及在哪里阅读有关它的信息。

谢谢!

0 投票
1 回答
264 浏览

arm64 - 是否有将 edk2 移植到新的 ARM64 平台的指南?

我是 EDK2 的新手。

要将 ekd2 固件移植到新的 ARM64 平台,最好先获得一个至少可以运行 UEFI Shell 的最小 edk2 端口,可以在此基础上逐步添加改进。

第一步似乎相当陡峭,例如,如何确定平台中的最小“项目”集.dsc.fdf文件?就我而言,我想.fd为我的平台构建并将其视为 TF-A 的 BL33,实际上我想构建一个 edk2 固件来替换 u-boot。

在网上似乎很难找到这样的指南。我发现了一个旧版本的 edk2,其中包含一些指令,但显然它们已经过时(在最新master分支中不存在,而可以在 UDK 分支中找到,例如UDK2014),我不确定为什么这些文档会从master分支中删除。

目前我可以.fd为 FVP ( edk2-platforms/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc) 构建,似乎构建输出FVP_AARCH64_EFI.fd应该被视为 BL33。理论上这可能是我的新 ARM64 平台的原型,但对我来说它太复杂了:固件大小约为 2.5MiB(与 500K 的 u-boot 相比),所以我想它远非“最小“ 版本。但是很难弄清楚要删除哪些功能(以及如何删除)。

我想知道是否有关于此类主题的详细指南...

0 投票
1 回答
70 浏览

c - 使用 GCC 构建的变量参数的 EDK2 Shell 应用程序在运行时会导致页面错误

在具有 gcc 的 Linux 主机下构建时,我在 EDK2(x64 shell 应用程序)下使用变量参数时遇到问题。程序构建但在执行时会在执行 VA_ARG() 时导致页面错误。

在带有 VS2015 的 Windows 主机下构建的相同代码可以正常工作。

这似乎与GCC 错误 50818有关,但我找不到解决方案。

0 投票
0 回答
18 浏览

c - 如何收集edk2?

我正在尝试根据 microsoft 的说明构建 edk2,但出现错误如何修复

0 投票
1 回答
81 浏览

c - 如何以编程方式使用参数启动 UEFI shell?

我正在使用 EDKII 编写 UEFI 模块。我希望此模块使用参数加载和启动 UEFI shell(以使用其命令行功能)。到目前为止,我有以下代码,它成功加载并启动了 UEFI shell,但我似乎无法弄清楚如何使用参数启动它。

我尝试在加载图像后但在启动它之前访问 EFI_SHELL_PARAMETERS_PROTOCOL,以为我可以从那里手动更改参数,但似乎当时尚未安装协议(即使它在 UEFI Shell 规范中说在调用 StartImage 之前安装协议)。

0 投票
0 回答
21 浏览

firmware - 驱动程序是否必须明确定义它如何在 EDK2/UEFI 中注册协议?

我将 EDK2 源代码作为起点。关于使用 EDK2 在 UEFI 中安装协议,我试图区分 UEFI 框架为您所做的事情以及您作为开发人员需要明确自己做的事情。

https://github.com/tianocore/edk2/blob/0ecdcb6142037dd1cdd08660a2349960bcf0270a/ShellPkg/Application/Shell/ShellParametersProtocol.c

看起来开发人员需要为驱动程序定义一个实现来安装协议。看起来驱动程序也会有一个入口点,然后该驱动程序执行的一部分将调用安装与该驱动程序关联的协议/协议的代码。

这种高层次的理解正确吗?另一种选择是 UEFI 以某种方式具有在加载 UEFI 驱动程序或应用程序时查找协议和安装的机制。我想确保我明白安装协议是 UEFI 和 EDK2 提供接口来完成的事情,但这不是 UEFI 为你做的事情,而是你需要用 C 代码编写的事情。

对不起,如果这个问题有点抽象。如果有人解释驱动程序如何能够并且应该将各种协议安装到固件中,那就太好了。

此外,即使在卸载了安装它们的驱动程序后,协议是否继续存在?