当前位置: 首页 > news >正文

UEFI基础——测试用例Hello Word

Hello 测试用例

硬件环境:龙芯ls3a6000平台
软件环境:龙芯uefi固件

GUID获取网址:https://guidgen.com

一、创建工程

  • mkdir TextPkg/
  • 三个文件 Hello.c 、 Hello.inf 、HelloPkg.dsc

1.1 Hello.c

/** @fileThe application to print hello word.Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.phpTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.**/#include <Uefi.h>
#include <Library/UefiLib.h>
//#include <Library/UefiBootServicesTableLib.h>EFI_STATUS
EFIAPI
MyHello(IN EFI_HANDLE           ImageHandle,  IN EFI_SYSTEM_TABLE     *SystemTable)                                                                                                                                              
{Print(L"Hello World!\n");
//  gST->ConOut->OutputString(SystemTable->ConOut, L"Hello World!\n");   
//  SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello World!\n");   return EFI_SUCCESS;
}

1.2 Hello.inf

## @file
#  The application to print hello word.
#
#  The application pops up a menu showing all the boot options referenced by
#  BootOrder NV variable and user can choose to boot from one of them.
#  
#  Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
#  This program and the accompanying materials
#  are licensed and made available under the terms and conditions of the BSD License
#  which accompanies this distribution.  The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php
#  
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#  
##[Defines]INF_VERSION                    = 0x00010005BASE_NAME                      = HelloFILE_GUID                      = ae9fad76-2e2a-457f-bf1f-90c9c5afe889MODULE_TYPE                    = UEFI_APPLICATIONVERSION_STRING                 = 1.0 ENTRY_POINT                    = MyHello#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#[Sources]Hello.c[Packages]MdePkg/MdePkg.decMdeModulePkg/MdeModulePkg.dec[LibraryClasses]UefiLibUefiApplicationEntryPoint

1.3 HelloPkg.dsc

