Intel(R) Platform Innovation Framework for EFI
EFI Development Kit II (EDK II) 
Root Package 1.00
2006-07-06

Copyright (c) 2006, Intel Corporation

This document provides updates to documentation, along with a description on 
how to install and build the EDK II.

Package Contents
----------------
  ReleaseNote.txt- These release notes for the package.
  MdePkg         - A package containing Industry Standard headers and libraries
  Tools          - A package containing Build Specific tools which are designed
                   to help the developer create and modify drivers and
                   libraries
  EdkModulePkg   - A package containing reference drivers
  EdkFatBinPkg   - A package containing binary DXE drivers for the Fat 32 file
                   system
  EdkFatPkg      - A package containing source DXE drivers for the Fat 32 file
                   system
  EdkShellBinPkg - A package containing binary Shell applications and commands
  EdkNt32Pkg     - A package containing the NT32 Emulation platform reference

Note: MDE and MDK that appear in other documentation refer to the MdePkg and
Tools packages.  These two packages are the minimum requirement for developing
EDK II Packages.  It is also recommended that the top level files included
with the EDK be downloaded in conjunction with these two packages.

Note: Documents have the following filenames:
  EDK II Module Development Environment Library Specification v0.50 
      (MDE_Library_Spec_0_50.rtf)
  EDK II Build and Packaging Architecture Specification v0.50
      (Build_Packaging_Spec_0_50.rtf)
  EDK II Platform Configuration Database Infrastructure Description v0.51
      (PCD_Infrastructure_0_51.rtf)
  EDK II Module Surface Area v0.50
      (Module_Surface_Area_0_50.rtf)
  EDK II Module Development Environment (MDE) Package Specification v0.50
      (MDE_Package_Spec_0_50.rtf)
  EDK II C Coding Standards Specification v0.50
      (C_Coding_Standards_Specification_ 0_50.rtf)

Pre-Requisites
--------------
The following list of tools must be installed on the development workstation
prior to using the Edk II.

