1.UEFI-edk2 开发环境搭建

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-08 09:44:16

EDK2是UEFI使用比较广泛的开源实现,支持在多种操作系统平台下进行开发。为了开发调试方便,这里采用在win10下用visual studio进行UEFI的开发。VS号称地表Top one的IDE,功能强大自不在话下,开发起来往往起到事半功倍的效果。此篇博客我们完成edk2源码的开发编译环境的搭建,同时编译运行一个模拟器,用来测试efi程序。

一、相关工具安装

首先下载安装vs2017或者vs2015,安装组件里面勾选上“使用C++的桌面开发”这一项。
接着要下载NASM工具,下载后建议安装到"C:\NASM"目录下。
最后下载安装IASL工具,下载后建议安装到"C:\IASL"目录下。
安装完成后,需要配置下环境变量,在Path环境变量里面添加IASL的安装路径,如下图所示。
在这里插入图片描述
还需要创建一个新的环境变量NASM_PREFIX,变量的值设置为NASM的安装路径。
在这里插入图片描述

二、编译basetools

edk2 github项目主页上下载edk2的源码包,通过Win+R -> cmd打开windows下的命令行,cd到edk2的源码目录下,输入如下命令编译basetools。

edksetup.bat  Rebuild

编译完成后会在 $(edk2-base)\BaseTools\Bin\Win32 目录下生成一些工具,这个工具会在后续编译efi工程的时候使用到。
在这里插入图片描述

三、config build

接下来需要编译生成config文件,该文件用于配置后续编译工程的工具链和项目名等信息,输入如下命令即可。

edksetup.bat 

edksetup.bat命令执行完成后,会在 $(edk2-base)\Conf 目录下生成几个.txt的文本文件,其中 Conf\target.txt 文件需要更改下TOOL_CHAIN_TAG配置,这个根据自己的VS版本来写,可以是VS2015/VS2017/VS2019等。
在这里插入图片描述
ACTIVE_PLATFORM配置的是默认编译的工程,EmulatorPkg/EmulatorPkg.dsc是一个模拟器的工程路径。
TARGET配置的是工程的编译模式,可以是RELEASE或者DEBUG。
TARGET_ARCH是目标架构,在windows+VS的话可选X64或者IA32。

四、编译模拟器

有了模拟器,就可以很方便的开发调试EFI驱动/程序,不用每次都把固件烧录到实体机上FLASH启动测试那么麻烦。Conf\target.txt 默认配置的就是EmulatorPkg模拟器的工程,这里只接用build命令编译即可。

edk2setup.bat
build

编译成功后如下图所示。
在这里插入图片描述
编译完成了,就可以运行模拟器了,我们可以cd到工程的输出目录下,运行目标文件。

cd Build\EmulatorIA32\DEBUG_VS2017\IA32\
WinHost.exe

运行WinHost.exe之后,UEFI固件的启动界面就出来了,可以通过按键选择进入UEFI SHELL或者配置界面进行efi程序的加载测试。
在这里插入图片描述

五、调试模拟器

用visual studio打开模拟器工程:$(edk2-base)\EmulatorPkg\Win\VS2017\Win.sln,即可在visual studio软件中编译运行UEFI模拟器工程了,也可以在efi应用/驱动上打上断点,以调试模式运行模拟器工程,即可调试efi应用/驱动,如下图所示,具体调试开发过程后续慢慢再讲。
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!