Windows环境下使用VS调试EDK

您所在的位置:网站首页 windows10SDK使用方法 Windows环境下使用VS调试EDK

Windows环境下使用VS调试EDK

2023-06-24 06:55| 来源: 网络整理| 查看: 265

一、先下载好以下软件资料

【1】EDK2

下载地址:https://github.com/tianocore/edk2

功能说明:EDK2是UEFI标准的一种具体实现,而且是开源的

 

 【2】Python2.7.12

下载地址:https://www.python.org/downloads/windows/

 

 【3】Openssl

下载地址:https://www.openssl.org/source/

 

【4】Visual Studio 2015

下载地址:https://visualstudio.microsoft.com/

 

【5】edk2-BaseTools

下载地址: https://codeload.github.com/tianocore/edk2-BaseTools-win32/zip/master

 

【6】nasm-2.13.01-installer-x86.exe

下载地址:https://www.nasm.us/pub/nasm/releasebuilds/2.13.01/win32/

 

 二、软件配置

【1】软件安装

上一步下载的资源中,含有3个安装文件和3个需要解压的文件,文件的安装和配置按以下步骤依次进行。

1)先将VS2015安装好,注意需要勾选和C/C++相关的安装组件;

 

2)接着解压EDK到某个文件夹,在该文件夹里找到CryptoPkg\Library\OpensslLib\中的openssl文件夹,删除其中的内容,并将openssl-OpenSSL_1_1_0g.zip解压到该目录下。再将edk2-BaseTools解压到主目录下的BaseTools/Bin文件夹中,并命名为Win32(里面含有许多需要python环境来支持的文件);

3)接着安装nasm;

4)最后安装python;

 

【2】环境变量添加

该步骤为了避免每次cmd运行edksetup.bat –nt32后都要在shell里配置环境变量的麻烦。

操作方法为:右键我的电脑——属性——高级系统设置——高级——环境变量,添加如下环境变量名和变量值:

环境变量名

变量值

PYTHON_HOME

python的安装路径

Path(PATH)

Openssl文件夹的路径;nasm.exe的路径

如下图:

 

 

三、尝试编译EDK2工程

【1】先打开EDK2的解压目录,在目录下cmd打开shell界面输入edksetup.bat –-nt32并确定,估计目前应该会失败。

 

【2】前面编译失败的话,需要来修改一下工程里的配置文件,使用记事本或NotePad++打开主目录下的BaseTools/Conf/target.template,做以下修改:

ACTIVE_PLATFORM       = Nt32Pkg/Nt32Pkg.dsc

TOOL_CHAIN_TAG        = VS2015

 

【3】现在再次cmd,运行edksetup.bat -–nt32应该没有error提示了,Warning暂时不用取管它。运行结果如下图:

 

【4】接着build,出现“Done”,表示编译最终通过。

 

【5】最后build run,打开shell界面,即可运行shell下的App,如输出“Hello World!”

 

 

 

四、编写简单Shell APP并调用VS调试

       一个简单的Shell APP最少需要包含一个.c文件和.inf文件,其中.inf文件是用于指导编译器编译本module。下面给出简单的.c和.inf文件的具体内容。

.c文件:

#include

 

EFI_STATUS

EFIAPI

UefiHello (

  IN EFI_HANDLE        ImageHandle,

  IN EFI_SYSTEM_TABLE  *SystemTable

  )

{

  _asm int 3 /*调试程序*/

  SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello_20181130\n");

  return EFI_SUCCESS;

}

.inf文件:

[Defines]

  INF_VERSION                    = 0x00010005

  BASE_NAME                      = MyTest_1                       #输出文件的名字为MyTest_1.efi

  #MODULE_UNI_FILE                = MyTest_1.uni

  FILE_GUID                      = 6987936E-ED34-44db-AE97-1FA5E4FFFFFF

  MODULE_TYPE                    = UEFI_APPLICATION

  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = UefiHello

[Sources]

  MyTest_1.c

#.dec文件里定义include的路径,如include 的路径在MdePkg/Include文件夹中,.dec文件用于提供本pkg的资源

[Packages]

  MdePkg/MdePkg.dec

[LibraryClasses]

  UefiApplicationEntryPoint

  UefiLib

[BuildOptions]

  MSFT:*_*_IA32_CC_FLAGS = /Oi-

 

 

 

调用VS调试工具的要点是,在需要停顿去逐步运行的代码前添加代码行:_asm int 3,以及在.inf文件中添加[BuildOptions] MSFT:*_*_IA32_CC_FLAGS = /Oi-

如下图的目的是在输出Hello前停顿调试:

 

 

该APP在shell中运行后会弹出:

 

点击“调试”,系统会启动VS,弹窗点击“Break”即可进入断点处代码。

 

 

接下来在想要运行停顿的地方设置断点即可调试了。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3