Compiler Tool Chain
      Microsoft* Visual Studio .NET 2003*  (http://www.microsoft.com)
    or
      A special GCC version 4.x or later (http://gcc.gnu.org). See below.

Assembler Tool Chain
      Microsoft Macro Assembler, version 6.15 or later
    or
      GNU binutils 2.16.1 or later

Java Development Kit ( Java 5.0 or later)
      Sun* jdk-1.5.0_04 or later (http://java.sun.com)
    or
      Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)

Java Tools
    Apache-ANT, version 1.6.5 or later (http://ant.apache.org)
    Ant-contrib, version 1.0b2 or later
      (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download)
    Saxon8, version 8.1.1
      (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)
    XMLBeans, version 2.1.0 (http://xmlbeans.apache.org)
      DO NOT download the latest XMLBeans, version 2.2.0. It cannot work with
      Saxon8, version 8.1.1.

Other Tools
    TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)

Optional Tools
--------------
Compiler Tool Chains:
    Intel C++ Compiler for Windows, ver. 9.0 or later (http://www.intel.com)
    Intel C Compiler for EFI Byte Code, ver. 1.2 or later 
      (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)
    Microsoft Driver Development Kit, version 3790.1830 or later
      (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)
    Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later
    Intel ACPI Component Architecture, version 20060113

-----------------------
Notes On Required Tools (Source Control System)
-----------------------
The EDK II is being managed by the Subversion Source Control on Tianocore.org.
This software package provides speed, security, and additional features. The
recommended client is TortoiseSVN version 1.3.3. 
 (Available at http://tortoisesvn.tigris.org/)

There are instructions for the use of Subversion Source Control on the
Tianocore.org website, as part of the checkout procedures.

The URL of the EDK II repository is:
  https://edk2.tianocore.org/svn/edk2/trunk/edk2

-----------------------
Notes On Documentation
-----------------------
The documents are being managed by the Subversion Source Control on
Tianocore.org.  The document repository is "docs" and must be checked out
separately from the EDK II source tree. Refer to the checkout procedures on
the Tianocore.org website for EDK II.

The URL of the document repository is:
  https://edk2.tianocore.org/svn/edk2/trunk/docs


-----------------------
Notes On Required Tools (With examples for Windows, OS X, and Linux) 
-----------------------
Software Installation Order:
  After installing the compiler tools and your Subversion client, the following
  required tools should be installed in order: 
    Java JDK, Apache-Ant, ant-contrib, xmlbeans, saxon8

Java Development Kit:
 
   The Java Environment Variable must be set before attempting to build.
       For Sun JDK (see note below*):
              set JAVA_HOME=c:\Java\jdk1.5.0_06  (Windows example)
              export JAVA_HOME=/Library/Java/Home/ (OS X example)
              export JAVA_HOME=/usr/lib/j2sdk1.5-sun/ (Linux example)
       For Bea Systems:
              set JAVA_HOME=c:\Java\jrockit-R26.0.0-jdk1.5.0_04
 
  *When using the Sun JDK5.0
    During installation, you should specify the install directory as C:\Java
    instead of C:\Program Files\(or some other drive letter.)  While installing
    to this non-standard location is not required. In use, it seems to work 
    more reliably. 
    For the JDK, the install path would be C:\Java\jdk1.5.0_06
    For the JRE, the install path would be C:\Java\jre1.5.0_06
    Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.

    NOTE: You cannot combine the location for the JDK and the JRE, as the JRE
    install removes most of the binaries and libraries installed by the JDK
    install.

Java Tools:
    The Apache-ANT requires the ANT_HOME environment variable to be set before
    attempting to build:
         i.e.  set ANT_HOME=c:\<full path to where ant was installed>
          export ANT_HOME=~/ExternalTools/apache-ant (OS X and Linux example)

    The ant-contrib.jar file should be installed in the %ANT_HOME%\lib 
    directory.

    The XMLBeans, requires the XMLBEANS_HOME environment variable to be set
    before attempting to build:
         i.e. set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>
          export XMLBEANS_HOME=~/ExternalTools/xmlbeans (OS X and Linux example)

    The saxon8.jar file should be copied to the %XMLBEANS_HOME%\lib directory.

   The Ant and XMLBean tools are required to be in the path.
     MS system example:
        set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin
     Linux/OS X bash shell example:
        export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin
 
-------------------------------------------------------------------------------
Quick Start
-----------
For editing text files under Windows, use the Wordpad application.  Notepad
does not handle UNIX style newline characters properly.

Copy the target.template file in the Tools/Conf directory to target.txt, which
must also be in the Tools/Conf directory.

Edit the text file, target.txt, located in the Tools/Conf directory. This 
file contains options for setting the active platform and restricting the build. 
The restictions are used to limit the build output by specifying build target(s), 
tagname(s) and architecture(s) to less than the full set of possible options. 

The ACTIVE_PLATFORM must be set unless the current working directory contains one
or more FPD files.  All other options need not be set, however by unsetting these
options (by removing the line from the file, or leaving the Value empty) will 
result in all available build possibilites when typing build.  By default EDK II
can build a matrix of binaries, using different target types, tool chain tags and 
architectures.  Options to target.txt file are as follows:

ACTIVE_PLATFORM =  Value   RECOMMENDED
  Where Value is the WORKSPACE relative path and filename of a Framework Platform 
  Definition (FPD) File.  Example:

ACTIVE_PLATFORM = MdePkg/MdePkg.fpd

TARGET = Value             OPTIONAL
  Where Value is a list of one or more of the following: DEBUG, RELEASE or a User
  Defined Target type, such as PERF. Example: 

TARGET = DEBUG RELEASE

TARGET_ARCH = Value        OPTIONAL
  Where Value is a list of one or more supported Architectures: IA32, X64, IPF or
  EBC.  Example: 

TARGET_ARCH = IA32 X64 EBC

TOOL_CHAIN_CONF = Value    OPTIONAL
  Where Value is the Filename of an alternate tools_def.txt file created by the
  user.  The alternate tools_def.txt files must be in the Tools/Conf directory.
  These tool definitions are scoped to the WORKSPACE (location of the EDK 
  installation) and cannot be shared between WORKSPACES. (You can copy the files
  from one workspace to another.) Example: 

TOOL_CHAIN_CONF = alfred.txt

TOOL_CHAIN_TAG = Value     OPTIONAL
  Where Value is a list of TagName entries as defined in the tools_def.txt file.
  The TagName can be used to specify different versions of a compiler, i.e., 
  gcc 4.0 and gcc 4.1 which will allow you to build binaries with both tool chains 
  during the same build - useful during testing of a new compiler tool chain, or 
  for changing compiler flags to check out performance with a different set of 
  flags than flags used for production.  Example:

TOOL_CHAIN_TAG = GCC40 GCC41

To clear a restriction, just remove any data after the equal sign.  To clear
the TARGET_ARCH limitation that was set above, enter: 

TARGET_ARCH =

-----------
Copy the tools_def.template file in Tools/Conf to tools_def.txt in the same
directory.

Edit the tools definition file, tools_def.txt, also located in the Tools/Conf 
directory. This file contains the names of the compiler tool chains and the 
location of the compiler binaries.  It has been pre-populated with the standard 
location for the Microsoft tool chains and includes the standard location of 
the Intel C Compiler for EFI Byte Code (EBC.)  In addition, EDK II provides
support for Cygwin, Linux and OS X GCC compiler tool chains.  A script has been
provided in the Tools/gcc directory as well as instructions in obtaining and
building a version of GCC that has been tested.  The tools_def.txt file has
the GCC binary locations that are created using this script.

Both target.txt and tools_def.txt files are formatted as Property = Value, 
which must appear on a single line.  Spanning a Value entry over multiple
lines is not supported at this time.  In the target.txt file, the Property is
a single, uppercase word with underscore characters. These Property names are
fixed by the build system.  The tools_def.txt file's Property is an underscore
delimited coding, which supports some user defined values.  The coding for
the Property is:  TARGET_TAGNAME_ARCH_COMMAND_ATTR  The Value, is either a 
full path, full path and filename or a reserved word.

TARGET  - DEBUG and RELEASE are predefined, however the user may define one or
          more of their own TARGET types in this file.

TAGNAME - HOST, MSFT, GCC, INTC are predefined, however the user may define 
          one or more of their own TAGNAME keywords in this file.

ARCH    - EDK II supports IA32, X64, IPF and EBC at this time.

COMMAND - Predefined command codes are listed in the tools_def.txt file, however
          the user can specify additional command codes for their one, non-
          standard tools.

ATTR    - Predefined Attributes are listed in the tools_def.txt file.

NOTE: The TAGNAME: HOST is reserved and MUST be defined in order to build the
      included Tiano tools from their C source files.  These tools have been
      built and tested using both Microsoft and GCC tool chains.
NOTE: The "*" symbol may be used as a wildcard character in most of these
      fields, refer to the tools_def.txt and the "EDK II Build and Packaging
      Architecture Specification" for more details.


-----------
Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
checkout the entire EDK II source tree.

In a command window, change to the top level directory of the Edk II sources.
  Set the WORKSPACE environment variable, e.g.:

    c:\> set WORKSPACE=C:\MyWork\Edk2

To test your tool chain setup and to build the Supplied Tools, execute:
    c:\MyWork\Edk2\> edksetup

On Unix systems you must source the edksetup.sh file to load the correct
settings into your shell.

    . edksetup.sh # Note the dot.

(This command will be referred to as the setup command throughout the rest of
this document.)
      NOTE: You should run the setup command at the start of every session.
            This configures the environment to include the TianoTools and the
            Java applications and libraries.

If you are confident that none of the tool tool sources have changed, and you
only want to set up the workspace environment you may execute:
   c:\MyWork\Edk2\> edksetup skip

Once this is completed, you are ready to test the Build, by executing:
    c:\MyWork\Edk2\> build

This command builds active platform specified in text file target.txt. If 
active platform is not specified, go to sub-directory which contains FPD files and
type build. More information about active platform policy reference to specification
<<EDK II Build and Packaging Architecture Specification>>.

-------------------------
Individual Platform Builds
-------------------------
After running the setup command, you can build individual platforms.
  In the command window, 
  1. Set active platform in target.txt, and type "build" in whatever directory;
  2. or cd to the platform (FPD file) that you want to build, and just type:
    c:\MyWork\Edk2\EdkNt32Pkg\> build

  Note that active platform with the high priority to build, that means active 
  platform will be built even if exists FPD file under current directory. More 
  information about active platform policy reference to specification
  <<EDK II Build and Packaging Architecture Specification>>. 

Go to <full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe
to run the Nt32 emulation platform under Microsoft Windows.

To exit the Nt32 emulation platform, you may type reset at the EFI Shell>
command prompt.  Alternately, you may use the Graphical interface, Boot
Maintenance Manager screen's Reset System command.

------------------------
Individual Module Builds
------------------------
After running the setup command, you can build individual modules.
  In the command window, cd to the module that you want to build, and just
  type:
    c:\MyWork\Edk2\MdePkg\Library\BaseLib\> build

  Note active platform must be set for individual module build. 

-------------------------------------------------------------------------------
A Word on Apache-ANT
--------------------
The Apache-ANT program is a build tool that uses XML-based project files.
Similar to Makefiles, these project files may contain multiple targets.  Most
build.xml files in EDK II are auto-generated; any edits performed on the
build.xml files will be overwritten the next time build is executed.

Pre-defined targets in the build.xml file include:
    all      - This target builds binaries for defined architectures
    clean    - This target removes object files generated by commands
    cleanall - This target removes all generated files and directories.

A Word on GCC tool chain
------------------------
EDK II will not compile with a standard Linux gcc tool chain. While Linux
distributions are usually based on ELF, EDK II requires a version of gcc 
that is configured to produce PE-COFF images. You will find a script in 
edk2/Tools/gcc that will download, configure, compile, and install a gcc 
4.X cross-compile tool chain for EDK II development. It has support for 
the IA32 architecture. It can be built and run on Cygwin, Linux, and many 
other POSIX compliant host operating environments. There are a few tools
that you will need on your host computer in order to compile the tool 
chain. Among them are bash, gcc, gmake, curl (or wget).

-------------------------------------------------------------------------------

General Information:
===============================================================    
Mechanisms:
----------
A brief overview:

A) Surface Area Package Description (SPD) file contains information about the
modules that the package contains, including the location of all MSA files, and
public library names and headers that might be provided by a module in the
package.  Packages are defined by SPD files.  (Found in the root of the Package
subdirectory (i.e. EdkNt32Pkg)) The SPD is further explained in the "EDK Build 
and Packaging Architecture Specification" document.
 
B) Module Surface Area Definition (MSA) files.  A description of a module's 
surface area, with all module specific default flags and features specified.
Refer to the "Module Surface Area Architecture Specification" for additional
details. The MSA is further explained in the "EDK II Build Packaging Architecture 
Specification" document.

C) Framework Platform Description (FPD) files.  A description of a platform's
surface are, including a list of modules that are needed by the platform.  To
support individual module builds, developers are not required to provide
information about specific flash devices, nor flash device layout.  There are
specific sections in the FPD file that do control aspects of the build, such 
as the Supported Architectures and Build Targets, as well as the tool flags 
that are used to create the binary files.  A valid platform file can specify 
zero or more modules, so individual modules can be compiled within the context
of a platform (FPD) definition.

D) Platform Configuration Database (PCD).  A platform database which contains a
variety of current platform settings or directives by which a driver or
application can interact with.  The PCD is defined by the PCD_Protocol (This is
further explained in the "Platform Configuration Database Infrastructure 
Description" document.

E) Library Class.  A library class is a logical grouping of similar functions.
When developing components, the module surface area declares the class of
libraries that can be used by the component. The MSA and SPD files can specify
a recommended instance of the library that a platform integrator may select,
however this is only a recommendation.  The PI may choose to select a different
library instance to be used during compilation/linking. All library type modules 
must include header files in their distribution package, as well as their MSA
files. Components, on the other hand, need only provide an MSA and either source
or binary files when distributing packages.  The Library Classes are further 
explained in the "EDK II Build and Packaging Architecture Specification" 
document.

=========================================================================
The common operations by developers of new modules are:
-------------------------------------------------------

1) How to manually create a new module in a package:
  - The module source code must first be created in an appropriate directory
    (under the package the module is to be a part of.)  
  - An MSA file must be created, spelling out all aspects of the module.
  - The MSA must be added to the SPD for the package to include the module.

