您的位置:首页 > 产品设计 > UI/UE

UEFI应用与编程--WriteCmos

2018-03-09 14:05 597 查看
CmosWrite.c

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/ShellCEntryLib.h>
#include <Library/ShellLib.h>
#include <Library/IoLib.h>
#include <Library/UefiBootServicesTableLib.h>

#define CMOS_INDEX 0x70
#define CMOS_DATA 0x71

STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{NULL, TypeMax}
};

INTN
EFIAPI
ShellAppMain (
IN UINTN Argc,
IN CHAR16 **Argv
)
{
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
EFI_STATUS Status;
CONST CHAR16 *Temp;
UINT64 Address;
UINT64 Value;

Value = 0;
Address = 0;

Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);

if (EFI_ERROR (Status)) {
Print(L"Get ShellCommandLineParse fail.\r\n");
gBS->FreePool (ProblemParam);
goto Exit;
} else {
if (ShellCommandLineGetCount (Package) < 3) {
Print(L"Too few arguments.\r\n");
goto Exit;
} else {
if(ShellCommandLineGetCount (Package) > 3) {
Print(L"Too many arguments.\r\n");
goto Exit;
}
}
Temp = ShellCommandLineGetRawValue(Package, 1);
Status = ShellConvertStringToUint64(Temp, (UINT64*)&Address, TRUE, FALSE);
if (EFI_ERROR (Status)) {
Print(L"Invalid parameter.\r\n");
goto Exit;
}
Temp = ShellCommandLineGetRawValue(Package, 2);
Status = ShellConvertStringToUint64(Temp, (UINT64*)&Value, TRUE, FALSE);
if (EFI_ERROR (Status)) {
Print(L"Invalid parameter.\r\n");
goto Exit;
}
IoWrite8(CMOS_INDEX, (UINT8)Address);
IoWrite8(CMOS_DATA,(UINT8)Value);

}

Exit:
if (Package != NULL) {
ShellCommandLineFreeVarList (Package);
}
return EFI_SUCCESS;

}

CmosWrite.inf

[Defines]
INF_VERSION = 0x00010005
BASE_NAME = CmosWrite
FILE_GUID = dc72d2c7-a48a-42fd-80b6-9d229d9943c8
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
ENTRY_POINT = ShellCEntryLib

[Sources]
CmosWrite.c

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

[LibraryClasses]
UefiLib
IoLib
ShellCEntryLib
ShellLib
UefiBootServicesTableLib
[Protocols]

[Ppis]

[Guids]

[BuildOptions]

[Pcd]

[PcdEx]

[FixedPcd]

[FeaturePcd]

[PatchPcd]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  edk2 udk uefi bios cmos