DebugPrint 推空行串行连接

问题描述

决定写一个简单的“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;
}

串行输出

enter image description here

注意:我将我的程序链接IoLibSerialPortLibDebugLib

可能导致此问题的原因是什么?

解决方法

经过大量摆弄后我意识到,我手动指定了主函数的入口点 (efi_main),当使用 UefiDriverEntryPoint_ModuleEntryPoint /strong> 来自 EDK2 的库。

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