-----------------------------------------
2) Add/Remove module(s) to/from a package:

  - Setup environment as Build
  - Add a module to a package
     * Generate the module SurfaceArea description file
     * Add a new <Filename> element under <MsaFiles> into
       <PackageDir>\<PackageName>.spd, using relative path to package
     * Add a new <ModuleSA> entry under each <FrameworkModules> into
       <PackageDir>\<PackageName>.fpd file if necessary. 

   - Remove a module from a package
     * Comment out or remove corresponding <Filename> element under <MsaFiles>
       from <PackageDir>\<PackageName>.spd
     * Comment out or remove corresponding <ModuleSA> entry under each
       <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary. 

-----------------------------------
3) How to manually create a package:
  - Identify the modules that are to be members of the project.
  - Identify the Variables and Guids required in and of the Package (including
    consumption/production information).
  - Create an SPD file defining these modules and calling out their MSA files.
  - add a new <Filename> element under <PackageList> into 
    Tools\Conf\FrameworkDatabase.db, using the relative path to workspace. 

--------------------------------------
4) Declare a new Protocol in a package: 
  - This release requires manual editing of the SPD file, adding the protocol
    to the ProtocolDeclarations section of the file. 
  - Add the Protocol .h file to the Include\Protocol directory.
  - Add an <Entry> to the <ProtocolDeclarations> element in the 
    <PackageName>.spd file
     * Each line contains Protocol base name then the global variable name and
       then the hex value of the Protocol GUID.

Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD file):
<ProtocolDeclarations>
  <Entry Name="Bds">
    <C_Name>gEfiBdsArchProtocolGuid</C_Name>
    <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>
    <HelpText/>
  </Entry>
  <Entry Name="Cpu">
    <C_Name>gEfiCpuArchProtocolGuid</C_Name>
    <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>
    <HelpText/>
  </Entry>
