Differences between EDK and EDK II - tianocorecn/tianocorecn.github.io GitHub Wiki

Frequently asked questions about the differences between EDK and EDK II

What is the difference between EDK and EDK II?

Differences:

Mainly the build architecture is very different. Part of the differences are that the build description files (.dsc .inf, etc) have been enhanced and are different. However, the EDK II build understands EDK build description files so that EDK II build can include EDK source code. There are also build tool differences and EDK II supports more OSes and more tool chains. Other differences besides the build include that EDK II has different, richer libraries (MDELIB, etc) which makes some of the source code very different. EDK II also has the package concept so that the directory and file layout is different. EDK II also uses Platform Configuration Database (PCD) for parameterization and fix-up binary support, etc. EDK II supports newer UEFI/PI specifications than EDK (see table below for which versions are supported). In addition, EDK II has compatibility with EDK style sources through the EdkCompatiblityPkg (ECP). This is possible because the ECP will have binary compatability for EDK through its libraies and thunk code. Additionally, EDK II is designed to work with Doxygen to generate design level specifications.

In addition, since EDK II supports the later versions of the UEFI and PI Specifications, there are newer protocols that will be part of EDK II that do not exist in EDK. Thus if there is a desire to use the latest protocols there maybe a need to use EDK II instead of EDK.

Differences Summary:

  • Build infrastructure and Build tools
  • Packages / directory structure
  • Rich Libraries
  • Platform Configuration Database (PCD)
Similarities:

The similarity is that code as far as the Platform Initialization boot execution phases are similar. EDK and EDK II have similar Sec-PEI-DXE-TSL and runtime phases. Also any of the protocol interfaces that are supported in both EDK and EDK II will be the same. Thus since EDK II understands EDK build description files the EDK II build can include EDK source code though the use of the ECP.

The following table is a side by side comparison.

EDK EDK II
Development OS WinXP WinXP, Win64, Win 7, Vista32, Vista64, Linux, OS/X
Compiler/Linker VS2003, VS2005, WinDDK VS2003, VS2005, VS2008, WinDDK, Intel, GCC
Build nmake nmake, gmake
Build Tools C POSIX C, Python
Target Platforms (open source) NT32, DUET, NT32, UNIX, DUET, OVMF
Distribution ZIP Files – Entire Tree Packages with XML metadata Packages
  • Standard module distribution method (source/binary)
  • XML – Allows packages/modules to be imported/exported to many build systems
  • EDK Compatibility Package – Provides reuse of EDK source modules
Standards (UEFI) EFI 1.10, UEFI 2.0, UEFI 2.1, Intel Framework, PI 1.0 Focus on UEFI 2.3/PI 1.2 /+ Spec Updates Includes Support for EFI 1.10, UEFI 2.0, UEFI 2.1, UEFI 2.2, PI 1.0, PI 1.1, Intel Framework. UDK2010 latest release supports UEFI 3.2.1 / PI 1.2
Library binary .Lib files Library Classes/Library Instances
  • Maximize reuse of source code
  • Use library instances to optimize for size or speed
Configuration Method
  1. define
Platform Configuration Database
  • Maximize reuse of source code
  • Allows platform developer/integrator to modify settings without modifying module sources

Some companies want to know what has changed and why. Is there someplace to find this information per release?



The release notes will have a general summary description of the features and fixes for the core EDK II changes. See UDK2010 for the latest release and release notes.

In the past there were Libraries were associated with PPI

EDK II does not have that anymore

⚠️ **GitHub.com Fallback** ⚠️