UEFI基础——测试用例Hello Word

news2024/9/24 9:22:03

Hello 测试用例

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

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

一、创建工程

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

1.1 Hello.c

/** @file
  The 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.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.

**/

#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                    = 0x00010005
  BASE_NAME                      = Hello
  FILE_GUID                      = ae9fad76-2e2a-457f-bf1f-90c9c5afe889
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_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.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiLib
  UefiApplicationEntryPoint

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					 = HelloPkg
  PLATFORM_GUID                  = 41ee9fe9-c2aa-4f67-a6e5-5bae7560438d
  PLATFORM_VERSION               = 0.1
  DSC_SPECIFICATION              = 0x00010005
  SUPPORTED_ARCHITECTURES        = LOONGARCH64
  BUILD_TARGETS                  = DEBUG|RELEASE
  SKUID_IDENTIFIER               = DEFAULT
  PLATFORM_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.inc
  PLATFORM_NAME                  = Ls3a50007a
  CPU_TYPE                       = 3A5000
  CORES_PRE_NODE                 = 4
  TOT_NODE_NUM                   = 1
  APPEND_FLAG                    = -DLOONGSON_3A5000
!elseif ($(CPU_TYPE) == 3A6000)
!include $(PLATFORM_DIRECTORY)/Script/Loongson3a.fdf.inc
  PLATFORM_NAME                  = Ls3a60007a
  CPU_TYPE                       = 3A6000
  CORES_PRE_NODE                 = 8
  TOT_NODE_NUM                   = 1
  APPEND_FLAG                    = -DLOONGSON_3A5000 -DFLAT_MODE
!elseif ($(CPU_TYPE) == 2K2000)
!include $(PLATFORM_DIRECTORY)/Script/Loongson2k.fdf.inc
  PLATFORM_NAME                  = Ls2k2000
  CPU_TYPE                       = 2K2000
  CORES_PRE_NODE                 = 2
  TOT_NODE_NUM                   = 1
  APPEND_FLAG                    = -DLOONGSON_2K2000 -DLS2K2000_GMEM_SIZE="256"
!endif
  OUTPUT_DIRECTORY               = Build/$(PLATFORM_NAME)
  NODE_OFFSET                    = 44

  DEFINE 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) == TRUE
    COMMON_BUILD_OPTIONS_FLAGS   = -DBONITO_100M $(COMMON_BUILD_OPTIONS_FLAGS)
  !else
    COMMON_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) == TRUE
    COMMON_BUILD_OPTIONS_FLAGS   = -DSPI_DUAL_LINE $(COMMON_BUILD_OPTIONS_FLAGS)
  !endif

  !if $(COMP_TYPE) == DEBUG
    COMMON_BUILD_OPTIONS_FLAGS   = -DASM_DEBUG $(COMMON_BUILD_OPTIONS_FLAGS)
  !endif

  !if $(PG_MODE) == TRUE
    COMMON_BUILD_OPTIONS_FLAGS   = -DPG_MODE $(COMMON_BUILD_OPTIONS_FLAGS)
  !endif

  !if $(GMEM_ENABLE) == TRUE
    COMMON_BUILD_OPTIONS_FLAGS   = -DGMEM_ENABLE='1' $(COMMON_BUILD_OPTIONS_FLAGS)
  !else
    COMMON_BUILD_OPTIONS_FLAGS   = -DGMEM_ENABLE='0' $(COMMON_BUILD_OPTIONS_FLAGS)
  !endif

  !if $(LS7A_PHYS48_TO_HT40) == TRUE
    COMMON_BUILD_OPTIONS_FLAGS   = -DLS7A_PHYS48_TO_HT40 $(COMMON_BUILD_OPTIONS_FLAGS)
  !endif

  !if $(CODEC_VERBTABLE_SUPPORT) == TRUE
    COMMON_BUILD_OPTIONS_FLAGS   = -DFIX_VERB_TABLE $(COMMON_BUILD_OPTIONS_FLAGS)
  !endif

  !if $(EFFICIENT_CORE_DYNAMIC_CONTROL) == TRUE
    COMMON_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 -DSPEEDUP

  GCC:*_*_*_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.inf
  UefiApplicationEntryPoint        | MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
  UefiBootServicesTableLib         | MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
  DebugLib                         | MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
  BaseLib                          | MdePkg/Library/BaseLib/BaseLib.inf
  PcdLib                           | MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
  BaseMemoryLib                    | MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
  SerialPortLib                    | LsRefCodePkg/Library/SerialPortLib/SerialPortLib.inf
  PrintLib                         | MdePkg/Library/BasePrintLib/BasePrintLib.inf
  DebugPrintErrorLevelLib          | MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
  IoLib                            | MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
  RegisterFilterLib                | LsRefCodePkg/Core/Library/RegisterFilterLib/RegisterFilterLib.inf
  MemoryAllocationLib              | MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
  DevicePathLib                    | MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
 UefiRuntimeServicesTableLib      | 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 运行结果

