搭建好uefi开发环境之后,在MyWorkspace文件夹中建立一个文件夹ExamplePkg; ,然后在ExamplePkg文件夹中创建HelloWorld文件夹,Include文件夹,ExamplePkg.dec文件,ExamplePkg.dsc文件,buildx86.bat文件(这个文件的文件名不重要,重要的是里面的批处理命令,)

.dec文件中内容为

[Defines]
DEC_SPECIFICATION = 0x00010006
PACKAGE_NAME = ExamplePkg
PACKAGE_GUID = A0D78D6-2CAF-414b-BD4D-B6762A894289
PACKAGE_VERSION = 1.01 [Includes]
Include [LibraryClasses]

.dsc文件中内容为

[Defines]
PLATFORM_NAME = Example
PLATFORM_GUID = 587CE499-6CBE-43cd-94E2-
PLATFORM_VERSION = 1.01
DSC_SPECIFICATION = 0x00010006
OUTPUT_DIRECTORY = Build/Example
SUPPORTED_ARCHITECTURES = IA32|IPF|X64|EBC|ARM|AARCH64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT [LibraryClasses]
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf [Components]
ExamplePkg/HelloWorld/HelloWorld.inf

.bat文件中内容为

@call "C:\MyWorkSpace\edksetup.bat"
Build -t VS2008x86 -a IA32 -p ExamplePkg\ExamplePkg.dsc -m ExamplePkg\HelloWorld\HelloWorld.inf -b RELEASE
pause

HelloWorld文件夹中要两个文件,HelloWorld.c  HelloWorld.inf

.c文件中内容为

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiApplicationEntryPoint.h> EFI_STATUS EFIAPI UefiMain(
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
Print(L"HelloWorld_jyw");
return EFI_SUCCESS;
}

.inf文件中内容为

[Defines]
INF_VERSION = 0x00010006
BASE_NAME = HelloWorld
FILE_GUID = 6987936E-ED34-44db-AE97-1FA5E4ED2117
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.01
ENTRY_POINT = UefiMain [Sources]
HelloWorld.c [Packages]
MdePkg/MdePkg.dec
ExamplePkg/ExamplePkg.dec [LibraryClasses]
UefiApplicationEntryPoint
UefiLib

因为要做的事情很简单只是打印hellowold所以Include文件夹中不需要东西

其目录形式为:

ExamplePkg-->HelloWorld-->HelloWorld.c

ExamplePkg-->HelloWorld-->HelloWorld.inf

ExamplePkg-->Include

ExamplePkg-->buildx86.bat

ExamplePkg-->ExamplePkg.dec

ExamplePkg-->ExamplePkg.dsc

然后执行buildx86.bat

在MyWorkspace文件夹中的build文件夹中会发现一个名为Example文件夹,里面有RELEASE_VS2008x86文件夹,进去有 IA32文件夹,再进去有HelloWorld.efi文件,这便是编译生成的efi文件,其实会生成两个.efi文件,另一个在哪里可以在资源管理器中搜一下,

然后打开MyWorkSpace\Build\NT32IA32\DEBUG_VS2008x86\IA32\SecMain.exe,这是一个模拟环境回车一下,然后输入”fsnt0:“回车,再输入helloworld.efi(如果不想敲全名还可以敲 h    然后tab键),然后回车就可以看到输出了。

