diff options
author | Konstantin Aladyshev <aladyshev22@gmail.com> | 2021-07-10 00:04:40 +0300 |
---|---|---|
committer | Konstantin Aladyshev <aladyshev22@gmail.com> | 2021-07-10 00:04:40 +0300 |
commit | 6064c1e48b622f53538f4df9bdd402c607a87d51 (patch) | |
tree | 93d3c937b9568568307fd2ff7053a30c538ad72a /Lesson_26/README.md | |
parent | a9c375c80c3505be794ec2b5d5bb90de27ef0d42 (diff) | |
download | UEFI-Lessons-6064c1e48b622f53538f4df9bdd402c607a87d51.tar.gz UEFI-Lessons-6064c1e48b622f53538f4df9bdd402c607a87d51.tar.bz2 UEFI-Lessons-6064c1e48b622f53538f4df9bdd402c607a87d51.zip |
Move lessons to separate folder
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
Diffstat (limited to 'Lesson_26/README.md')
-rw-r--r-- | Lesson_26/README.md | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/Lesson_26/README.md b/Lesson_26/README.md deleted file mode 100644 index 255d139..0000000 --- a/Lesson_26/README.md +++ /dev/null @@ -1,194 +0,0 @@ -As you remember the entry point for our UEFI programs is: - -``` -EFI_STATUS -EFIAPI -UefiMain ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -``` - -The passed structure `EFI_SYSTEM_TABLE` looks like this according to UEFI specification: - -``` -typedef struct { - EFI_TABLE_HEADER Hdr; - CHAR16 *FirmwareVendor; - UINT32 FirmwareRevision; - EFI_HANDLE ConsoleInHandle; - EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn; - EFI_HANDLE ConsoleOutHandle; - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; - EFI_HANDLE StandardErrorHandle; - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr; - EFI_RUNTIME_SERVICES *RuntimeServices; - EFI_BOOT_SERVICES *BootServices; - UINTN NumberOfTableEntries; - EFI_CONFIGURATION_TABLE *ConfigurationTable; -} EFI_SYSTEM_TABLE; -``` - -We've already used most of the fields of this structure. Now it is time to peek inside these fields: -``` -UINTN NumberOfTableEntries; -EFI_CONFIGURATION_TABLE *ConfigurationTable -``` -According to the UEFI spec: -``` -NumberOfTableEntries The number of system configuration tables in the buffer ConfigurationTable. -ConfigurationTable A pointer to the system configuration tables. The number of entries in the table is NumberOfTableEntries. -``` - -As for EFI_CONFIGURATION_TABLE type: -``` -EFI_CONFIGURATION_TABLE - -Summary: -Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the EFI System Table. - -typedef struct{ - EFI_GUID VendorGuid; - VOID *VendorTable; -} EFI_CONFIGURATION_TABLE; - -``` - -Let's create a simple program `ShowTables` to look at tables referenced by this structure in OVMF: -``` -#include <Library/UefiBootServicesTableLib.h> -#include <Library/UefiLib.h> - -EFI_STATUS -EFIAPI -UefiMain ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - for (UINTN i=0; i<SystemTable->NumberOfTableEntries; i++) { - Print(L"%g, %p\n", SystemTable->ConfigurationTable[i].VendorGuid, - SystemTable->ConfigurationTable[i].VendorTable); - } - return EFI_SUCCESS; -} -``` - -Build and execute it under OVMF: -``` -FS0:\> ShowTables.efi -EE4E5898-3914-4259-9D6E-DC7BD79403CF, 78EDF98 -05AD34BA-6F02-4214-952E-4DA0398E2BB9, 7ED2AC0 -7739F24C-93D7-11D4-9A3A-0090273FC14D, 78EA018 -4C19049F-4137-4DD3-9C10-8B97A83FFDFA, 7ED3AA0 -49152E77-1ADA-4764-B7A2-7AFEFED95E8B, 7ED5F10 -060CC026-4C0D-4DDA-8F41-595FEF00A502, 7942018 -EB9D2D31-2D88-11D3-9A16-0090273FC14D, 7941000 -EB9D2D30-2D88-11D3-9A16-0090273FC14D, 7B7E000 -8868E871-E4F1-11D3-BC22-0080C73C8881, 7B7E014 -DCFA911D-26EB-469F-A220-38B7DC461220, 6E86018 -``` - -_______ - -Let's search edk2 codebase for GUIDs: -``` -EE4E5898-3914-4259-9D6E-DC7BD79403CF, 78EDF98 -``` -`gLzmaCustomDecompressGuid` - -LZMA_CUSTOM_DECOMPRESS_GUID - -https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/LzmaDecompress.h - -GUID indicates the LZMA custom compress/decompress algorithm. -The Global ID used to identify a section of an FFS file of type EFI_SECTION_GUID_DEFINED, whose contents have been compressed using LZMA. -``` -05AD34BA-6F02-4214-952E-4DA0398E2BB9, 7ED2AC0 -``` -`gEfiDxeServicesTableGuid` - -DXE_SERVICES_TABLE_GUID - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/DxeServices.h (DXE Services Table) - -``` -7739F24C-93D7-11D4-9A3A-0090273FC14D, 78EA018 -``` -`gEfiHobListGuid` - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/HobList.h - -HOB List passed from PEI to DXE - -``` -4C19049F-4137-4DD3-9C10-8B97A83FFDFA, 7ED3AA0 -``` -`gEfiMemoryTypeInformationGuid` - -https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/MemoryTypeInformation.h - -The memory type information HOB - -``` -49152E77-1ADA-4764-B7A2-7AFEFED95E8B, 7ED5F10 -``` - -`gEfiDebugImageInfoTableGuid` - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Debug ImageInfoTable.h - -Debug Image Info Table - -``` -060CC026-4C0D-4DDA-8F41-595FEF00A502, 7942018 -``` -`gMemoryStatusCodeRecordGuid` - -https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h - -Status code records HOB that originate from the PEI status code - -``` -EB9D2D31-2D88-11D3-9A16-0090273FC14D, 7941000 -``` -`gEfiSmbiosTableGuid` - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/SmBios.h - -SMBIOS tables - -``` -EB9D2D30-2D88-11D3-9A16-0090273FC14D, 7B7E000 -``` - -`gEfiAcpi10TableGuid` - -ACPI_10_TABLE_GUID ACPI_TABLE_GUID - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Acpi.h - -ACPI tables for old specifications - -``` -8868E871-E4F1-11D3-BC22-0080C73C8881, 7B7E014 -``` -gEfiAcpiTableGuid/gEfiAcpi20TableGuid - -EFI_ACPI_20_TABLE_GUID EFI_ACPI_TABLE_GUID - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/Acpi.h - -ACPI tables for modern specifications - -``` -DCFA911D-26EB-469F-A220-38B7DC461220, 6E77018 -``` - -gEfiMemoryAttributesTableGuid - -https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Guid/MemoryAttributesTable.h - -UEFI Memory Attributes Table [Defined in UEFI spec] - - |