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;
}
串行输出:
注意:我将我的程序链接到 IoLib、SerialPortLib 和 DebugLib
是什么导致了这个问题?
经过大量摆弄后我意识到,我手动指定了我的主函数 (efi_main
) 的入口点,在使用 [=16] 时它应该指向 _ModuleEntryPoint
=]UefiDriverEntryPoint 来自 EDK2 的库。
这立即解决了我的问题:)
决定编写一个简单的“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;
}
串行输出:
注意:我将我的程序链接到 IoLib、SerialPortLib 和 DebugLib
是什么导致了这个问题?
经过大量摆弄后我意识到,我手动指定了我的主函数 (efi_main
) 的入口点,在使用 [=16] 时它应该指向 _ModuleEntryPoint
=]UefiDriverEntryPoint 来自 EDK2 的库。
这立即解决了我的问题:)