Differences between EDK and EDK II
Frequently asked questions about the differences between EDK and EDK II
What is the difference between EDK and EDK II?
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.
- Build infrastructure and Build tools
- Packages / directory structure
- Rich Libraries
- Platform Configuration Database (PCD)
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.
|Development OS||WinXP||WinXP, Win64, Win 7, Vista32, Vista64, Linux, OS/X|
|Compiler/Linker||VS2003, VS2005, WinDDK||VS2003, VS2005, VS2008, WinDDK, Intel, GCC|
|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
|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
|Configuration Method||#define||Platform Configuration Database
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