</ProtocolDeclarations>

---------------------------------
5) Declare a new PPI in a package:
 - This release requires manual editing of the SPD file
  - Add the PPI .h file to the Include\Ppi directory.
  - Add an <Entry> to the package <PpiDeclarations> element in the 
    <PackageName>.spd file
     * Each line contains PPI base name then the global variable name and then
       the hex value of the PPI GUID.

Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):
<PpiDeclarations>
  <Entry Name="BootInRecoveryMode">
    <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>
    <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>
    <HelpText/>
  </Entry>
  <Entry Name="CpuIo">
    <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>
    <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>
    <HelpText/>
  </Entry>
</PpiDeclarations>

----------------------------------
6) Declare a new GUID in a package:
  - This release requires manual editing of the SPD file to include the new
    Guid.  This is identical to adding a ProtocolDeclaration or PpiDeclaration
    element as described above.

--------------------------------------- 
7) Declare a new PCD entry in a package:
  - This release requires manual editing of the SPD file to include the new
    PCD.  New Pcd entries are added to the PcdDefinitions section of the
    <PackageName>.spd file using the following example for the format:
    NOTE: The hex <Token> value must be unique.

<PcdDeclarations>
  <PcdEntry ItemType="FIXED_AT_BUILD">
    <C_Name>PcdMaximumUnicodeStringLength</C_Name>
    <Token>0x00000001</Token>
    <TokenSpaceGuidCName>gEfiMdePkgTokenSpaceGuid</TokenSpaceGuidCName>
    <DatumType>UINT32</DatumType>
    <ValidUsage>FIXED_AT_BUILD</ValidUsage>
    <DefaultValue>1000000</DefaultValue>
    <HelpText>The maximum lengh for unicode string.</HelpText>
  </PcdEntry>
