问题标签 [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.
uefi - 变量存在时无法使用 EDK2 GetVariable2() 检索 UEFI 变量
我通过 Linux efivarfs 接口创建了一个非易失性 UEFI 变量。efivar
我可以使用命令行获取变量的值。但是,当我尝试在引导阶段通过 EDK2 获取该变量的值时,GetVariable2()
出现“未找到”错误。
这是 .dec 文件和 C++ 片段:
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/已经观察到此错误,但没有关于如何删除错误的答案。
那么我该如何解决这个错误呢?任何人?
提前致谢...
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 版本。
qemu - 如何在 qemu 上模拟支持安全功能的 sata 设备?
我可以使用如何在 QEMU 中模拟 SATA 磁盘驱动器中的答案在 qemu 上模拟 sata 设备,但是这个模拟设备不支持安全功能(可以使用 ATA 识别数据检查安全状态)。
如何在 qemu 上模拟支持安全功能的 sata 设备?
uefi - 如何将 iPXE 嵌入到基于 EDK2 的 UEFI 固件中?
我刚刚开始研究 UEFI 开发,作为一个游乐场,我有一个自定义的 AARCH64 平台,其中包含基于 EDK2 的源代码,用于构建完整的固件映像(要烧录到闪存中)。
DXE 驱动程序中的“Hello world”已经完成,所以我选择了一项实际任务:将 iPXE 包含到固件中以避免链式加载。
这个想法是构建 iPXE EFI 应用程序并将其放入固件卷中。然后我希望能够从 UEFI shell 中调用它,最后一步是将它添加到启动管理器中。
在这里我卡住了:我找不到有关如何将 EFI 应用程序添加到 FV 的任何信息。
请告知是否可能以及在哪里阅读有关它的信息。
谢谢!
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 相比),所以我想它远非“最小“ 版本。但是很难弄清楚要删除哪些功能(以及如何删除)。
我想知道是否有关于此类主题的详细指南...
c - 使用 GCC 构建的变量参数的 EDK2 Shell 应用程序在运行时会导致页面错误
在具有 gcc 的 Linux 主机下构建时,我在 EDK2(x64 shell 应用程序)下使用变量参数时遇到问题。程序构建但在执行时会在执行 VA_ARG() 时导致页面错误。
在带有 VS2015 的 Windows 主机下构建的相同代码可以正常工作。
这似乎与GCC 错误 50818有关,但我找不到解决方案。
c - 如何收集edk2?
我正在尝试根据 microsoft 的说明构建 edk2,但出现错误如何修复
c - 如何以编程方式使用参数启动 UEFI shell?
我正在使用 EDKII 编写 UEFI 模块。我希望此模块使用参数加载和启动 UEFI shell(以使用其命令行功能)。到目前为止,我有以下代码,它成功加载并启动了 UEFI shell,但我似乎无法弄清楚如何使用参数启动它。
我尝试在加载图像后但在启动它之前访问 EFI_SHELL_PARAMETERS_PROTOCOL,以为我可以从那里手动更改参数,但似乎当时尚未安装协议(即使它在 UEFI Shell 规范中说在调用 StartImage 之前安装协议)。
firmware - 驱动程序是否必须明确定义它如何在 EDK2/UEFI 中注册协议?
我将 EDK2 源代码作为起点。关于使用 EDK2 在 UEFI 中安装协议,我试图区分 UEFI 框架为您所做的事情以及您作为开发人员需要明确自己做的事情。
看起来开发人员需要为驱动程序定义一个实现来安装协议。看起来驱动程序也会有一个入口点,然后该驱动程序执行的一部分将调用安装与该驱动程序关联的协议/协议的代码。
这种高层次的理解正确吗?另一种选择是 UEFI 以某种方式具有在加载 UEFI 驱动程序或应用程序时查找协议和安装的机制。我想确保我明白安装协议是 UEFI 和 EDK2 提供接口来完成的事情,但这不是 UEFI 为你做的事情,而是你需要用 C 代码编写的事情。
对不起,如果这个问题有点抽象。如果有人解释驱动程序如何能够并且应该将各种协议安装到固件中,那就太好了。
此外,即使在卸载了安装它们的驱动程序后,协议是否继续存在?