笔记七(编写第一个UEFI程序)的更多相关文章

  1. Java笔记:编写第一个Java程序

    2017.6.17 1.编写第一个Java程序 创建text文本,命名第一个Java程序.txt 在里面编写Java代码 public class Demo1{ public static void ...

  2. 搭建java开发环境、使用eclipse编写第一个java程序

    搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...

  3. 【安装eclipse, 配置java环境教程】 编写第一个java程序

    写java通常用eclipse编写,还有一款编辑器比较流行叫IJ.这里我们只说下eclipse编写java的前期工作. 在安装eclipse之前要下载java的sdk文件,即java SE:否则无法运 ...

  4. 【C#入门教案-02】用记事本编写第一个C#程序-Hello World

    02-用记事本编写第一个C#程序-Hello World 广东职业技术学院  欧浩源 [1]进行.NET程序开发的最基本环境配备 .NET Framework + 代码编辑工具(记事本或Noetpad ...

  5. 一起学Hadoop——使用IDEA编写第一个MapReduce程序(Java和Python)

    上一篇我们学习了MapReduce的原理,今天我们使用代码来加深对MapReduce原理的理解. wordcount是Hadoop入门的经典例子,我们也不能免俗,也使用这个例子作为学习Hadoop的第 ...

  6. 从零自学Java-1.编写第一个Java程序

    编写第一个Java程序 完成工作:1.在文本编辑器中输入一个Java程序. 2.使用括号组织程序. 3.保存.编译和运行程序. package com.Jsample;//将程序的包名称命名为com. ...

  7. 假期作业02:安装JDK与文本编辑器并编写第一个Java程序

    假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...

  8. 编写第一个MapReduce程序—— 统计气温

    摘要:hadoop安装完成后,像学习其他语言一样,要开始写一个“hello world!” ,看了一些学习资料,模仿写了个程序.对于一个C#程序员来说,写个java程序,并调用hadoop的包,并跑在 ...

  9. 使用Playground编写第一个Swift程序

    从控制台输出“HelloWorld”是我学习C语言的第一步,也是我人生中非常重要的一步.多年后的今天,我仍希望以HelloWorld作为第一步,与大家共同开启一个神奇.瑰丽的世界——Swift编程. ...

随机推荐

  1. js中prototype与__proto__的关系详解

    一.构造函数: 构造函数:通过new关键字可以用来创建特定类型的对象的函数.比如像Object和Array,两者属于内置的原生的构造函数,在运行时会自动的出现在执行环境中,可以直接使用.如下: var ...

  2. JavaScript知识点:分支结构(if、switch)+算法例题

    if-else分支 1.if条件应该是boolean类型的值或表达式 2.如果条件不是Boolean,会进行自动转换 以下几种情况会默认转换为 false: if(0).if(0.0) if(NaN) ...

  3. sudo命令 sudoers文件

    超级用户权限 # Host alias specification Host_Alias HA = 192.168.1.1, 192.168.1.2 # User alias specificatio ...

  4. UITableView个人使用总结【前篇-增量加载】

    UITableView现在边整边总结. 预计分两个部分,第一个部分主要是对UITableView本身属性的学习.第二个部分可能会是加上一个编辑按钮以及对列表的操作. 今天先学习第一部分. 第一部分,我 ...

  5. Canal的简单使用(监控数据库数据的变化)

    原文:https://www.cnblogs.com/java-spring/p/8930740.html canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据,用于实际工作中,比 ...

  6. 扩展的KMP算法图解

    扩展的KMP算法,可以在Ο(n + m)的时间复杂度内计算出模板串与文本串的每一个后缀的最长公共前缀,即LCP(T[i:n],P). KMP算法所解决的单模板字符串匹配问题,求得的匹配点是LCP = ...

  7. B进制星球(多进制 高精加)

    https://www.luogu.org/problemnew/show/P1604 B(2<=B<=36)进制计数.编写实现B进制加法的程序. 输入输出格式 输入格式: 共3行第1行: ...

  8. 前端笔记-css

    css(穿着) 1. 第一种<head><style></style></head>中可以写css样式 css选择器 定位到哪个标签的css id选择器 ...

  9. vue 标题上下滚屏 无缝轮播

    参考网址:https://www.jianshu.com/p/b6813193ca0d <template> <div class="wrap" :style=& ...

  10. Android-File读写+SharedPreferences的存取地址

    写了两个demo,一个是使用SharedPreferences将数据存储在应用文件中并读取,另一个是使用Context的openFileOutput和openFileInput将数据存储在应用文件中并 ...