UEFI EDKII 编程学习

2024-04-15 00:58
文章标签 学习 编程 uefi edkii

本文主要是介绍UEFI EDKII 编程学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境搭建部分

第一步:

下载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  指令运行模拟器程序。

这篇关于UEFI EDKII 编程学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904498

相关文章

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示