lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 1 | Intel(R) Platform Innovation Framework for EFI
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 2 | EFI Development Kit II (EDK II)
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame] | 3 | Root Package 1.00
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 4 | 2006-11-08
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 5 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 6 | Intel is a trademark or registered trademark of Intel Corporation or its
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 7 | subsidiaries in the United States and other countries.
|
| 8 | * Other names and brands may be claimed as the property of others.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 9 | Copyright (c) 2006 - 2007, Intel Corporation
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 10 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 11 | This document provides updates to documentation, along with a description on
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame] | 12 | how to install and build the EDK II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 13 |
|
| 14 | Package Contents
|
| 15 | ----------------
|
hche10x | 3d4bdea | 2006-11-08 09:14:20 +0000 | [diff] [blame] | 16 | BuildNotes.txt - The build notes for this package.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 17 | OldMdePkg - Industry-standard headers and libraries
|
| 18 | Tools - Build -specific tools that are designed to help the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 19 | developer create and modify drivers and libraries
|
| 20 | EdkModulePkg - Reference drivers
|
| 21 | EdkFatBinPkg - Binary DXE drivers for the Fat 32 file system
|
| 22 | EdkShellBinPkg - Binary Shell applications and commands
|
| 23 | EdkNt32Pkg - NT32 Emulation platform reference
|
bbahnsen | c9b1cad | 2007-01-07 20:05:59 +0000 | [diff] [blame] | 24 | EdkUnixPkg - Posix/Unix Emulation platform reference (Currently this
|
| 25 | builds only on ia32 Linux, but is meant to be portable.)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 26 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 27 | Note: MDE and MDK that appear in other documentation refer to the OldMdePkg and
|
| 28 | Tools packages, respectively. While, these two packages are the minimum
|
| 29 | requirement for developing EDK II Packages we recommend that you download all
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 30 | of the top-level files listed above.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 31 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 32 | The following package is available as a separate project, under a separate
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 33 | license, on the TianoCore.org website: https://fat-driver2.tianocore.org
|
lhauch | c6c0039 | 2006-07-13 01:45:03 +0000 | [diff] [blame] | 34 |
|
| 35 | EdkFatPkg - A package containing source DXE drivers for the Fat 32 file
|
| 36 | system
|
| 37 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 38 | Documents have the following filenames (to download these documents, see “Notes
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 39 | on Documentation?later in these Release Notes):
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 40 | EDK II Module Development Environment Library Specification, v0.58
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 41 | (MDE_Library_Spec_0_58.rtf)
|
| 42 | EDK II Build and Packaging Architecture Specification, v0.53
|
| 43 | (Build_Packaging_Spec_0_53.rtf)
|
| 44 | EDK II Platform Configuration Database Infrastructure Description, v0.54
|
| 45 | (PCD_Infrastructure_0_54.rtf)
|
| 46 | EDK II Module Surface Area Specification, v0.51
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 47 | (Module_Surface_Area_0_50.rtf)
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 48 | EDK II Module Development Environment Package Specification, v0.51
|
| 49 | (MDE_Package_Spec_0_51.rtf)
|
| 50 | EDK II C Coding Standards Specification v0.51
|
| 51 | (C_Coding_Standards_Specification_ 0_51.rtf)
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 52 | EDK II Subversion Setup Guide
|
| 53 | (edk2-subversion-setup.rtf)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 54 |
|
| 55 | Pre-Requisites
|
| 56 | --------------
|
| 57 | The following list of tools must be installed on the development workstation
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 58 | prior to using the EDK II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 59 |
|
| 60 | Compiler Tool Chain
|
| 61 | Microsoft* Visual Studio .NET 2003* (http://www.microsoft.com)
|
| 62 | or
|
bbahnsen | 4347544 | 2006-06-07 00:21:44 +0000 | [diff] [blame] | 63 | A special GCC version 4.x or later (http://gcc.gnu.org). See below.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 64 |
|
| 65 | Assembler Tool Chain
|
| 66 | Microsoft Macro Assembler, version 6.15 or later
|
| 67 | or
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 68 | GNU binutils 2.16.1 or later
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 69 | (Http://ftp.gnu.org/gnu/binutils)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 70 |
|
| 71 | Java Development Kit ( Java 5.0 or later)
|
hche10x | ef6e2ef | 2006-07-13 12:13:23 +0000 | [diff] [blame] | 72 | Sun* jdk-1.5.0_06 or later (http://java.sun.com)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 73 | or
|
| 74 | Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)
|
| 75 |
|
| 76 | Java Tools
|
| 77 | Apache-ANT, version 1.6.5 or later (http://ant.apache.org)
|
bbahnsen | 5051888 | 2006-05-03 18:10:56 +0000 | [diff] [blame] | 78 | Ant-contrib, version 1.0b2 or later
|
yshi8 | 782eb16 | 2006-07-07 09:38:58 +0000 | [diff] [blame] | 79 | (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 80 | Saxon8, version 8.1.1
|
| 81 | (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)
|
yshi8 | 782eb16 | 2006-07-07 09:38:58 +0000 | [diff] [blame] | 82 | XMLBeans, version 2.1.0 (http://xmlbeans.apache.org)
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 83 | DO NOT download the latest XMLBeans, version 2.2.0. It is not compatible
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 84 | with Saxon8, version 8.1.1.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 85 |
|
| 86 | Other Tools
|
| 87 | TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)
|
| 88 |
|
| 89 | Optional Tools
|
| 90 | --------------
|
| 91 | Compiler Tool Chains:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 92 | Intel(R) C++ Compiler for Windows*, ver. 9.0 or later (http://www.intel.com)
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 93 | Intel(R) C Compiler for EFI Byte Code, ver. 1.2 or later
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 94 | (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 95 | Microsoft Driver Development Kit, version 3790.1830 or later
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 96 | (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 97 | Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later
|
| 98 | Intel ACPI Component Architecture, version 20060113
|
| 99 |
|
bbahnsen | ba6930b | 2007-01-04 23:56:55 +0000 | [diff] [blame] | 100 | Python
|
| 101 |
|
| 102 | There are several tools implemented in Python and wxPython Widgets in the
|
| 103 | Tools/Python directory. These are optional tools, and are not necessary in
|
| 104 | order to use or build the edk2 code. In order to use them you must
|
| 105 | install Python 2.4.x and wxWidgets 2.8.x for your platform. The tools
|
| 106 | have been tested and work correctly on OS X, Linux and Windows.
|
| 107 |
|
| 108 | There is a script called Install_Python_OSX.sh that will download and
|
| 109 | install the correct versions for OS X. For other platforms, please find
|
| 110 | the installers for your platform at the following sites:
|
| 111 |
|
| 112 | - http://www.python.org/download/releases/2.4.4/ (Python interpreter)
|
| 113 | - http://www.wxpython.org/download.php#binaries (Python GUI extensions)
|
| 114 |
|
| 115 | Your linux distribution may contain packages of python and wxPython, which
|
| 116 | should work, provided they are are compatible with the above specified
|
| 117 | versions.
|
| 118 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 119 | -----------------------------------------------
|
| 120 | Notes on Required Tools (Source Control System)
|
| 121 | -----------------------------------------------
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 122 | The EDK II is being managed by the Subversion Source Control on Tianocore.org.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 123 | Subversion provides speed, security, and additional features. The
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 124 | recommended client is TortoiseSVN version 1.3.3.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 125 | (Available at http://tortoisesvn.tigris.org/)
|
| 126 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 127 | The checkout procedures on the Tianocore.org Web site include
|
| 128 | instructions for the use of Subversion Source Control.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 129 |
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 130 | The URL of the EDK II repository is:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 131 | https://edk2.tianocore.org/svn/edk2/trunk/edk2
|
| 132 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 133 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 134 | --------------------------------------------------------------------
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 135 | Notes On Required Tools (With examples for Windows, OS X, and Linux*)
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 136 | --------------------------------------------------------------------
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 137 | Software Installation Order:
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 138 | After installing the compiler tools and your Subversion client, install the
|
| 139 | following required tools in this order:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 140 | 1. Java JDK
|
| 141 | 2. Apache-Ant
|
| 142 | 3. ant-contrib
|
| 143 | 4. xmlbeans
|
| 144 | 5. saxon8
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 145 |
|
| 146 | Java Development Kit:
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 147 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 148 | The Java Environment Variable must be set before attempting to build.
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 149 | For Sun JDK (see note below?:
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 150 | set JAVA_HOME=c:\Java\jdk1.5.0_06 (Windows example)
|
| 151 | export JAVA_HOME=/Library/Java/Home/ (OS X example)
|
| 152 | export JAVA_HOME=/usr/lib/j2sdk1.5-sun/ (Linux example)
|
| 153 | For Bea Systems:
|
yshi8 | 782eb16 | 2006-07-07 09:38:58 +0000 | [diff] [blame] | 154 | set JAVA_HOME=c:\Java\jrockit-R26.0.0-jdk1.5.0_04
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 155 |
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 156 | ?When using the Sun JDK5.0:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 157 | During installation, you should specify the install directory as C:\Java
|
| 158 | instead of C:\Program Files\(or some other drive letter.) While installing
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 159 | to this non-standard location is not required, in practice, it seems to work
|
| 160 | more reliably.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 161 | For the JDK, the install path is C:\Java\jdk1.5.0_06
|
| 162 | For the JRE, the install path is C:\Java\jre1.5.0_06
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 163 | Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.
|
lhauch | 01d2ed5 | 2006-04-27 15:09:06 +0000 | [diff] [blame] | 164 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 165 | NOTE: You cannot combine the location for the JDK and the JRE, because the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 166 | JRE install removes most of the binaries and libraries installed by the JDK
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 167 | install.
|
| 168 |
|
| 169 | Java Tools:
|
| 170 | The Apache-ANT requires the ANT_HOME environment variable to be set before
|
| 171 | attempting to build:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 172 | set ANT_HOME=c:\<full path to where ant was installed>
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 173 | export ANT_HOME=~/ExternalTools/apache-ant (OS X and Linux example)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 174 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 175 | The ant-contrib.jar file should be installed in the %ANT_HOME%\lib
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 176 | directory.
|
| 177 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 178 | XMLBeans, requires the XMLBEANS_HOME environment variable to be set
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 179 | before attempting to build:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 180 | set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 181 | export XMLBEANS_HOME=~/ExternalTools/xmlbeans (OS X and Linux example)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 182 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 183 | Copy the saxon8.jar file to the %XMLBEANS_HOME%\lib directory.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 184 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 185 | The Ant and XMLBean tools must be in the path.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 186 | MS system example:
|
| 187 | set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin
|
| 188 | Linux/OS X bash shell example:
|
| 189 | export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 190 |
|
| 191 | --------------------
|
| 192 | A Word on Apache-ANT
|
| 193 | --------------------
|
| 194 | The Apache-ANT program is a build tool that uses XML-based project files.
|
| 195 | Similar to Makefiles, these project files may contain multiple targets. Most
|
| 196 | build.xml files in EDK II are auto-generated; any edits performed on the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 197 | build.xml files will be overwritten by the next build.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 198 |
|
| 199 | Pre-defined targets in the build.xml file include:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 200 | all - This target builds binaries for defined architectures.
|
| 201 | clean - This target removes object files generated by commands.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 202 | cleanall - This target removes all generated files and directories.
|
| 203 |
|
lhauch | d0d0be5 | 2007-01-25 18:33:21 +0000 | [diff] [blame] | 204 | Use the ANT option, -emacs, to remove the [cc] characters when an error occurs
|
| 205 | to provide a method for the Visual Studio IDE to open a file by double
|
| 206 | clicking the mouse on the file. Add -emacs to the end of the build command.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 207 | ----------------------------
|
| 208 | A Word on the GCC Tool Chain
|
| 209 | ----------------------------
|
bbahnsen | 7fe8ec4 | 2006-10-05 16:37:34 +0000 | [diff] [blame] | 210 |
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 211 | EDK II will not compile with a standard Linux gcc tool chain. While Linux
|
bbahnsen | 7fe8ec4 | 2006-10-05 16:37:34 +0000 | [diff] [blame] | 212 | distributions are usually based on ELF, EDK II requires a version of gcc that
|
| 213 | is configured to produce PE-COFF images. You will find a script in <Root of
|
| 214 | EDK2 tree>/Tools/gcc/tianoCross-gcc-4.1 that will download, configure, compile,
|
| 215 | and install a gcc 4.1 cross-compile tool chain for EDK II development. This
|
| 216 | custom tool chain supports the IA-32 architecture. It can be built and run on
|
| 217 | Cygwin, Linux, and many other POSIX-compliant host operating environments. To
|
| 218 | compile the custom gcc tool chain, you need the following tools on your host
|
| 219 | computer: bash, gcc, gmake, curl (or wget).
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 220 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 221 | Only the OldMdePkg, EdkModulePkg and EdkUnixPkg are currently supported by gcc
|
bbahnsen | c9b1cad | 2007-01-07 20:05:59 +0000 | [diff] [blame] | 222 | builds. Other builds, such as the EdkNt32Pkg, will not compile with gcc. By
|
| 223 | default, the edk2 will try to build the NT32.fpd, which is not supported by
|
| 224 | gcc. So, you need to change the Tools/Conf/target.txt.
|
bbahnsen | af9a0f8 | 2006-07-27 15:55:59 +0000 | [diff] [blame] | 225 |
|
bbahnsen | 7fe8ec4 | 2006-10-05 16:37:34 +0000 | [diff] [blame] | 226 | The cross-compile build script has been tested on Cygwin, OS X and Linux. You
|
| 227 | should expect to hack on these scripts to make them work on your system. You
|
| 228 | may need to install additional tools on your system to make the scripts work.
|
| 229 |
|
| 230 | You will need
|
| 231 |
|
| 232 | A recent version (3.0 or later should be fine) of gcc that is able to produce
|
| 233 | executables for the machine that you want to run this compiler on (the host
|
| 234 | machine).
|
| 235 | wget or curl (which enables the download of the gcc compiler source code)
|
| 236 | tar
|
| 237 | bzip
|
| 238 | gzip
|
| 239 | bash
|
| 240 | and possibly others
|
| 241 |
|
| 242 | CYGWIN Notes
|
| 243 |
|
| 244 | You should setup cygwin to use binmode on all mounts. When you initially
|
| 245 | install cygwin it gives you the choice of Unix file mode (recommended) or DOS
|
| 246 | file mode. Unix mode will cause all the cygwin directories to be mounted in
|
| 247 | binmode, while DOS will mount the dirs in textmode. Here is an example of a
|
| 248 | cygwin install where the dirs are (properly) mounted in binmode.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 249 | To view mount information, type:
|
lhauch | 1095e1f | 2006-10-18 18:41:52 +0000 | [diff] [blame] | 250 | mount
|
bbahnsen | 7fe8ec4 | 2006-10-05 16:37:34 +0000 | [diff] [blame] | 251 |
|
| 252 | C:\cygwin\bin on /usr/bin type user (binmode)
|
| 253 | C:\cygwin\lib on /usr/lib type user (binmode)
|
| 254 | c:\workspace on /workspace type system (binmode)
|
| 255 | C:\cygwin on / type user (binmode)
|
| 256 |
|
| 257 | If you use textmode, it is likely that the build will fail in a way that is
|
lhauch | 1095e1f | 2006-10-18 18:41:52 +0000 | [diff] [blame] | 258 | hard to debug. Textmode is required to retain or add the DOS ^M characters
|
| 259 | in DOS batch files during file editing sessions.
|
| 260 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 261 | You can switch from textmode to binmode for compilation by executing the
|
lhauch | 1095e1f | 2006-10-18 18:41:52 +0000 | [diff] [blame] | 262 | following:
|
| 263 | mount -b --change-cygdrive-prefix cygdrive
|
bbahnsen | 7fe8ec4 | 2006-10-05 16:37:34 +0000 | [diff] [blame] | 264 |
|
| 265 | Cygwin is pretty slow, so it is not recommended for large builds.
|
| 266 |
|
| 267 |
|
| 268 |
|
| 269 |
|
| 270 |
|
bbahnsen | af9a0f8 | 2006-07-27 15:55:59 +0000 | [diff] [blame] | 271 | The platform to be built is identified by the Tools/Conf/target.txt file:
|
| 272 |
|
| 273 | #
|
| 274 | # PROPERTY Type Use Description
|
| 275 | # ---------------- -------- -------- -----------------------------------------------------------
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 276 | # ACTIVE_PLATFORM Filename Recommended Specify the WORKSPACE relative Path and Filename
|
bbahnsen | af9a0f8 | 2006-07-27 15:55:59 +0000 | [diff] [blame] | 277 | # of the platform FPD file that will be used for the build
|
| 278 | # This line is required if and only if the current working
|
| 279 | # directory does not contain one or more FPD files.
|
| 280 |
|
| 281 | ACTIVE_PLATFORM =
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 282 |
|
bbahnsen | af9a0f8 | 2006-07-27 15:55:59 +0000 | [diff] [blame] | 283 | You can leave it black, as above, or set it to any .fpd file in the workspace.
|
| 284 | If you leave it blank, then you just cd to the dir that contains the .fpd that
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 285 | you would like to build (OldMdePkg/ or EdkModulePkg/) and then type build.
|
bbahnsen | 6329bec | 2006-07-25 22:08:33 +0000 | [diff] [blame] | 286 |
|
| 287 | ----------------------------
|
| 288 | A Word on compiling on Linux
|
| 289 | ----------------------------
|
| 290 |
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 291 | In order to compile on Linux, you will need to have the e2fsprogs-devel package
|
bbahnsen | 6329bec | 2006-07-25 22:08:33 +0000 | [diff] [blame] | 292 | installed. Check your distribution for the rpm, deb or other package format.
|
| 293 | This package contains the uuid library and header that are used by some of the
|
| 294 | host tools.
|
| 295 |
|
| 296 | If you are running on x86_64 Linux, then you should install a 64 bit version of
|
| 297 | the Java JDK. The version that was used was jdk-1_5_0_07-linux-amd64-rpm.bin.
|
| 298 | It may be downloaded from sun.com.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 299 |
|
bbahnsen | 0a75428 | 2006-07-26 18:31:53 +0000 | [diff] [blame] | 300 | -----------------------------------------
|
| 301 | A Word on compiling under Cygwin with gcc
|
| 302 | -----------------------------------------
|
| 303 |
|
| 304 | Cygwin is a POSIX style operating environment for Windows. It is possible to
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 305 | compile the EDK 2 using gcc and cygwin. Compiling under cygwin is slow, because
|
| 306 | the underlying file accesses are slow in cygwin. For this reason, we do not
|
| 307 | encourage the use of cygwin. A true unix system will be a superior choice for
|
qouyang | 6f02e33 | 2006-08-08 06:21:04 +0000 | [diff] [blame] | 308 | those wishing to compile with gcc.
|
bbahnsen | 0a75428 | 2006-07-26 18:31:53 +0000 | [diff] [blame] | 309 |
|
| 310 | Make sure that you select the e2fsprogs development package when you install
|
| 311 | cygwin. It is necessary for the GenFvImage tool.
|
| 312 |
|
michaelx_krau | ea5254e | 2006-08-01 20:18:19 +0000 | [diff] [blame] | 313 | ----------------------------------------
|
| 314 | A Word on gcc for Processor Architectures
|
| 315 | ----------------------------------------
|
| 316 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 317 | Currently gcc support is limited to IA-32 builds, generating IA-32 PE32 images.
|
michaelx_krau | ea5254e | 2006-08-01 20:18:19 +0000 | [diff] [blame] | 318 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 319 | The X64 bit (Intel 64, etc.) support under the gcc compiler does not support the EFIAPI
|
| 320 | calling convention (as defined in the UEFI 2.0 specification Chapter 2), so it is not
|
| 321 | possible to build a working EFI image for an X64 environment. Since the x64 gcc does
|
| 322 | not support the EFIAPI calling convention the x64 tools do not support generating a
|
| 323 | PE32+ image. The EFIAPI calling convention is very similar to the Microsoft x64
|
qouyang | 6f02e33 | 2006-08-08 06:21:04 +0000 | [diff] [blame] | 324 | calling convention.
|
michaelx_krau | ea5254e | 2006-08-01 20:18:19 +0000 | [diff] [blame] | 325 |
|
bbahnsen | c9b1cad | 2007-01-07 20:05:59 +0000 | [diff] [blame] | 326 | We have added prelinary support for the MinGW64 Tool chain. This gcc tool
|
| 327 | chain is ported to follow the Microsft X64 ABI, and therefore is compatible
|
| 328 | with the EFI specification.
|
| 329 |
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 330 | On Itanium?Processors the gcc compiler does not support generating a PE32+ image.
|
michaelx_krau | ea5254e | 2006-08-01 20:18:19 +0000 | [diff] [blame] | 331 |
|
bbahnsen | c9b1cad | 2007-01-07 20:05:59 +0000 | [diff] [blame] | 332 | ----------------------------------------
|
| 333 | A Word on EdkUnixPkg -- The Unix simulator
|
| 334 | ----------------------------------------
|
| 335 |
|
| 336 | A unix port of the Nt32 simulator has been added to the project. It currently
|
| 337 | builds and runs on 32 bit Linux, but should be portable to other Unix
|
| 338 | variants. In order to build it, you should use the ELFGCC tool chain defintion
|
| 339 | in tools_def.txt, which is set in target.txt. These are two settings to make
|
| 340 | in Tools/Conf/target.txt:
|
| 341 |
|
| 342 | ACTIVE_PLATFORM = EdkUnixPkg/Unix.fpd
|
| 343 | TOOL_CHAIN_TAG = ELFGCC
|
| 344 |
|
| 345 | Once that is setup, type build, and then you will end up with the simulator in
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 346 | Build/Unix/DEBUG_ELFGCC/IA32/SecMain.exe.
|
bbahnsen | c9b1cad | 2007-01-07 20:05:59 +0000 | [diff] [blame] | 347 |
|
| 348 | In order to use the gdb debugger with the simulator, you may need to load the
|
| 349 | correct symbol file for the various modules that are loaded. For example,
|
| 350 |
|
| 351 | add-symbol-file EdkModulePkg/Bus/Pci/PciBus/Dxe/PciBus/DEBUG/./PciBus.dll
|
| 352 | 0x45dc6000
|
| 353 |
|
| 354 | You can see the names of the symbol files (they are in ELF format even though
|
| 355 | the extension is .dll) printed on the screen as the simulator comes up.
|
| 356 |
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 357 | -----------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 358 | Notes on Documentation
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 359 | -----------------------
|
| 360 | The documents are being managed by the Subversion Source Control on
|
| 361 | Tianocore.org. The document repository is "docs" and must be checked out
|
| 362 | separately from the EDK II source tree. Refer to the checkout procedures on
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 363 | the Tianocore.org Web site for EDK II.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 364 |
|
| 365 | The URL of the document repository is:
|
| 366 | https://edk2.tianocore.org/svn/edk2/trunk/docs
|
| 367 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 368 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 369 | -------------------------------------------------------------------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 370 | Quick Start
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 371 | -----------
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 372 | (assumes Microsoft Tools and OS environment, for GCC Tools or Linux, see
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 373 | "Detailed Starting Instructions" below)
|
| 374 |
|
| 375 | Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 376 | check out the entire EDK II source tree.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 377 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 378 | In a command window, change to the top-level directory of the EDK II source.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 379 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 380 | To test your tool chain setup and to build the supplied tools, execute:
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 381 | c:\MyWork\edk2\> edksetup ForceRebuild
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 382 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 383 | (The edksetup script is referred to as the setup command throughout the
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 384 | rest of this document.)
|
| 385 | NOTE: You should run the setup command at the start of every session.
|
| 386 | This configures the environment to include the TianoTools and the
|
| 387 | Java applications and libraries.
|
| 388 |
|
| 389 | You will need to set the WORKSPACE environment variable, or run the edksetup
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 390 | script (without any arguments), any time you want to build.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 391 |
|
| 392 | Set the WORKSPACE environment variable, e.g.:
|
| 393 |
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 394 | c:\> set WORKSPACE=C:\MyWork\edk2
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 395 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 396 | You may need to edit the text files Tools/Conf/target.txt and
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 397 | Tools/Conf/tools_def.txt (created by edksetup) using your favorite
|
| 398 | text editor to ensure that the paths to the tools you want to use
|
| 399 | to build EDK II binaries are correct. These files contain the default
|
| 400 | paths (as per the default installation of the tools), so a customized
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 401 | install may require this manual process.
|
| 402 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 403 | Once this is completed, you are ready to test the build, by executing:
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 404 | c:\MyWork\edk2\> build
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 405 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 406 | This command builds the active platform specified in text file target.txt. If
|
| 407 | the active platform is not specified target.txt, you must execute the build
|
| 408 | command from the sub-directory that contains FPD files. For more information
|
| 409 | about the active platform policy, see the “EDK II Build and Packaging
|
bbahnsen | ba6930b | 2007-01-04 23:56:55 +0000 | [diff] [blame] | 410 | Architecture Specification.?
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 411 |
|
| 412 | -------------------------------------------------------------------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 413 | Detailed Starting Instructions
|
| 414 | ------------------------------
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 415 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 416 | Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 417 | check out the entire EDK II source tree.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 418 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 419 | In a command window, change to the top-level directory of the EDK II source.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 420 |
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 421 | If the active compiler tool chain is GCC, you must set the
|
| 422 | environment variable, TOOL_CHAIN to "gcc" before running the
|
| 423 | edksetup script. Example: export TOOL_CHAIN=gcc
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 424 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 425 | To test your tool chain setup and to build the supplied tools, execute:
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 426 | c:\MyWork\edk2\> edksetup ForceRebuild
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 427 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 428 | On Linux systems, you must source the edksetup.sh file to load the correct
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 429 | settings into your shell.
|
| 430 |
|
| 431 | . edksetup.sh # Note the dot.
|
| 432 |
|
bbahnsen | a5760d0 | 2006-07-27 22:02:59 +0000 | [diff] [blame] | 433 | If you have recently updated your code from subversion, the tools will need to
|
| 434 | be rebuilt if there were any code changes made to them. You can request that
|
| 435 | the tools get rebuilt by typing:
|
| 436 |
|
| 437 | . edksetup.sh Rebuild # Unix-like systems
|
| 438 | edksetup.bat Rebuild # Windows
|
| 439 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 440 | The edksetup script is referred to as the setup command throughout the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 441 | rest of this document.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 442 | NOTE: You should run the setup command (edksetup)at the start of every
|
| 443 | session. This configures the environment to include the
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 444 | TianoTools and the Java applications and libraries.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 445 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 446 | Any changes to the tool source code or XML Schema documents require that
|
| 447 | you execute the following:
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 448 | c:\MyWork\edk2\> edksetup ForceRebuild
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 449 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 450 | You must set the WORKSPACE environment variable, or run the edksetup
|
| 451 | script (without any arguments), any time you want to build.
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 452 |
|
| 453 | Set the WORKSPACE environment variable, e.g.:
|
| 454 |
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 455 | c:\> set WORKSPACE=C:\MyWork\edk2
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 456 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 457 | You may need to edit the text files Tools/Conf/target.txt and
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 458 | Tools/Conf/tools_def.txt (created by edksetup) using your favorite
|
| 459 | text editor to ensure that the paths to the tools you want to use
|
| 460 | to build EDK II binaries are correct. These files contain the default
|
| 461 | paths (as per the default installation of the tools), so a customized
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 462 | tool installation may require this manual process.
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 463 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 464 | Once this is completed, you are ready to test the build, by executing:
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 465 | c:\MyWork\edk2\> build
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 466 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 467 | This command builds the active platform specified in text file target.txt. If
|
| 468 | the active platform is not specified, go to the sub-directory that contains FPD
|
| 469 | files and execute the build command. For more information about the active
|
| 470 | platform policy, see the “EDK II Build and Packaging Architecture
|
bbahnsen | ba6930b | 2007-01-04 23:56:55 +0000 | [diff] [blame] | 471 | Specification.?
|
bbahnsen | 90f7b6a | 2006-06-22 23:19:41 +0000 | [diff] [blame] | 472 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 473 | --------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 474 | Individual Platform Builds
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 475 | --------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 476 | After running the setup command, you can build individual platforms.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 477 | In the command window:
|
| 478 | Set the active platform in target.txt, and execute this command:
|
| 479 | c:\<directory>\> build
|
| 480 | or
|
| 481 | cd to the platform (FPD file) that you want to build and execute this command:
|
lhauch | 80d1b38 | 2006-08-07 22:17:13 +0000 | [diff] [blame] | 482 | c:\MyWork\edk2\EdkNt32Pkg\> build
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 483 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 484 | Note that the active platform specified in target.txt overrides the platform
|
| 485 | specified by any FPD file in the current directory. For more information
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 486 | about active platform policy, see the “EDK II Build and Packaging Architecture
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 487 | Specification.?
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 488 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 489 | To run the Nt32 emulation platform under Microsoft Windows, go to
|
lhauch | 70edbc3 | 2006-07-14 06:46:15 +0000 | [diff] [blame] | 490 | <full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 491 |
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 492 | To exit the Nt32 emulation platform, type “reset?at the EFI Shell>
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 493 | command prompt. Alternatively, from the graphical interface, select the Boot
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 494 | Maintenance Manager's “Reset System?command.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 495 |
|
michaelx_krau | 020fa45 | 2006-07-18 16:31:13 +0000 | [diff] [blame] | 496 | NOTE: When creating a new platform, the Platform Name is restricted
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 497 | to a single word containing alphanumeric characters, underscore, dash,
|
| 498 | and period. The space character and other special characters are
|
michaelx_krau | 020fa45 | 2006-07-18 16:31:13 +0000 | [diff] [blame] | 499 | not allowed.
|
lhauch | 70edbc3 | 2006-07-14 06:46:15 +0000 | [diff] [blame] | 500 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 501 | -----------------------
|
| 502 | Notes on Symbolic Debug
|
| 503 | -----------------------
|
| 504 | To enable EFI Symbolic Debugging, make sure the target output is set to DEBUG
|
| 505 | in the text file Tools/Conf/target.txt and then modify the FPD <BuildOptions>
|
| 506 | <Options><Option BuildTargets="DEBUG" ToolCode="CC"> and append the following
|
| 507 | compiler options to the string:
|
| 508 | "/D EFI_GENERATE_SYM_FILE", "/D EFI_SYMBOLIC_DEBUG"
|
| 509 |
|
| 510 | (If the Option line does not contain "/D EFI_DEBUG", you must add that
|
| 511 | option as well.)
|
lhauch | 03fed93 | 2006-05-24 19:51:36 +0000 | [diff] [blame] | 512 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 513 | ------------------------
|
| 514 | Individual Module Builds
|
| 515 | ------------------------
|
| 516 | After running the setup command, you can build individual modules.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 517 | In the command window, cd to the module that you want to build, and
|
| 518 | execute the build command:
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 519 | c:\MyWork\edk2\OldMdePkg\Library\BaseLib\> build
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 520 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 521 | You must set the active platform in target.txt for individual module builds.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 522 |
|
| 523 | -------------------------------------------------------------------------------
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 524 |
|
| 525 | General Information:
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 526 | ===============================================================
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 527 | Mechanisms
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 528 | ----------
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 529 | A brief overview:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 530 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 531 | A) The Surface Area Package Description (SPD) file contains information about
|
| 532 | the modules that the package contains, including the location of all MSA files,
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 533 | and public library names and headers that might be provided by a module in the
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 534 | package. Packages are defined by SPD files. (Found in the root of the Package
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 535 | subdirectory (i.e. EdkNt32Pkg).) The SPD file is further explained in “EDK II
|
bbahnsen | ba6930b | 2007-01-04 23:56:55 +0000 | [diff] [blame] | 536 | Build and Packaging Architecture Specification.?
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 537 |
|
| 538 | B) Module Surface Area Definition (MSA) files. A description of a module's
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 539 | surface area, with all module specific default flags and features specified.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 540 | For additional details, see the "EDK II Module Surface Area Specification" and
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 541 | the "EDK II Build and Packaging Architecture Specification."
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 542 |
|
| 543 | C) Framework Platform Description (FPD) files. A description of a platform's
|
| 544 | surface are, including a list of modules that are needed by the platform. To
|
| 545 | support individual module builds, developers are not required to provide
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 546 | information about specific flash devices, nor flash device layout.
|
| 547 | Specific sections in the FPD file control aspects of the build, such
|
| 548 | as the Supported Architectures and Build Targets, as well as the tool flags
|
| 549 | that are used to create the binary files. A valid platform file can specify
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 550 | zero or more modules, so individual modules can be compiled within the context
|
| 551 | of a platform (FPD) definition.
|
| 552 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 553 | D) Platform Configuration Database (PCD). A platform database that contains a
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 554 | variety of current platform settings or directives that can be accessed by a
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 555 | driver or application. The PCD is defined by the PCD_Protocol (This is
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 556 | further explained in the "EDK II Platform Configuration Database Infrastructure
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 557 | Description."
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 558 |
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 559 | E) Library Class. A library class is a logical grouping of similar functions.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 560 | When developing components, the module surface area declares the class of
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 561 | libraries that can be used by the component. The MSA and SPD files can specify
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 562 | a recommended instance of the library that a platform integrator (PI) may
|
| 563 | select, however this is only a recommendation. The PI may choose to select a
|
| 564 | different library instance to be used during compilation and linking. All
|
| 565 | library type modules must include header files in their distribution package,
|
| 566 | as well as their MSA files. Components, on the other hand, need provide only an
|
| 567 | MSA file and either source or binary files when distributing packages. The
|
| 568 | Library Classes are further explained in the "EDK II Build and Packaging
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 569 | Architecture Specification."
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 570 |
|
| 571 | =========================================================================
|
| 572 | The common operations by developers of new modules are:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 573 | -----------------------------------------------
|
| 574 | 1) Manually creating a new module in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 575 | - The module source code must first be created in an appropriate directory
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 576 | (under the package the module is to be a part of.)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 577 | - An MSA file must be created, spelling out all aspects of the module.
|
| 578 | - The MSA must be added to the SPD for the package to include the module.
|
| 579 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 580 | -----------------------------------------------------
|
| 581 | 2) Adding and Removing modules to and from a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 582 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 583 | - Set up environment as Build
|
| 584 | - Adding a module to a package:
|
| 585 | - Generate the MSA file
|
| 586 | - Add a new <Filename> element under <MsaFiles> into
|
| 587 | <PackageDir>\<PackageName>.spd, using arelative path to the package
|
| 588 | - Add a new <ModuleSA> entry under each <FrameworkModules> into the
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 589 | <PackageDir>\<PackageName>.fpd file if necessary.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 590 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 591 | - Removing a module from a package:
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 592 | - Comment out or remove the corresponding <Filename> element under
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 593 | <MsaFiles> from <PackageDir>\<PackageName>.spd
|
| 594 | - Comment out or remove the corresponding <ModuleSA> entry under each
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 595 | <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 596 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 597 | -------------------------------
|
| 598 | 3) Manually creating a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 599 | - Identify the modules that are to be members of the project.
|
| 600 | - Identify the Variables and Guids required in and of the Package (including
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 601 | consumption and production information).
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 602 | - Create an SPD file defining these modules and calling out their MSA files.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 603 | - Add a new <Filename> element under <PackageList> into
|
| 604 | Tools\Conf\FrameworkDatabase.db, using the relative path to the workspace.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 605 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 606 | -----------------------------------------
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 607 | 4) Declaring a new Protocol in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 608 | - This release requires manual editing of the SPD file, adding the protocol
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 609 | to the ProtocolDeclarations section of the file.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 610 | - Add the Protocol .h file to the Include\Protocol directory.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 611 | - Add an <Entry> to the <ProtocolDeclarations> element in the
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 612 | <PackageName>.spd file
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 613 | - Each line contains Protocol base name, followed by the global variable
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 614 | name, and the hex value of the Protocol GUID.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 615 |
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 616 | Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 617 | file):
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 618 | <ProtocolDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 619 | <Entry Name="Bds">
|
| 620 | <C_Name>gEfiBdsArchProtocolGuid</C_Name>
|
| 621 | <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>
|
| 622 | <HelpText/>
|
| 623 | </Entry>
|
| 624 | <Entry Name="Cpu">
|
| 625 | <C_Name>gEfiCpuArchProtocolGuid</C_Name>
|
| 626 | <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>
|
| 627 | <HelpText/>
|
| 628 | </Entry>
|
| 629 | </ProtocolDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 630 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 631 | ------------------------------------
|
| 632 | 5) Declaring a new PPI in a package:
|
| 633 | - This release requires manual editing of the SPD file
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 634 | - Add the PPI .h file to the Include\Ppi directory.
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 635 | - Add an <Entry> to the package <PpiDeclarations> element in the
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 636 | <PackageName>.spd file
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 637 | - Each line contains the PPI base name, followed by the global variable
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 638 | name and the hex value of the PPI GUID.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 639 |
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 640 | Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):
|
| 641 | <PpiDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 642 | <Entry Name="BootInRecoveryMode">
|
| 643 | <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>
|
| 644 | <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>
|
| 645 | <HelpText/>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 646 | </Entry>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 647 | <Entry Name="CpuIo">
|
| 648 | <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>
|
| 649 | <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>
|
| 650 | <HelpText/>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 651 | </Entry>
|
| 652 | </PpiDeclarations>
|
| 653 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 654 | -------------------------------------
|
| 655 | 6) Declaring a new GUID in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 656 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 657 | Guid. This is identical to adding a ProtocolDeclaration or PpiDeclaration
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 658 | element, as described above.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 659 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 660 | ------------------------------------------
|
| 661 | 7) Declaring a new PCD entry in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 662 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 663 | PCD. New Pcd entries are added to the PcdDefinitions section of the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 664 | <PackageName>.spd file using the following example for the format
|
| 665 | (NOTE: The hex <Token> value must be unique):
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 666 |
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 667 | <PcdDeclarations>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 668 | <PcdEntry ItemType="FIXED_AT_BUILD">
|
| 669 | <C_Name>PcdMaximumUnicodeStringLength</C_Name>
|
| 670 | <Token>0x00000001</Token>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 671 | <TokenSpaceGuidCName>gEfiMdePkgTokenSpaceGuid</TokenSpaceGuidCName>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 672 | <DatumType>UINT32</DatumType>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 673 | <ValidUsage>FIXED_AT_BUILD</ValidUsage>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 674 | <DefaultValue>1000000</DefaultValue>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 675 | <HelpText>The maximum lengh for unicode string.</HelpText>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 676 | </PcdEntry>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 677 | </PcdDeclarations>
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 678 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 679 | ------------------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 680 | 8) Declaring a new Library Class:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 681 | - This release requires manual editing of the SPD file to include the new
|
vanjeff | 6e4c64c | 2007-06-20 05:35:00 +0000 | [diff] [blame] | 682 | Library Class. New Library Class entries are added to the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 683 | LibraryClassDeclarations section of the <PackageName>.spd file using
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 684 | the following example for the format:
|
| 685 |
|
| 686 | <LibraryClassDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 687 | <LibraryClass Name="BaseLib">
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 688 | <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 689 | <HelpText/>
|
| 690 | </LibraryClass>
|
| 691 | <LibraryClass Name="BaseMemoryLib">
|
| 692 | <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>
|
| 693 | <HelpText/>
|
| 694 | </LibraryClass>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 695 | </LibraryClassDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 696 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 697 | =======================================================
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 698 | EDK II Changes Relative to the original EDK:
|
| 699 | --------------------------------------------
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 700 | The EDK II represents significant changes in the structure of the EDK.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 701 | Therefore, it is very difficult to isolate all of the changes of this version of
|
| 702 | the EDK with the original EDK.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 703 |
|
| 704 | Of particular note:
|
| 705 |
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 706 | 1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 707 | These libraries are provided to make Memory Reference Code (MRC) development
|
| 708 | easier.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 709 | 2) The MDE libraries represent significant changes in source
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 710 | (with only limited changes in functionality.) These new libraries conform
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 711 | to the "EDK II Module Development Environment Library Specification.?
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 712 | 3) The Fat Binary and the EDK Shell Binary Packages are functionally identical
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 713 | to the original EDK.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 714 | 4) The EDK tools directory has been expanded to include more tools and more
|
| 715 | tool functionality.
|
| 716 | 5) The EDK NT32 section has been ported to the new build process, but
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 717 | functionally remains the same as the original EDK.
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 718 | 6) The Application "HelloWorld" has been ported to EDK II as well.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 719 |
|
| 720 | =======================================================
|
hche10x | b440dd8 | 2006-11-08 06:12:54 +0000 | [diff] [blame] | 721 | Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4890, no
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 722 | virus detected.
|
bbahnsen | ba6930b | 2007-01-04 23:56:55 +0000 | [diff] [blame] | 723 |
|
bbahnsen | c9b1cad | 2007-01-07 20:05:59 +0000 | [diff] [blame] | 724 | vim:tw=78:ts=2:com=fb\:- :ai
|