参考从零开始的UEFI裸机编程 (kagurazakakotori.github.io)https://kagurazakakotori.github.io/ubmp-cn/print.html
下载EDK2
不习惯它的开发方式,改!
头文件Uefi.h,搜索,在MdePkg/Include/Uefi.h。
开始按照教程
环境ubuntu,交叉编译工具链使用教程方式,做一个OS LOADER的EFI
1. HELLO UEFI
1.1 编译efi
struct EFI_SYSTEM_TABLE {
char _buf[60];
struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
unsigned long long _buf;
unsigned long long (*OutputString)(
struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
unsigned short *String);
unsigned long long _buf2[4];
unsigned long long (*ClearScreen)(
struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This);
} *ConOut;
};
void efi_main(void *ImageHandle __attribute__ ((unused)),
struct EFI_SYSTEM_TABLE *SystemTable)
{
SystemTable->ConOut->ClearScreen(SystemTable->ConOut);
SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello UEFI!\n");
while (1);
}
BIOS的EFI初始化好了,放在了struct EFI_SYSTEM_TABLE *SystemTable中,再运行自己的EFI,然后调用其中的接口。
main.c
#include <uefi.h>
/*
4.1 UEFI