DebugPrint 推送空行(串行连接)

DebugPrint pushes empty line (Serial connection)

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

因为我正在使用串行连接进行调试,所以 DebugPrint 等调试函数的输出成功重定向到我的串行终端(在本例中为 PuTTY),有点。

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

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

#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

是什么导致了这个问题?

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

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