## @file
#  The application to print hello word.
#
#  The application pops up a menu showing all the boot options referenced by
#  BootOrder NV variable and user can choose to boot from one of them.
#  
#  Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
#  This program and the accompanying materials
#  are licensed and made available under the terms and conditions of the BSD License
#  which accompanies this distribution.  The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php
#  
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#  
##[Defines]PLATFORM_NAME					 = HelloPkgPLATFORM_GUID                  = 41ee9fe9-c2aa-4f67-a6e5-5bae7560438dPLATFORM_VERSION               = 0.1DSC_SPECIFICATION              = 0x00010005SUPPORTED_ARCHITECTURES        = LOONGARCH64BUILD_TARGETS                  = DEBUG|RELEASESKUID_IDENTIFIER               = DEFAULTPLATFORM_DIRECTORY             = LsRefCodePkg/SampleCode/Desktop/CONFIG_FILE                    = $(PLATFORM_DIRECTORY)/Script/Desktop.cfg!include $(CONFIG_FILE)
!if ($(CPU_TYPE) == 3A5000 || $(CPU_TYPE) == 3B5000)
!include $(PLATFORM_DIRECTORY)/Script/Loongson3a.fdf.incPLATFORM_NAME                  = Ls3a50007aCPU_TYPE                       = 3A5000CORES_PRE_NODE                 = 4TOT_NODE_NUM                   = 1APPEND_FLAG                    = -DLOONGSON_3A5000
!elseif ($(CPU_TYPE) == 3A6000)
!include $(PLATFORM_DIRECTORY)/Script/Loongson3a.fdf.incPLATFORM_NAME                  = Ls3a60007aCPU_TYPE                       = 3A6000CORES_PRE_NODE                 = 8TOT_NODE_NUM                   = 1APPEND_FLAG                    = -DLOONGSON_3A5000 -DFLAT_MODE
!elseif ($(CPU_TYPE) == 2K2000)
!include $(PLATFORM_DIRECTORY)/Script/Loongson2k.fdf.incPLATFORM_NAME                  = Ls2k2000CPU_TYPE                       = 2K2000CORES_PRE_NODE                 = 2TOT_NODE_NUM                   = 1APPEND_FLAG                    = -DLOONGSON_2K2000 -DLS2K2000_GMEM_SIZE="256"
!endifOUTPUT_DIRECTORY               = Build/$(PLATFORM_NAME)NODE_OFFSET                    = 44DEFINE COMMON_BUILD_OPTIONS_FLAGS = -DLS$(CPU_TYPE) -DCLK_BASE=$(BASE_CLK) -DHIGH_MEM_BASE_ADDRESS=$(HIGH_MEM_BASE_ADDRESS) -DHT0_FREQ=$(HT0_FREQ) -DDDR_FREQ=$(MEM_FREQ) -DLS$(SOUTH_BRIDGE) -DCLK_DDR=$(DDR_CLK) -DCLK_REF=$(REF_CLK) -DMPS_ADDR=$(MPS_ADDR) -DMPS_STEP=$(MPS_STEP) -DVOL_LEVEL_HI=$(VOL_LEVEL_HI) -DVOL_LEVEL_MI=$(VOL_LEVEL_MI) -DVOL_LEVEL_LO=$(VOL_LEVEL_LO) -DCACHED_MEMORY_ADDR=$(CACHED_MEMORY_ADDR) -DUNCACHED_MEMORY_ADDR=$(UNCACHED_MEMORY_ADDR) -DTOT_NODE_NUM=$(TOT_NODE_NUM) -DCORES_PER_NODE=$(CORES_PRE_NODE) -DPCIE_CONF_BASE=$(PCIE_CONF_BASE) $(APPEND_FLAG) -DVGA_HOTP_LEVEL=$(VGA_HOTP_LEVEL) -DNODE_OFFSET=$(NODE_OFFSET) -DLS7A_LINK_ID_BUF="0"COMMON_BUILD_OPTIONS_FLAGS        = -DTOT_7A_NUM="1" -DBEEP_NEW="1" $(COMMON_BUILD_OPTIONS_FLAGS)!if $(BONITO_100M) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DBONITO_100M $(COMMON_BUILD_OPTIONS_FLAGS)!elseCOMMON_BUILD_OPTIONS_FLAGS   = -DBONITO_25M $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(CPU_FREQ)COMMON_BUILD_OPTIONS_FLAGS   = -DCPU_FREQ=$(CPU_FREQ) $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(SPI_DUAL_LINE) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DSPI_DUAL_LINE $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(COMP_TYPE) == DEBUGCOMMON_BUILD_OPTIONS_FLAGS   = -DASM_DEBUG $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(PG_MODE) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DPG_MODE $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(GMEM_ENABLE) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DGMEM_ENABLE='1' $(COMMON_BUILD_OPTIONS_FLAGS)!elseCOMMON_BUILD_OPTIONS_FLAGS   = -DGMEM_ENABLE='0' $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(LS7A_PHYS48_TO_HT40) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DLS7A_PHYS48_TO_HT40 $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(CODEC_VERBTABLE_SUPPORT) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DFIX_VERB_TABLE $(COMMON_BUILD_OPTIONS_FLAGS)!endif!if $(EFFICIENT_CORE_DYNAMIC_CONTROL) == TRUECOMMON_BUILD_OPTIONS_FLAGS   = -DEFFICIENT_CORE_DYNAMIC_CONTROL $(COMMON_BUILD_OPTIONS_FLAGS)!endif############################################################################
#
# Defines for default states.  These can be changed on the command line.
# -D FLAG=VALUE
############################################################################[BuildOptions]GCC:RELEASE_*_*_CC_FLAGS       = -DMDEPKG_NDEBUG -DSPEEDUPGCC:*_*_*_CC_FLAGS             = $(COMMON_BUILD_OPTIONS_FLAGS)*_*_LOONGARCH64_PP_FLAGS       = $(COMMON_BUILD_OPTIONS_FLAGS)*_*_*_ASLPP_FLAGS              = $(COMMON_BUILD_OPTIONS_FLAGS)*_*_*_VFRPP_FLAGS              = $(COMMON_BUILD_OPTIONS_FLAGS)[LibraryClasses]UefiLib                          | MdePkg/Library/UefiLib/UefiLib.infUefiApplicationEntryPoint        | MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.infUefiBootServicesTableLib         | MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.infDebugLib                         | MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.infBaseLib                          | MdePkg/Library/BaseLib/BaseLib.infPcdLib                           | MdePkg/Library/BasePcdLibNull/BasePcdLibNull.infBaseMemoryLib                    | MdePkg/Library/BaseMemoryLib/BaseMemoryLib.infSerialPortLib                    | LsRefCodePkg/Library/SerialPortLib/SerialPortLib.infPrintLib                         | MdePkg/Library/BasePrintLib/BasePrintLib.infDebugPrintErrorLevelLib          | MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.infIoLib                            | MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.infRegisterFilterLib                | LsRefCodePkg/Core/Library/RegisterFilterLib/RegisterFilterLib.infMemoryAllocationLib              | MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.infDevicePathLib                    | MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.infUefiRuntimeServicesTableLib      | MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf[Components]TextPkg/Hello.inf