在这里插入图片描述

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

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

相关文章

【踩坑】hive脚本笛卡尔积严重降低查询效率问题

前一阵子查看我们公司的大数据平台的离线脚本运行情况, 结果发现有一个任务居然跑了一天多, 要知道这还只是几千万量级的表, 且这个任务是每天需要执行的 于是我把hive脚本捞出来看了下, 发现无非多join了几个复杂的子查询, 应该不至于这么久, 包括我又检查了是不是没有加上每…

TCP/IP(五)TCP的连接管理(二)

一 ISN序列号探究 本文主要探究三次握手建立TCP连接的细节备注&#xff1a; 某些问题探究的比较深入,当前用不到,暂时通过链接引入进来吃水不忘挖井人&#xff1a; 小林 coding ① 初始序列号 ISN 是如何随机产生的 ISN: 初始化序列号 Initial Sequence Number 接收方和…

0基础学习VR全景平台篇 第106篇:认识调色软件Lightroom

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 正式开讲之前需要先引出一个概念&#xff1a;到底什么是调色? 比如说上面这张照片&#xff0c;你可能会具体的指出照片中的元素有天空、山脉、草地等…… 如果我们跳出我们的固…

sqlserver2008安装时的性能计数器注册表配置单元一致性失败问题

安装出现此项检测失败时&#xff1b;根据资料&#xff0c; 进入注册表如下条目&#xff0c;Perflib下面有 Last Counter和Last Help&#xff0c;数值分别是10122和10123&#xff1b; 009键下面包括Counter和Help&#xff0c;打开Counter看一下&#xff0c;下面有一些数值&…

关键词搜索淘宝商品数据接口,淘宝商品列表数据接口

关键词搜索淘宝商品数据接口可以通过淘宝开放平台获取商品列表数据&#xff0c;包括商品标题、价格、优惠价、收藏数、月销售量、SKU图、详情页图片等。 通过调用淘宝开放平台的API接口&#xff0c;可以实现关键词搜索淘宝商品列表数据&#xff0c;获取商品详情页数据信息&…

CSS设置鼠标样式和添加视频样式

鼠标的样式 <div style"cursor: default">默认鼠标的样式</div><div style"cursor: pointer">小手样式</div><div style"cursor: move">移动样式</div><div style"cursor: text">文本样式&…

生命在于折腾——Stable Diffution(Mac端)

一、前言 最近一段时间研究了一下Stable Diffution&#xff0c;Windows和MAC端都搭建成功了&#xff0c;也尝试了各种功能&#xff0c;后续会学习新的使用姿势&#xff0c;写一篇文章记录一下。 二、介绍 1、Stable Diffution是什么 Stable Diffusion&#xff0c;是一种AI绘…

阿里云服务器经济型e实例规格云服务器性能介绍

阿里云服务器ECS推出经济型e系列&#xff0c;经济型e实例是阿里云面向个人开发者、学生、小微企业&#xff0c;在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器&#xff0c;CPU采用Intel Xeon Platinum架构处理器&#xff0c;支持1:1、1:2、1:4多种处理…

Apipost一大波新功能来袭!连接数据库、TCP协议、MySQL DDL数据导入

本次Apipost带来数据库功能、TCP协议调试等重量级功能&#xff0c;感兴趣的话大家升级试试吧&#xff5e; 数据库配置 Apipost提供了数据库连接功能&#xff0c;以便开发者可以在接口调试中可以使用数据库获取入参或进行断言校验 目前7.2.2的Apipost支持Mysql、SQL Sever、Or…

