EDKII:第一个Helloworld

目录

0 说明

1 步骤

1.1 简介

1.2 创建新文件

1.3 创建printhelloworld.c、printhelloworld.inf:

1.4 修改MdeModulePkg\MdeModulePkg.dsc

1.5 修改EmulatorPkg\EmulatorPkg.dsc

1.6 运行


0 说明

上篇文章记录了如何安装UEFI环境,在这里将会写下如何向MdeModulePkg\Application下添加一个printhelloworld,输出自己的相关信息。(可以参考MdeModulePkg\Application下的其他工程编写,这里主要是参考HelloWorld)

1 步骤

1.1 简介

添加helloworld到MdeModulePkg\Application下,并输出学号和姓名。

1.2 创建新文件

由于EDKII下的MdeModulePkg\Application里自带了一个HelloWorld示例工程,为了和其区分命名为printhelloworld。

在%workspace%\edk2\MdeModulePkg\Application\创建文件夹printhelloworld,

1.3 创建printhelloworld.c、printhelloworld.inf:

printhelloworld.c

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiApplicationEntryPoint.h>//ShellCEntryLib call user interface ShellAppMain
EFI_STATUS
EFIAPI
HelloWorldEnrty(IN EFI_HANDLE        ImageHandle,IN EFI_SYSTEM_TABLE  *SystemTable
)
{   EFI_STATUS  Status = EFI_SUCCESS;Print (L"[Console]  Print HelloWorld \n"); Print (L"[Console]  number \n");Print (L"[Console]  name\n");return Status;
}

printhelloworld.inf

# 写代码时把注释删掉
[Defines]
INF_VERSION             = 0x00010005   # 注意
BASE_NAME               = printhelloworld   # 注意
# 唯一,可以随便写个,不放心的话可以去guidgen.com生成
FILE_GUID               = 2d61d1f1-52c5-3617-85c4-39d5edc02bb7  
MODULE_TYPE             = UEFI_APPLICATION
VERSION_STRING          = 1.0
ENTRY_POINT             =HelloWorldEnrty  # 注意
​
[Sources]printhelloworld.c  # 注意[Packages]MdePkg/MdePkg.decMdeModulePkg/MdeModulePkg.dec[LibraryClasses]UefiApplicationEntryPointUefiLib

1.4 修改MdeModulePkg\MdeModulePkg.dsc

找到MdeModulePkg\MdeModulePkg.dsc,在其[components]里添加:

MdeModulePkg\Application\printhelloworld.inf\printhelloworld.inf

1.5 修改EmulatorPkg\EmulatorPkg.dsc

找到EmulatorPkg\EmulatorPkg.dsc,在其[components]里添加:(参照其他的就知道在那个位置添加了),其实这个地方我也不清楚为什么但是在target.txt里面的ACTIVE_PLATFORM就是EmulatorPkg\EmulatorPkg.dsc

MdeModulePkg\Application\printhelloworld.inf\printhelloworld.inf

1.6 运行

再次build即可(不放心可以先edksetup.bat rebuild)

之后即可以在文件夹中找到printhelloworld.efi

点击WinHost.exe,运行即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2659493.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

启明智显开源项目分享|基于Model 3c芯片的86中控面板ZX3D95CM20S-V11项目软硬件全开源

前言&#xff1a; 本文为4寸 480*480 RGB接口IPS全面触屏的86中控面板&#xff08;RT-ThreadLVGL&#xff09;软硬件开源干货内容&#xff0c;该项目是综合性非常强的RTOS系列项目&#xff01;项目主控芯片使用 Model 3c&#xff0c;整体实现了简化版本的86中控面板的功能需求…

apisix admin api 403 Forbidden(接口请求403)

故事背景 当你通过admin api 接口方式执行相关操作时&#xff0c;例如route、upstream设置&#xff0c;接口返回403 Forbidden&#xff0c; 例如 请求 curl -i "http://192.168.100.1:9180/apisix/admin/routes" -H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X…

微软 Power Platform 零基础 Power Apps 解决查找字段多选问题无需写代码

微软 Power Platform 零基础 Power Apps 解决查找字段多选问题无需写代码 在开发Power Apps产品的过程中&#xff0c;我们经常遇到查找字段多选的问题&#xff0c;只想用字段显示&#xff0c;又不想用子网格&#xff0c;我们今天来寻找一种不用开发的方式来实现这个功能。 效果…

「年终总结」生成人工智能的奇妙年份

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

登录不上linux keyboard-inter

登录不上linux keyboard-inter. 可以用其他工具测试下&#xff1a;cmd 删除历史记住密码&#xff1a;

go 源码解读 - sync.Mutex

sync.Mutex mutex简介mutex 方法源码标志位获取锁LocklockSlowUnlock怎么 调度 goroutineruntime 方法 mutex简介 mutex 是 一种实现互斥的同步原语。&#xff08;go-version 1.21&#xff09; &#xff08;还涉及到Go运行时的内部机制&#xff09;mutex 方法 Lock() 方法用于…