二、编译工程

2.1 配置环境变量

  • export WORKSPACE=$PWD
  • export EDK_TOOLS_PATH=$PWD/BaseTools/
  • source edksetup.sh

2.2 执行编译

build -a LOONGARCH64 -t GCC83 -p TextPkg/HelloPkg.dsc -j log.txt

  • a 指定架构
  • t 指定工具链版本
  • p 指定工程路径
  • j 编译输出存放位置

2.3 编译截图

在这里插入图片描述

2.4 编译结果

在这里插入图片描述

2.5 运行结果

在这里插入图片描述

相关文章:

UEFI基础——测试用例Hello Word

Hello 测试用例 硬件环境&#xff1a;龙芯ls3a6000平台 软件环境&#xff1a;龙芯uefi固件 GUID获取网址&#xff1a;https://guidgen.com 一、创建工程 mkdir TextPkg/三个文件 Hello.c 、 Hello.inf 、HelloPkg.dsc 1.1 Hello.c /** fileThe application to print hello …...

【tomcat、java】

java&#xff1a;maven配置 1.安装插件 <build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port&…...

京东获取推荐商品列表 API

item_recommend-获取推荐商品列表 请求参数 请求参数&#xff1a;type 参数说明&#xff1a;type:推荐类型 进入API测试页 响应参数 Version: Date: 名称类型必须示例值描述 items items[]0获取推荐商品列表 num_iid Bigint010021415166448宝贝ID detail_url String0http…...

rust cfg的使用

前提是一个crate倒入另一个crate。 先看结构 test_lib目录结构 这与另一个crate处于同一个目录,所以另一crate倒入的时候在Cargo.toml中使用如下语句。 test_lib = {path = "../test_lib" }先在test_lib/src/abc/abc.rs中添加没有cfg的两个函数做测试。 pub fn…...

电脑屏幕怎么录制?5 个最佳免费录屏软件

您是否想使用网络摄像头录制优酷视频、抖音直播或在线课程等项目&#xff0c;但完全不知道如何开始&#xff1f; 不用担心。有很多软件选项可以帮助您。虽然每一款都有不同的功能&#xff0c;但它们都能够录制网络摄像头并输出精美的高质量视频。 以下是我们精选的最佳作品。…...

vscode 调试使用 make 编译的项目

1、首先点击运行 --> 启动调试&#xff1a; 2、选择g或gcc生成和调试活动文件&#xff1a; 3、出现下面提示是正常的&#xff0c;点击仍要调试&#xff1a; 点击打开“launch.json”&#xff1a; 4、此时会在项目工作目录下生成tsak.josn和launch.json文件&#xff1a; 如…...

Docker修改阿里源

在一次安装rtmp推流服务时&#xff0c;总是无法下载源&#xff0c;估计是国外资源下载超时照成的&#xff0c;于是想到修改为国内源。 docker pull alfg/nginx-rtmp Using default tag: latest latest: Pulling from alfg/nginx-rtmp 530afca65e2e: Retrying in 7 seconds c20…...

