0

在决定写一个简单的“Hello World!” 在 EDK2 程序中,我偶然发现了以下问题:

当我使用串行连接进行调试时,调试功能(如DebugPrint )的输出成功地重定向到我的串行终端(在本例中为 PuTTY)

在 UEFI shell 中编译执行以下程序后,我只是得到一个空行。但是在再次执行相同的二进制文件后,该行被成功打印出来了。

这是我运行的程序的源代码:

#include <Uefi.h>
#include <Library/DebugLib.h>

EFI_STATUS
efi_main(EFI_HANDLE ImageHandle, 
    EFI_SYSTEM_TABLE* SystemTable
    )
{
    DebugPrint(DEBUG_INFO, "Hello World!\n");
    return EFI_SUCCESS;
}

串行输出:

在此处输入图像描述

注意:我将我的程序与IoLibSerialPortLibDebugLib 相关联

什么可能导致此问题?

4

1 回答 1

0

经过大量摆弄后,我意识到,我手动指定了我的主函数 () 的入口点,当使用 EDK2 中的UefiDriverEntryPoint库时efi_main,它应该指向。_ModuleEntryPoint

这立即解决了我的问题:)

于 2021-04-01T12:42:50.953 回答