EDK2 (EFI Developer Kit II)

repository·master·Indexed 27 days ago

https://github.com/tianocore/edk2

An open-source implementation of the UEFI specification providing a framework for developing firmware and bootloaders. Includes documentation for the ArmVirtPkg development environment, Pytools build infrastructure, and CodeQL plugin integration for static analysis and SARIF result generation.

Tokens
59.1K
Snippets
121
Records
292
Agent score
89%

What's inside edk2

  1. Overview of CodeQL Plugins

    master

    The CodeQL plugin suite provides two main plugins for integrating static analysis into a Stuart build environment:

    1. CodeQlBuildPlugin: Generates a CodeQL database from a build.
    2. CodeQlAnalyzePlugin: Analyzes an existing CodeQL database.

    Key advantages include local parity with CI results, VS Code integration, and portability across different host infrastructures (not tied to specific CI providers like GitHub or Azure DevOps).

  2. Overview of Debug Macro Check

    master
    Debug Macro Check is a Python-based tool designed to scan build packages for debug macro formatting issues. It can be used as a build plugin to catch errors early in the development cycle or as a standalone script for manual checks or CI integration. It helps prevent errors in debug prints that might otherwise lead to unexpected behavior or difficult debugging in non-frequently executed code paths.
  3. Overview of Intel TDX Virtual Firmware (TDVF)

    master

    Intel Trust Domain Extension (TDX) is an Intel Architecture extension providing trusted, isolated VM execution by removing CSP software (like the hypervisor) from the Trusted Computing Base (TCB).

    TDX Virtual Firmware (TDVF) is an EDK II-based project that enables UEFI support for TDX-based Virtual Machines, providing the capability to launch a Trust Domain (TD).

  4. Overview of CryptoPkg cryptographic services

    master

    The CryptoPkg provides cryptographic services required for firmware features such as UEFI Secure Boot, Measured Boot, firmware image authentication, and network boot. It leverages implementations from the OpenSSL and MbedTLS projects.

    Developers can integrate these services using two methods:

    1. Static Linking: All required services are linked directly into the firmware module/library.
    2. Dynamic Linking: Modules use a Protocol or PPI (Private Partition Interface) to call services provided by modules like CryptoPei, CryptoDxe, or CryptoSmm.

    Note: Dynamic linking is only available to PEIMs, DXE Drivers, UEFI Drivers, and SMM Drivers, and is not available for SEC or UEFI RT modules.

  5. Overview of GenCfgOpt.py

    master

    The GenCfgOpt.py script generates configuration options from an EDK II Platform Description (DSC) file. It serves three primary purposes:

    1. UPDTXT: Produces a .txt file summarizing the UPD (User Parameter Data) section in the DSC for the compiler.
    2. HEADER: Generates header files for UPD regions (defining _UPD_DATA_REGION structures).
    3. GENBSF: Generates a Boot Settings File (BSF) used by the Binary Configuration Tool (BCT) to provide a GUI for manipulating UPD region settings.

    Workflow Note: The UPDTXT and HEADER tasks must be completed before running the build command. The GENBSF task can be performed at any time.

  6. Overview of the Dynamic Tables Framework

    master

    The Dynamic Tables Framework is designed to reduce firmware porting effort by generating standardized firmware tables from external sources (such as a management node or system construction files) at run-time.

    Instead of handcrafted ACPI Source Language (ASL) or C-code, the framework uses standard table generators implemented as libraries. These generators query a platform-specific component called the 'Configuration Manager' to collect necessary hardware information. This approach allows for runtime configuration of platform hardware, such as core counts or SoC features.

  7. Overview of IntelFsp2WrapperPkg

    master
    The IntelFsp2WrapperPkg is a package designed to provide a component that enables the use of an Intel Firmware Support Package (FSP) binary within the EDK2 environment. It acts as a wrapper to facilitate the integration of FSP binaries into firmware development workflows.
  8. Overview of the EDK II Project

    master
    EDK II is a modern, feature-rich, cross-platform firmware development environment designed for the UEFI and PI specifications. It is composed of various packages, and developers can use it to build firmware following industry standards.
  9. Overview of FMMT Python Tool

    master

    FMMT (Firmware Management Tool) is a Python implementation of the edk2 FMMT tool used for operating on firmware files, including Firmware Devices (FD), Firmware Volumes (FV), and Firmware Files (FFS). It allows developers to manipulate the layout of firmware code and data stored in these volumes.

    Key Capabilities:

    • Parse FD, FV, and FFS files.
    • Add a new FFS into an existing FV.
    • Replace an existing FFS in an FV with a new one.
    • Delete an FFS from an FV.
    • Extract an FFS from an FV.
  10. Overview of EDK2 Manageability Package

    master

    The ManageabilityPkg provides EDK2 drivers and libraries for industry platform management standards, including:

    • PLDM (Platform Level Data Model)
    • MCTP (Management Component Transfer Protocol)
    • IPMI (Intelligent Platform Management Interface)

    The package uses a flexible framework designed to support various transport interfaces such as KCS, I2C, PCI VDM, or OEM proprietary transports, abstracting the transport layer from the management protocol specifications.

  11. Overview of UnitTestFrameworkPkg

    master
    The UnitTestFrameworkPkg provides unit testing frameworks for multiple environments, including the UEFI shell and host-based environments. It allows developers to focus on test logic while the framework handles error logging, result formatting, context persistence, and test execution. It supports both low-level and system-level tests and is designed to integrate easily into automation frameworks.