Differences between EDK and EDK II
Clone this wiki locally
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: EDK II supports a larger number of operating systems and 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). However, this his being depricated in current platforms. This is possible because the ECP will have binary compatability for EDK through its libraies and thunk code.
EDK II is also 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.
- 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/7/8/8.1/10, Linux, OS/X|
|Compiler/Linker||VS2003, VS2005, WinDDK||VS2003, VS2005, VS2008, VS2010, VS2013, VS2015, WinDDK, Intel, GCC4, GCC5, LLVM/CLANG|
|Build Tools||C||POSIX C, Python|
|Target Platforms (open source)||NT32, DUET,||See EDK II Platforms|
|Distribution||ZIP Files – Entire Tree Packages with XML metadata||
|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+, PI 1.0+ & Intel Framework. See UDK2015 release notes for info.|
|Library||binary .Lib files||
Library Classes/Library Instances
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 of features and fixes for EDK II changes. See UDK2015 for the latest stable release and release notes.
EDK II does not use that model.