From de49f991ac2beeb02ca77da98fa126da171ac831 Mon Sep 17 00:00:00 2001 From: Regia König Date: Mon, 15 Aug 2022 11:11:17 +0200 Subject: Add script to copy HelloWorld.efi, OVMF* and HelloWorld.c to corresponding location --- test_code/HelloWorld.c | 104 ++++++++++++++++++++++++++++++++++ test_code/OVMF_VARS.fd | Bin 540672 -> 540672 bytes test_code/copy_files.sh | 5 ++ test_code/hda-contents/HelloWorld.efi | Bin 9920 -> 9920 bytes 4 files changed, 109 insertions(+) create mode 100644 test_code/HelloWorld.c create mode 100755 test_code/copy_files.sh diff --git a/test_code/HelloWorld.c b/test_code/HelloWorld.c new file mode 100644 index 0000000..2f99825 --- /dev/null +++ b/test_code/HelloWorld.c @@ -0,0 +1,104 @@ +/** @file + This sample application bases on HelloWorld PCD setting + to print "UEFI Hello World!" to the UEFI Console. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include "Library/DebugLib.h" +#include "Guid/FileSystemInfo.h" + +EFI_GUID gEfiLoadedImageProtocolGuid = EFI_LOADED_IMAGE_PROTOCOL_GUID; + +// +// String token ID of help message text. +// Shell supports to find help message in the resource section of an application image if +// .MAN file is not found. This global variable is added to make build tool recognizes +// that the help string is consumed by user and then build tool will add the string into +// the resource section. Thus the application can use '-?' option to show help message in +// Shell. +// +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_HELLO_WORLD_HELP_INFORMATION); + + +void getBase(EFI_SYSTEM_TABLE *SystemTable, EFI_HANDLE ImageHandle) { + + EFI_STATUS status; + + VOID *LoadedImage; + status = SystemTable->BootServices->OpenProtocol( + ImageHandle, + &gEfiLoadedImageProtocolGuid, + &LoadedImage, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL); + if (status != EFI_SUCCESS) { + Print(L"Failed to open LoadedImage."); + } else { + VOID *base = ((EFI_LOADED_IMAGE_PROTOCOL *) LoadedImage)->ImageBase; + /*UINT64 size = ((EFI_LOADED_IMAGE_PROTOCOL *) LoadedImage)->ImageSize;*/ + + Print(L"Image Base: 0x%1x\n", (unsigned long)(base)); + } + +} + + +/** + The user Entry Point for Application. The user code starts with this function + as the real entry point for the application. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval other Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +UefiMain ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + + DEBUG((EFI_D_INFO, "My Entry Point: 0x%08x\r\n",(CHAR16*)UefiMain)); + + getBase(SystemTable, ImageHandle); + + Print(L"UefiMain: 0x%1x\n", (unsigned long)UefiMain); + + UINT32 Index; + + Index = 0; + + // + // Three PCD type (FeatureFlag, UINT32 and String) are used as the sample. + // + if (FeaturePcdGet (PcdHelloWorldPrintEnable)) { + for (Index = 0; Index < PcdGet32 (PcdHelloWorldPrintTimes); Index++) { + // + // Use UefiLib Print API to print string to UEFI console + // + Print ((CHAR16 *)PcdGetPtr (PcdHelloWorldPrintString)); + Print(L"Own Hello World\n"); + } + } + + volatile int wait = 1; + + while(wait) { + __asm__ __volatile__("pause"); + } + + return EFI_SUCCESS; +} \ No newline at end of file diff --git a/test_code/OVMF_VARS.fd b/test_code/OVMF_VARS.fd index 4115974..efb4f46 100644 Binary files a/test_code/OVMF_VARS.fd and b/test_code/OVMF_VARS.fd differ diff --git a/test_code/copy_files.sh b/test_code/copy_files.sh new file mode 100755 index 0000000..98c7beb --- /dev/null +++ b/test_code/copy_files.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +cp ~/Memtest/git/edk2/Build/OvmfX64/DEBUG_GCC5/FV/OVMF* . +cp ~/Memtest/git/edk2/Build/OvmfX64/DEBUG_GCC5/X64/HelloWorld.efi hda-contents +cp ~/Memtest/git/edk2/MdeModulePkg/Application/HelloWorld/HelloWorld.c . diff --git a/test_code/hda-contents/HelloWorld.efi b/test_code/hda-contents/HelloWorld.efi index 610744a..4082f4c 100644 Binary files a/test_code/hda-contents/HelloWorld.efi and b/test_code/hda-contents/HelloWorld.efi differ -- cgit v1.2.3-55-g7522