====资料查找阶段=======
uefi官网
这里没有开发需要的代码和库,但是有很多资料文档,比如UEFI Specification就在Developer->Specification Library里面。
udk的github网址
这里面有提供各种版本UDK和说明文档,根据edk2的项目中的readme可以找到EDK II
https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II
该页面最下面提供了UDK各种版本的链接,2022年看到最新版本是UDK2018,由于公司用的是UDK2015,所以就选择了UDK2015,
https://github.com/tianocore/tianocore.github.io/wiki/UDK2015
该页面提供了UDK2015 Downloads的各种资源,我们开发需要的是workspaces,所以选择UDK2015 Workspace (ZIP File)
https://github.com/tianocore/udk/releases/download/UDK2015/UDK2015.Complete.MyWorkSpace.zip
下载解压后有两个目录,三个压缩包,一个txt

其中UDK2015-ReleaseNotes-MyWorkSpace.txt里面讲解了环境搭建的步骤。从百度和google中搜索到的UDK环境搭建的步骤也和这个MyWorkSpace.text差不多。
接下来就是按照MyWorkSpaces.txt中的描述来搭建环境了,在windows环境上,需要操作的步骤就在HOW TO BUILD ON A WINDOWS SYSTEM里面。
======环境搭建阶段======================
1.安装VisualStudio 2013并且要选择amd64编译器选项
2.解压UDK2015.MyWorkSpace.zip,将解压后生成的MyWorkSpace目录复制到D盘根目录,并将BaseTools(Windows).zip解压到D:\MyWorkSpace,行程如下目录结构

3.参考MyWorkSpace\CryptoPkg\Library\OpensslLib\Patch-HOWTO.txt里面的讲述生成OpenSSL* Crypto Library,这个步骤在下面有介绍。没执行完的话,不要执行下一步,
4.进入D:\WorkSpace目录执行edksetup --NT32
生成OpenSSL* Crypto Library的步骤
1.下载openssl
http://www.openssl.org/source/openssl-1.0.2d.tar.gz
2.解压openssl到MyWorkSpace\CryptoPkg\Library\OpensslLib\openssl-1.0.2d,形成目录

3.下载安装gnuwin32的patch组件,txt中给出的下载链接是:
http://gnuwin32.sourceforge.net/packages/patch.htm
直接前往这个链接发现下载的sed,并不是patch

于是前往gunwin32的官网
http://gnuwin32.sourceforge.net/
然后从Download all里面找到了patch
https://udomain.dl.sourceforge.net/project/gnuwin32/patch/2.5.9-7/patch-2.5.9-7-setup.exe
安装后目录如下:

一开始根据错误的链接安装sed,所以现在有patch和sed,接下来往环境变量PATH中添加patch所在目录,是的patch命令可以直接使用
4.执行patch命令
- cd $(WORKSPACE)\CryptoPkg\Library\OpensslLib\openssl-1.0.2d
- patch -p0 -i ..\EDKII_openssl-1.0.2d.patch
- cd ..
- Install.cmd
-
使用其他版本的VisualStudio编译UDK
1.打开MyWorkSpace\Conf\target.txt
2.修改TOOL_CHAIN_TAG = VS2008x86
TOOL_CHAIN_TAG能设置的值只能从tools_def.txt中取
从tools_def.txt看到的vs2008对应的目录是C:\Program Files\Microsoft Visual Studio 9.0
但是我安装的是vs2019,对应的目录是C:\Program Files\Microsoft Visual Studio 14.0
所以我把tools_def.txt中的9.0改成了14.0***不推荐使用这种方法***
===========第一个UEFI项目===============
第一个efi项目参考
编译第一个uefi文件_youyudexiaowangzi的博客-CSDN博客_efi文件编译
UEFI的项目目录必须放到MyWorkSpace目录,如果想放在其他目录,可以在MyWrokSpace目录创建一个软链接指向项目目录
===========传统bios启动UEFI程序===========
https://github.com/tianocore/tianocore.github.io/wiki/DuetPkg
据说EDKII中的DuetPkg可以支持刻录U盘,然后在传统bios主机上通过启动U盘进入UEFI Shell命令行。这个暂时还没空研究,先贴一下参考资料