有必要买一台内衣裤专洗机吗?家用小洗衣机推荐

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…...

高精度与高精度的乘法---基础算法

看到一个博主写得不错&#xff0c;我也照猫画虎&#xff1a;&#xff09; 原因 在计算两个非负整数时&#xff0c;如果位数很大&#xff0c;连 long long 类型都存储不了&#xff0c;就要使用到高精度的乘法 原理 原理依旧是模拟人计算两个数的积&#xff0c;早在小学我们已…...

护眼灯有效果吗?科普护眼灯的作用与推荐

现在我们很多家长对自己孩子的视力十分关心&#xff0c;生怕自己的孩子是近视、远视、弱视等等。对于父母而言&#xff0c;在孩子读书压力大课业重的关键时期&#xff0c;为孩子选择合适的桌椅&#xff0c;保护灯具从而保护孩子的眼睛是非常重要的事情!那么买给孩子读书做功课的…...

【办公自动化】在Excel中按条件筛选数据并存入新的表2.0(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

HDLbits: Lfsr5

我的错误写法&#xff0c;半成品&#xff0c;完全错误&#xff1a; module top_module(input clk,input reset, // Active-high synchronous reset to 5h1output [4:0] q ); dff dff_1(clk, 0 ^ q[0],q[4]);dff dff_2(clk, q[4] ,q[3]);dff dff_3(clk, q[3] ^ q[0] ,q[2]);…...

Visual Studio 错误CS0006:未能找到元数据文件踩坑记录

前言 在写项目的时候&#xff0c;添加了个新的Nuget包&#xff0c;突然就不行&#xff0c;然后就是报错&#xff0c;找不到文件、 出现的原因是因为项目之间互相引用出现了问题&#xff0c;比如如下情况 先版本回退 如果有Git仓库 第一时间去看Git 文件比较&#xff0c;找到…...

tcpdump(三)命令行参数讲解(二)

一 tcpdump实战详解 骏马金龙tcpdump详解 强调&#xff1a; 注意区分选项参数和过滤条件 本文继上篇 网卡没有开启混杂模式 tcpdump默认开启混杂模式 --no-promiscuous-mode --> 可以指定在非混杂模式抓包 ① -vv 控制详细内容的输出 ② -s -s 长度: 可以只…...

面试算法25:链表中的数字相加

题目 给定两个表示非负整数的单向链表&#xff0c;请问如何实现这两个整数的相加并且把它们的和仍然用单向链表表示&#xff1f;链表中的每个节点表示整数十进制的一位&#xff0c;并且头节点对应整数的最高位数而尾节点对应整数的个位数。例如&#xff0c;两个分别表示整数98…...

APP如何设计应用的屏幕截图以提高下载量

APP高质量的应用程序商店屏幕截图&#xff0c;对于建立初始信任以及向潜在用户推销应用程序的优势至关重要。创建应用程序商店屏幕截图&#xff0c;以最好的方式展示我们的应用程序&#xff0c;从而优化应用形象。 1、使用大标题。 确保重点突出品牌的独特性&#xff0c;在屏幕…...

qt 关于自定义控件,然后其他页面提升后背景样式表不生效问题

一、自定义控件如果是widget &#xff0c;需要再widget 里放一个QFrame &#xff0c;在QFrame设置样式表背景才行 二、重写paintEvent void Form::paintEvent(QPaintEvent *e) {QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widg…...

对比纯软开与嵌入式硬件开发谁更好呢?

对比纯软开与嵌入式硬件开发谁更好呢&#xff1f; 你的纠结和犹豫是理解的&#xff0c;职业选择确实是一个重要的决策。我明白你在嵌入式和软件开发之间犹豫不决的原因。让我给你提供一些建议&#xff0c;帮助你做出更明智的决定。最近很多小伙伴找我&#xff0c;说想要一些嵌入…...

软考 系统架构设计师系列知识点之软件质量属性(5)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件质量属性&#xff08;4&#xff09; 所属章节&#xff1a; 第8章. 系统质量属性与架构评估 第2节. 面向架构评估的质量属性 相关试题 5. 某公司欲开发一个网上商城系统。在架构设计阶段&#xff0c;公司的架构师…...

修改ubuntu服务器fs文件最大打开数

起因 在对项目进行压测的时候&#xff0c;请求异常 java.net.SocketException: socket closed&#xff0c;查看nginx代理服务器的日志。tail -f -n500 /var/log/nginx/error.log 显示 文件打开数太多socket() failed (24: Too many open files) while connecting to upstream …...

linux下Qt的pro文件

生成生成文件后缀名的说明。这只是泛泛而谈&#xff0c;实际发现跟编译器有关。比如在windows系统上用MinGW&#xff0c;可能静态库还是a后缀。 文件静态库动态库目标文件LINUXasooWINDOWSlibdllobj 在.pro文件中&#xff0c;INCLUDEPATH用于引入外部库的头文件&#xff0c;L…...

git常用命令和开发常用场景

git命令 git init 创建一个空的git仓库或者重新初始化已有仓库 git clone [url] 将存储库克隆到新目录 git add 添加内容到索引 git status 显示工作树状态 git commit -m "" 记录仓库的修改 git reset 重置当前HEAD到指定的状态 git reset –-soft&#xff1a;…...

02 认识Verilog HDL

02 认识Verilog HDL ‍ 对于Verilog的语言的学习&#xff0c;我认为没必要一开始就从头到尾认真的学习这个语言&#xff0c;把这个语言所有细节都搞清楚也不现实&#xff0c;我们能够看懂当前FPGA的代码的程度就可以了&#xff0c;随着学习FPGA深度的增加&#xff0c;再不断的…...

解决VUE安装依赖时报错:npm ERR! code ERESOLVE

前言 在使用 npm 安装项目依赖时&#xff0c;有时会遇到错误信息 “npm ERR! code ERESOLVE”&#xff0c;该错误通常发生在依赖版本冲突或者依赖解析问题时。本文将详细介绍出现这个错误的原因&#xff0c;并提供解决方法&#xff0c;确保正确安装项目依赖并避免该错误的发生。…...

软件公司的项目管理软件选择指南

我们经常在项目推进中经常遇到各种各样的问题&#xff0c;最常见的是因团队工作效率低而无法在截止日期之前按时完成工作。但是如果能合理使用项目管理软件&#xff0c;可以有效监控项目进程&#xff0c;提高工作效率&#xff0c;从而保证按时完成任务。那么软件公司适合什么项…...

2、服务器安装docker

# 1.卸载旧的版本 yum remove -y docker \ docker-client\ docker-client-latest\ docker-common docker-latest\ docker-latest-logrotate\ docker-logrotate docker-s…...

UDP报文结构

文章目录 一、UDP报头1.1源端口号1.2目的端口号1.3UDP报文长度1.4UDP校验和(checksum) UDP报头和UDP载荷(payload)之间的拼接可以认为是一个“字符串拼接”&#xff0c;里面是二进制数据。 一、UDP报头 UDP报头分成4个部分&#xff0c;每个部分2个字节。分别是&#xff1a; 1…...

(高阶) Redis 7 第21讲 IO多路复用模型 完结篇

🌹 以下分享 Redis IO多路复用模型,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 IO多路复用模型是什么 I/O:网络IO 多路:多个客户端连接(连接即套接字描述符,即socket或channel),指…...

2023年入职/转行网络安全,该如何规划?

前言 前段时间&#xff0c;知名机构麦可思研究院发布了 《2022年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为…...

解密RabbitMQ:你所不知道的端口及其重要性

解密RabbitMQ&#xff1a;你所不知道的端口及其重要性 前言第一部分&#xff1a;AMQP默认端口(5672)第二部分&#xff1a;RabbitMQ管理界面端口&#xff08;15672&#xff09;第三部分&#xff1a;Erlang Port Mapper Daemon&#xff08;epmd&#xff09;端口&#xff08;4369&…...