首页 > 编程语言 >UEFI EDKII 编程学习

UEFI EDKII 编程学习

时间:2023-01-25 20:06:05浏览次数:61  
标签:EDKII 编程 Applications MyWorkSpace UEFI build inf Main AppPkg


环境搭建部分

第一步:

下载EDK2

https://sourceforge.net/projects/edk2/files/latest/download?source=files

 第二步:

将下载的UDK2015.Complete.MyWorkSpace中的BaseTools(Windows).zip解压到自己定义的工作目录下,例如:E:\code\edkWorkSpace\

 第三步:

将UDK2015.Complete.MyWorkSpace包中的文件,具体路径如后面的内容(UDK2015.Complete.MyWorkSpace\UDK2015.MyWorkSpace.zip\MyWorkSpace\)全部解压到工作目录(E:\code\edkWorkSpace\)

 第四步:

到网站 https://www.acpica.org/downloads   下载asl编译器(可选)

第五步:

执行edksetup.bat --nt32

 第六步:

编辑E:\code\edkWorkSpace\Conf\target.txt中的TOOL_CHAIN_TAG = VS2010x86,(当前您使用的编译器),保存后并执行   build

 第七步:

执行build run 可打开模拟软件的界面。


标准C模块的加入

 使用 git clone https://github.com/tianocore/edk2.git  将代码下载到本地(文件大小在230M左右)

StdLib里面有含标准库的项目(AppPkg, StdLib, and StdLibPrivateInternalFiles.),需要拷贝到E:\code\edkWorkSpace\目录下

编译则使用指令: build -a X64 -p AppPkg\AppPkg.dsc

若需要将标准库中的文件便宜并可在虚拟机(SecMain)中运行,经过研究发现可以在 \AppPkg\AppPkg.dsc 中做如下修改

#OUTPUT_DIRECTORY = Build/AppPkg
OUTPUT_DIRECTORY = Build/NT32IA32


若编译自己的测试程序,则需要在\AppPkg\AppPkg.dsc里面加入自己写的部分(如下带下划线的部分)。例如:

[Components]

#### Sample Applications.
  AppPkg/Applications/Hello/Hello.inf        # No LibC includes or functions.
  AppPkg/Applications/Main/Main.inf          # Simple invocation. No other LibC functions.
  AppPkg/Applications/Enquire/Enquire.inf    #
  AppPkg/Applications/ArithChk/ArithChk.inf  #
  AppPkg/Applications/Main_test/Main.inf

然后使用指令编译:build -a X64 -p AppPkg\AppPkg.dsc -m AppPkg\Applications\Main_test\main.inf (假设您的程序路径在AppPkg\Applications\Main_test\下)

在使用build run  指令运行模拟器程序。

标签:EDKII,编程,Applications,MyWorkSpace,UEFI,build,inf,Main,AppPkg
From: https://blog.51cto.com/tody/6022763

相关文章

  • 节约内存的编程方式
    以图形用户界面(GUI,GraphicalUserInterface)为基础的Windows,可以说是一个巨大的操作系统。Windows的前身是MS-DOS操作系统,最初版本可以在128KB左右的内存上运行,而想要W......
  • 学习ASP.NET Core Blazor编程系列二十二——登录(1)
    学习ASP.NETCoreBlazor编程系列文章之目录学习ASP.NETCoreBlazor编程系列一——综述学习ASP.NETCoreBlazor编程系列二——第一个Blazor应用程序(上)学习A......
  • Day14 - 网络编程
    1.IP地址IP地址的概念IP地址就是标识网络中设备的一个地址,好比现实生活中的家庭地址。网络中的设备效果图:IP地址的表现形式说明:IP地址分为两类:IPv4......
  • Day13 - 多任务编程【线程】
    1.线程介绍线程也是实现多任务的一种方式一个程序在执行时会对应一个主进程,主进程中会有一个主线程通过主线程手动产生的线程称为子线程进程是最小资源分配单位线程......
  • Day12 - 多任务编程【进程】
    0.多任务的概念多任务是指在同一时间内执行多个任务,例如:现在电脑安装的操作系统都是多任务操作系统,可以同时运行着多个软件。1.多任务介绍多任务为提高程序的执行效......
  • 适合编程初学者的开源云笔记系统(Python版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......
  • 适合编程初学者的开源云笔记系统(PHP版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......
  • 适合编程初学者的开源云笔记系统(NodeJS版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......
  • 适合编程初学者的开源云笔记系统(Go语言版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......
  • 适合编程初学者的开源云笔记系统(Java版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......