Step to UEFI (236)UEFI Shell 下浮点运算测试

UEFI的 StdLib 中内置了一些数学运算操作,在Math.h中可以找到tan, sin 等等。这次测试一下如何调用sin() 函数。

首先,要保证 \AppPkg\AppPkg.dsc 末尾有如下定义:

!include StdLib/StdLib.inc

接下来在编写的 UEFI程序对应的 inf 文件中LibraryClasses下面有引用 LibMath:

[LibraryClasses]
  LibC
  LibStdio
  ShellCEntryLib   
  ShellLib
  BaseLib
  BaseMemoryLib
  UefiLib
  LibMath

最后,代码中 include math.h 即可。

示例代码:

1. MathTest.c 如下:

#include  <Uefi.h>
#include  <Library/UefiLib.h>
#include  <Library/ShellCEntryLib.h>
#include  <stdio.h>
#include  <stdlib.h>
#include  <math.h>

extern EFI_BOOT_SERVICES         *gBS;

int
EFIAPI
main (                                         
  IN int Argc,
  IN char **Argv
  )
{
  printf("Pi=%f\n",M_PI);
  printf("sin(Pi/2)=%f\n",sin(M_PI /2));
  printf("sin(Pi/4)=%f\n",sin(M_PI /4));
  printf("sin(Pi/6)=%f\n",sin(M_PI /6));
  return EFI_SUCCESS;
}

2. MathTest.inf 如下:

[Sources]
  MathTest.c

[Packages]
  StdLib/StdLib.dec   
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec 


[LibraryClasses]
  LibC
  LibStdio
  ShellCEntryLib   
  ShellLib
  BaseLib
  BaseMemoryLib
  UefiLib
  LibMath

代码运行结果:

《Step to UEFI (236)UEFI Shell 下浮点运算测试》有3个想法

  1. 你好,我重新Git了edk2017的代码,编译后运行NT32模拟器,可以进去,但是还是卡在了Shell处,键盘鼠标皆不可用。不知你是否有遇到过此类情况。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注