edk

UEFI入门之EDK II开发环境搭建

情到浓时终转凉″ 提交于 2020-01-30 22:54:26
EDK II是开源的对UEFI标准的实现,目前主流的IBV(BIOS代码供应商,像AMI、Insyde和Byosoft等)的代码都是基于EDK II做二次开发。本文将介绍在Windows10系统中使用VS2017做工具链,基于tag:edk2-stable201911版本代码搭建UEFI开发环境并能运行BIOS模拟器。 准备工作 1. 下载edk II代码。从github中的edk2仓库下载tag=edk2-stable201908的代码,链接为 https://github.com/tianocore/edk2 。不同版本的代码依赖的软件版本也不同,搭建步骤也略有区别,edk2-stable201911是目前最新的稳定版代码,本文仅适用于edk2-stable201911版本,之前版本的搭建方式请参考其他的博客。 2.安装Python3。从Python官网或Anaconda下载python3.7及以上版本安装,安装后将安装路径添加到系统变量,并将系统变量添加到环境变量Path中。 3.安装IASL。下载IASL(地址: https://acpica.org/sites/acpica/files/iasl-win-20200110.zip )并解压到C:\ASL 目录下。 4.安装NASM。下载NASM(地址: https://www.nasm.us/pub/nasm

UEFI手札

僤鯓⒐⒋嵵緔 提交于 2020-01-23 09:14:58
基于Intel TianoCore衍生的EDK-II诞生的UEFI,用来取代Legacy BIOS。 INF文件 Module Information File,模块描述文件。Module可以是可执行文件,也可以是库文件,Module Type包括BASE/SEC/PEI_CORE/PEIM/DXE_CORE/DXE_DRIVER/DXE_RUNTIME_DRIVER/DXE_SMM_DRIVER/DXE_SAL_DRIVER/UEFI_DRIVER/UEFI_APPLICATION [Defines] INF_VERSION = 0x00010006 BASE_NAME = LinuxFdtLoader FILE_GUID = f536d559-459f-48fa-8bbc-43b554ecae8d MODULE_TYPE = UEFI_APPLICATION VERSION_STRING = 0.1 ENTRY_POINT = UefiMain             //入口函数 [Sources]                           //源码 LinuxFdtLoader.c LinuxConfig.c [Packages]                           //依赖的Package ArmPkg/ArmPkg.dec MdePkg

edk2 fsp编译错误

萝らか妹 提交于 2019-12-11 14:30:42
Set WORKSPACE as: /home/lizw/prj/edk2workspace Calling make -C /home/lizw/prj/edk2workspace/edk2/BaseTools make: 进入目录“/home/lizw/prj/edk2workspace/edk2/BaseTools” make -C Source/C make[1]: 进入目录“/home/lizw/prj/edk2workspace/edk2/BaseTools/Source/C” Attempting to detect HOST_ARCH from 'uname -m': x86_64 Detected HOST_ARCH of X64 using uname. mkdir -p . make -C Common make[2]: 进入目录“/home/lizw/prj/edk2workspace/edk2/BaseTools/Source/C/Common” make[2]: 对“all”无需做任何事。 make[2]: 离开目录“/home/lizw/prj/edk2workspace/edk2/BaseTools/Source/C/Common” make -C BrotliCompress make[2]: 进入目录“/home/lizw/prj

BIOS学习1.hello world

六眼飞鱼酱① 提交于 2019-12-10 13:04:25
作为新的学习,上手之后第一件事是想来个helloworld。记录一下整个过程吧。 开发环境:Ubuntu18.04虚拟机 + EDK2/OVMF + Qemu 1.第一步是OVMF的编译,以及Qemu的安装,这个之前也提过了,不再叙述 2.第二步,自定义一个hello world的shell app: 2.1 在edk2主目录下新建uefi/melo目录 2.2 进入melo目录,新建资源文件main.c以及工程文件Melo.inf 2.3 main.c: #include <Uefi.h> EFI_STATUS EFIAPI Melo (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE * SystemTable) { SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello World!! I'm melo**********\n"); return EFI_SUCCESS; } 2.4 Melo.inf: [Defines] INF_VERSION = 0x00010005 BASE_NAME = Melo FILE_GUID = 9023AB23-ED34-ffdb-AE97-1FA5E4ED2117 MODULE_TYPE = UEFI_APPLICATION

edk2中子目录介绍

白昼怎懂夜的黑 提交于 2019-11-26 17:17:33
edk2中子目录介绍 来源 https://blog.csdn.net/rikeyone/article/details/80760204 参考: https://github.com/tianocore/tianocore.github.io/wiki AppPkg UEFI Application Development Kit是一系列用来进行uefi app开发的套件,标准依赖库,工具以及demo,目标是降低UEFI app的开发门槛。 MdePkg 全称为“Module Development Environment Package”,这是一个特殊的package,包含了用于开发一个module所需要的最小环境。一个module可能也会依赖于其他的Package,但是所有modules必须依赖于MdePkg。 MdeModulePkg 此包提供符合UEFI/PI工业标准的模块,也提供该标准相关的开发环境,PPIs/PROTOCOLs/GUIDs和依赖库。 ArmPkg 提供ARM架构相关的protocols,属于ARM平台上的通用代码。 ArmPlatformPkg ARM开发板相关的UEFI代码,包含ARM平台上通用的一些组件,重复利用这些组建会令ARM平台的不同板型之间的移植变得更加容易。 BaseTools 该包提供编译相关的工具用于EDK和EDK2,比如