asp.net饭店订餐管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机设计定制

一、源码特点 asp.net 饭店订餐管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语 言开发 asp.net饭店订餐系统 二、功能介…

IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电

IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电 深圳锐科达SV-7043VP 20W网络有源吸顶喇叭。该设备配备了10/100M以太网接口&#xff0c;内置了高品质扬声器&#xff0c;通过内置的功放和喇叭输出&#xff0c;可提供高达20W的音效功率。SV-7043VP作为SIP系统的播放终端&#…

Unity MRTK Hololens2眼动交互

/** ** UnityVersion : 2021.3.6f1* Description : 眼部交互基类* Author: * CreateTime : 2023-10-11 09:43:20* Version : V1.0.0* * */using System.Collections.Generic; using Microsoft.MixedReality.Toolkit.Input; using UnityEngine;namespace MRTKExtend.EyeTrackin…

C++教程(4)

C 注释 程序的注释是解释性语句&#xff0c;您可以在 C 代码中包含注释&#xff0c;这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。 C 支持单行注释和多行注释。注释中的所有字符会被 C 编译器忽略。 C 注释一般有两种&#xff1a; // - 一般用于单行注释。…

使用Tensorrt的一般步骤

使用Tensorrt的一般步骤 TensorRT的使用包括两个阶段&#xff1a;build and deployment。 build&#xff1a;该阶段主要完成模型转换&#xff08;从caffe或TensorFlow到TensorRT&#xff09;&#xff0c;如下图所示&#xff0c;在模型转换时会完成前述优化过程中的层间融合&am…

【日常】一名开发人员总结的好习惯,欢迎补充

文章目录 前言首先需要考虑&#xff08;重要&#xff09;设计和架构代码质量测试和调试性能优化 编程的好习惯代码可读性模块化和重用性单一职责异常处理注释和文档常见的Java编码规范的例子下面是一个示例代码&#xff0c;展示了一些编码规范的应用还有一些其他的编码规范值得…

C++项目:【负载均衡式在线OJ】

文章目录 一、项目介绍 二、技术栈与开发环境 1.所用技术: 2.开发环境&#xff1a; 三、项目演示 1.运行代码 2.进入项目首页 3.题目列表 4.点击具体一道题 5.编辑代码并提交 四、项目思维导图 五、项目宏观结构 六、Comm公共模块 1.日志工具log.hpp 2.其他工具…

html与css知识点

html 元素分类 块级元素 1.独占一行&#xff0c;宽度为父元素宽度的100% 2.可以设置宽高 常见块级元素 h1~h6 div ul ol li dl dt dd table form header footer section nav article aside 行内元素 1.一行显示多个 2.不能设置宽高&#xff0c;宽高由元素内容撑开 常见行内…

“桥接模式”和“NAT模式”以及“host-only模式(仅主机模式)”

使用虚拟机的时候&#xff0c;我们常看到网络链接配置中&#xff0c;有【桥接】、【NAT】、【仅主机】的选项&#xff0c;今天就来介绍一下这三种网络链接模式。 关于虚拟机中配置网络的内容可以看这篇博客&#xff1a; 深入浅出的介绍一下虚拟机VMware Workstation——part2…

update语句没有用到主键索引会带来的问题

准备材料 建一张表&#xff0c;数据列不建立索引。并写入1万条数据 CREATE TABLE identity.t2 (id INT NOT NULL COMMENT Id,a INT NULL,PRIMARY KEY (id),KEY idx_a (a) );delimiter // create procedure gen_data() begin declare i int default 0; set i0; start transact…

2021-07-31 - 需要打印出来的图表 - 含各种机制

1.应用场景 主要用于帮助自己记住知识点&#xff0c;能随时记起&#xff0c;有时候就是要记住&#xff0c;每次靠查询是不可靠的&#xff5e; 2.学习/操作 1.文档阅读 08 | 数据库优化方案&#xff08;一&#xff09;&#xff1a;查询请求增加时&#xff0c;如何做主从分离&a…