JavaScript练习题第(四)部分

大家好关于JavaScript基础知识点已经发布&#xff1a;需要的大家可以去我的主要查看 &#xff08;当然了有任何不会的&#xff0c;可以私信我&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 为了巩固大家学习知识点给大家准备几道练习题&#xff1a; 当然&…

GPT-4 API惨遭美国加州实验室团队毒手,清纯工具被进行攻击测试,经坑蒙拐骗黑化成坏蛋

美国加州实验室FAR AI的团队在对GPT-4 API进行安全测试时&#xff0c;采用了三大方向的“红队”攻击&#xff0c;结果让他们大吃一惊&#xff0c;GPT-4居然成功被越狱。通过对15个有害样本和100个良性样本的微调&#xff0c;他们成功地使GPT-4降低了警惕&#xff0c;使其生成有…

低代码平台在金融银行中的应用场景

随着数字化转型的推进&#xff0c;商业银行越来越重视技术在业务发展中的作用。在这个背景下&#xff0c;白码低代码平台作为一种新型的开发方式&#xff0c;正逐渐受到广大商业银行的关注和应用。白码低代码平台能够快速构建各类应用程序&#xff0c;提高开发效率&#xff0c;…

BAQ压缩MATLAB仿真

本专栏目录: ​​​​​​​全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 我们按照上一期文章的BAQ原理编写MATLAB代码,进行baq压缩与解压缩的全流程验证,并分析BAQ压缩对信号指标造成的影响。 生成3个点目标回波数据,加入高斯噪声,对回波进行BAQ压缩和解BAQ压缩,…

Spring Boot + Mybatis + vue2 — 实现分页查询

后端 pom.xml文件导入依赖 <!--分页查询--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version> </dependency> 配置全局配置…

flink内存配置

flink内存配置 配置 TaskManager 内存 | Apache Flink

java设计模式学习之【中介者模式】

文章目录 引言中介者模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用聊天室示例代码地址 引言 想象一下一座忙碌的机场&#xff0c;各种飞机需要起飞、降落&#xff0c;而不同的飞行活动之间必须互不干扰。如果没有一个统一的控制系统&#xff0c;这将是一…

设计模式(4)--对象行为(6)--备忘录

1. 意图 在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。 这样以后可以将该对象恢复到原先保存的状态。 2. 三种角色 原发器(Originator)、备忘录(Memento)、负责人(Caretaker) 3. 优点 3.1 保持了封装边界。屏蔽了原发器的…

31.Java程序设计-基于Springboot的鲜花商城系统的设计与实现

引言 背景介绍&#xff1a;鲜花商城系统的兴起和发展。研究目的&#xff1a;设计并实现一个基于Spring Boot的鲜花商城系统。论文结构概述。 文献综述 回顾相关鲜花商城系统的设计与实现。分析不同系统的优缺点。强调Spring Boot在系统设计中的优越性。 系统设计 需求分析 用户…

Docker自建私人云盘系统

Docker自建私人云盘系统。 有个人云盘需求的人&#xff0c;主要需求有这几类&#xff1a; 文件同步、分享需要。 照片、视频同步需要&#xff0c;尤其是全家人都是用的同步。 影视观看需要&#xff08;分为家庭内部、家庭外部&#xff09; 搭建个人网站/博客 云端OFFICE需…

猫冻干哪个牌子的口碑最好?业内人士分享这五款口碑好的猫冻干

很多新手铲屎官在为自家猫咪购买猫食品时&#xff0c;都会非常注重成分和安全性。养了这么多年的猫&#xff0c;可以说&#xff0c;他们购买过的猫食品数量一定比大多数人都要多。自从冻干猫粮流行起来之后&#xff0c;很多铲屎官都开始给自家的猫咪喂冻干。冻干不仅可以作为主…

C#高级 02异步编程

基础知识 1.什么是异步任务 包含了异步任务的各种状态的一个引用类型 1)正在运行、完成、结果、报错等 2)另有ValueTask值类型版本对于异步任务的抽象 1)开启异步任务后&#xff0c;当前线程并不会阻塞&#xff0c;而是可以去做其他事情 2)异步任务&#xff08;默认&#xff…

springboot返回vue id值变了

数据库里面存的616 到前端就变成了600了 后面大佬指导了下才知道是 mysql int类型太长解析不了 springboot用Long类型也不行&#xff0c; 换成String类型就可以了

21.仿简道云公式函数实战-数学函数-COS

1. COS函数 COS 函数可用于计算角度的余弦值&#xff0c;返回 -1 到 1 之间的数值。 2. 函数用法 COS(弧度) 3. 函数示例 如计算 COS(60) 的值&#xff0c;可设置公式为COS(RADIANS(60))&#xff0c;返回 0.5。 4. 代码实战 首先我们在function包下创建math包&#xff0…