UEFI代码中执行UEFI shell命令
在UEFI代码中执行UEFI shell命令,类似于linux下C代码执行system("command")系统调用。
MyUefiShell.inf内容如下:
[Defines] INF_VERSION = 1.25 BASE_NAME = MyUefiShell FILE_GUID = 6987936E-ED34-44db-AE97-1FA5E4ED2116 MODULE_TYPE = UEFI_APPLICATION VERSION_STRING = 1.0 ENTRY_POINT = UefiEntry [Sources] MyUefiShell.c [Packages] MdePkg/MdePkg.dec [LibraryClasses] UefiApplicationEntryPoint UefiLib [Guids] [Ppis] [Protocols] gEfiShellProtocolGuid [FeaturePcd] [Pcd]
MyUefiShell.c内容如下, 代码中执行UEFI shell的map命令:
#include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiBootServicesTableLib.h> #include <Protocol/Shell.h> EFI_STATUS EFIAPI UefiEntry(IN EFI_HANDLE imgHandle, IN EFI_SYSTEM_TABLE *sysTable) { EFI_SHELL_PROTOCOL *EfiShellProtocol; EFI_STATUS Status; gBS = sysTable->BootServices; gBS->SetWatchdogTimer(0, 0, 0, NULL); Print(L"Execute UEFI shell command!\r\n"); Status = gBS->LocateProtocol(&gEfiShellProtocolGuid, NULL, (VOID **)&EfiShellProtocol); if (EFI_ERROR (Status)) { return Status; } EfiShellProtocol->Execute(&imgHandle, L"map", NULL, &Status); return Status; }
在edk2/MdeModulePkg/MdeModulePkg.dsc 里[Components] 下添加:
MyEfiApp/MyUefiShell.inf
如何搭建EDK2开发环境和新建项目,以及编译UEFI程序,请参考:ubuntu20.04下搭建EDK2开发环境 。
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/17883748.html
分类:
UEFI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)