EDK II是开源的对UEFI标准的实现,目前主流的IBV(BIOS代码供应商,像AMI、Insyde和Byosoft等)的代码都是基于EDK II做二次开发。本文将介绍在Windows10系统中使用VS2017做工具链,基于tag:edk2-stable201911版本代码搭建UEFI开发环境并能运行BIOS模拟器。

准备工作

1. 下载edk II代码。从github中的edk2仓库下载tag=edk2-stable201911的代码,链接为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/releasebuilds/2.14.02/win64/),安装到C:\nasm目录中。

5. 安装VS2017。

配置开发环境

1. 生成Win32 BaseTools。在代码目录打开CMD,首先运行命令:

cd BaseTools
toolsetup.sh

再返回代码根目录,运行命令:

cd ..
edksetup.bat Rebuild

运行完后在BaseTools\Bin目录下会生成Win32目录,在Conf\目录下回生成配置文件。

2. 编辑配置文件。打开Conf/target.txt文件并编辑:

ACTIVE_PLATFORM       = EmulatorPkg/EmulatorPkg.dsc
TARGET                = DEBUG
TARGET_ARCH           = IA32
TOOL_CHAIN_CONF       = Conf/tools_def.txt
TOOL_CHAIN_TAG        = VS2017
MAX_CONCURRENT_THREAD_NUMBER = 8

ACTIVE_PLATFORM是由DSC文件确定的需要编译的Pkg,这里默认是EmulatorPkg/EmulatorPkg.dsc。此版本中Windows和Linux系统下的模拟器全统一在EmulatorPkg里,Nt32Pkg和UnixPkg已经被废弃。TARGET可以设置为DEBUG或者RELEASE。TARGET_ARCH在Windows下可以设置为IA32或X64。TOOL_CHAIN_CONF表示编译工具链,根据计算机安装的编译器选择即可。我的计算机安装VS2017,所以就设置为VS2017。MAX_CONCURRENT_THREAD_NUMBER表示编译期间的最大线程数,设置为计算机的线程数即可。

3. 生成模拟器。运行命令:

build

出现下图说明编译已经成功了。

运行模拟器

编译成功后,运行Build\EmulatorIA32\DEBUG_VS2017\IA32目录下的host.exe文件,会出现下图画面:

按F2可以进入Setup界面:

本文的内容就此结束。

UEFI入门之EDK II开发环境搭建相关推荐

  1. 【官方搭建入门】JEECG 平台开发环境搭建必读

    [官方搭建入门]JEECG 平台开发环境搭建必读 下载地址:http://git.oschina.net/jeecg/jeecg 1. 标准开发环境:eclipse + maven + jdk7 + ...

  2. UEFI学习---EDK II开发环境的搭建

    EDK II的开发环境搭建(Windows系统) 一.搭建前的准备工作 二.软件安装 1.安装VS2019 社区版 2.安装Python 3.安装Git 4.安装Nasm 5.安装IASL 6.安装Q ...

  3. 【Java基础快速入门】概述及开发环境搭建

    概述及开发环境搭建 概述 历史 发展历程 运行机制 模块图 环境搭建 程序示例 注释 标识符 概述 历史 SUN:Stanford University Network 1982年成立 发展历程 Oa ...

  4. 鸿蒙os手机操作设置,华为鸿蒙HarmonyOS手机应用快速入门(一)开发环境搭建

    [趋势] 如果没有意外,"万物互联" 将在未来10-20年之内,呈增长式的爆发,所以从现在开始0-5年内是"万物互联"的模式探索期和协议定制期:第5-10年之内 ...

  5. 【JAVA零基础入门系列】Day1 开发环境搭建

    一.安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可. http://www.oracle.com/technetwork/java/javase/downloads/jdk ...

  6. .NET6入门:1.Windows开发环境搭建

    作为.NET的最新版本.NET6长期支持版已经发布,.NET6宣称是迄今为止最快的.NET.那当然不能落下时代的潮流,就让我们跟着文章进入.NET6的世界吧. 1. .NET6SDK下载 Downlo ...

  7. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建

    1. Kali linux是BT5的晋级版本,用于信息安全.基于Debian7内核.新建虚拟机. 2. 选择默认虚拟机 3. 选择稍后安装操作系统 4.选择Linux Debian7 64位,因为Ka ...

  8. 一篇文入门微信小程序开发环境搭建

    2017年小程序发布以来,经过近5年的发展,微信小程序开发已经日趋成熟.越来越多的商家已经开通了线上的电商小程序,一个是给店铺引流,另一方面也是更好的为顾客服务. 本文利用一定的篇幅讲解一下微信小程序 ...

  9. [官方Flink入门笔记 ] 三、开发环境搭建和应用的配置、部署及运行

    一.Flink 开发环境部署和配置 Flink 是一个以 Java 及 Scala 作为开发语言的开源大数据项目,代码开源在 GitHub 上,并使用 Maven 来编译和构建项目.对于大部分使用 F ...

最新文章

  1. Python-输入输出
  2. C++ Primer 5th笔记(chap 16 模板和泛型编程)重载模板和类型转换
  3. 实验二:进程的创建与可执行程序的加载
  4. Log4Net ,.net和SQL Server的完美结合
  5. go build不从本地gopath获取_跟我一起学习go语言,包依赖管理工具go mod
  6. oracle导入substring,java中substring()和oracle中substr()区别
  7. springboot配置单独的参数文件
  8. 即时通讯的企业应用和个人应用的区别
  9. docker pull 下载一半_Docker三个重要的基本操作,镜像,容量,仓库
  10. HDU1848 Fibonacci again and again【SG函数】
  11. c3p0使用 与批量生成
  12. python解常微分方程龙格库_求解常微分方程组初值问题的龙格库塔法分析及其C代码...
  13. fabric usage
  14. iPhone手机屏幕尺寸分辨率一览
  15. 大学四年软件工程专业的学习经验总结
  16. 快来直播:坦然面对东方甄选与股价跌宕起伏
  17. 苹果开发者计划注册流程
  18. SCAR:Scalable Consensus Algorithm 灵活共识算法
  19. 在i3wm中修改默认终端
  20. linux获取网卡协议地址,读取linux下的网络设备的mac地址与发送原始数据包 (2011-11-23 20:11)...

热门文章

  1. 友盟用户反馈自定义UI-Android
  2. 你所不知道的测试经验分享之安卓UI控件定位!
  3. matlab怎样灰度变换,matlab灰度变换函数
  4. Java古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  5. 白鲸优化算法(Beluga whale optimization,BWO)Python实现
  6. NC65 用户密码重置
  7. Android蓝牙音乐获取歌曲信息
  8. 平面设计的基础知识有哪些?
  9. conver(array)
  10. man查询括号中的数字含义