</PcdDeclarations>
  
------------------------------
8) Declare a new Library Class:
  - This release requires manual editing of the SPD file to include the new
    Library Class.  New Library Class entries are added to the 
    LibraryClassDeclarations seection of the <PackageName>.spd file using
    the following example for the format:

<LibraryClassDeclarations>
  <LibraryClass Name="BaseLib">
    <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>
    <HelpText/>
  </LibraryClass>
  <LibraryClass Name="BaseMemoryLib">
    <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>
    <HelpText/>
  </LibraryClass>
</LibraryClassDeclarations>

=======================================================
Notes:
------
The EDK II represents significant changes in the structure of the EDK.
Therefore it is very difficult to isolate all of the changes of this version of
the EDK with the previous (EDK 1.0) version.

Of particular note:

1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.
   These libraries are provided to make Memory Reference Code (MRC) development
   easier.
2) The MDE Libraries - The MDE libraries represent significant changes in source
   (with only limited changes in functionality.)  These new libraries conform
   to the "MDE Library Specification". 
3) The Fat Binary and the EDK Shell Binary Packages are functionally identical
   to the EDK 1.0 version.
4) The EDK tools directory has been expanded to include more tools and more
   tool functionality.
5) The EDK NT32 section has been ported to the new build process, but
   functionally remains the same as the EDK 1.0 version.
6) The Application "HelloWorld" has been ported to EDK II as well.

=======================================================
Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4718, no
virus detected.

