C DebugPrint推送空行(串行连接)
在决定用EDK2编写一个简单的“Hello World!”程序时, 我偶然发现了以下问题: 由于我使用串行连接进行调试,调试函数的输出(如DebugPrint成功地重定向到我的串行终端(本例中为PuTTY),这是一种很好的方式 在UEFI外壳中编译并执行以下程序后,我只需 结果是空行。 但在再次执行相同的二进制文件后,该行将以其全部优点成功打印出来 这是我运行的程序的源代码:C DebugPrint推送空行(串行连接),c,edk2,C,Edk2,在决定用EDK2编写一个简单的“Hello World!”程序时, 我偶然发现了以下问题: 由于我使用串行连接进行调试,调试函数的输出(如DebugPrint成功地重定向到我的串行终端(本例中为PuTTY),这是一种很好的方式 在UEFI外壳中编译并执行以下程序后,我只需 结果是空行。 但在再次执行相同的二进制文件后,该行将以其全部优点成功打印出来 这是我运行的程序的源代码: #include <Uefi.h> #include <Library/DebugLib.h>
#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;
}
#包括
#包括
EFI_状态
efi_主(efi_句柄ImageHandle,
EFI_系统_表*系统表
)
{
调试打印(调试信息,“你好,世界!\n”);
返回EFI_成功;
}
串行输出:
注意:我将我的程序链接到IoLib、SerialPortLib和DebugLib
是什么导致了这个问题?经过大量的修改,我意识到我手动指定了我的主函数的入口点(
efi_main
),当使用EDK2中的UefiDriverEntryPoint库时,它应该指向\u ModuleEntryPoint
这立刻解决了我的问题:)尝试
DebugPrint(DEBUG_INFO,“Hello World!\n”);调试打印(调试信息,“你好,世界!\n”)代码>和调试打印(调试信息,“Hello World!\n Hello World!\n”)代码>看看发生了什么事已经试过了,但遗憾的是也没用