blob: 7c2f8eed249f88df084e0db84fc32e2b1d9d8b33 [file] [log] [blame]
lhauchaa0bf4f2006-04-26 17:54:57 +00001Intel(R) Platform Innovation Framework for EFI
vanjeff6e4c64c2007-06-20 05:35:00 +00002EFI Development Kit II (EDK II)
yshi8362271d2006-07-06 10:42:42 +00003Root Package 1.00
hche10xb440dd82006-11-08 06:12:54 +000042006-11-08
lhauchaa0bf4f2006-04-26 17:54:57 +00005
vanjeff6e4c64c2007-06-20 05:35:00 +00006Intel is a trademark or registered trademark of Intel Corporation or its
michaelx_krau561e4a72006-07-13 18:37:28 +00007subsidiaries in the United States and other countries.
8* Other names and brands may be claimed as the property of others.
vanjeff6e4c64c2007-06-20 05:35:00 +00009Copyright (c) 2006 - 2007, Intel Corporation
lhauchaa0bf4f2006-04-26 17:54:57 +000010
vanjeff6e4c64c2007-06-20 05:35:00 +000011This document provides updates to documentation, along with a description on
yshi8362271d2006-07-06 10:42:42 +000012how to install and build the EDK II.
lhauchaa0bf4f2006-04-26 17:54:57 +000013
14Package Contents
15----------------
hche10x3d4bdea2006-11-08 09:14:20 +000016 BuildNotes.txt - The build notes for this package.
vanjeff6e4c64c2007-06-20 05:35:00 +000017 OldMdePkg - Industry-standard headers and libraries
18 Tools - Build -specific tools that are designed to help the
michaelx_krau561e4a72006-07-13 18:37:28 +000019 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
bbahnsenc9b1cad2007-01-07 20:05:59 +000024 EdkUnixPkg - Posix/Unix Emulation platform reference (Currently this
25 builds only on ia32 Linux, but is meant to be portable.)
lhauchaa0bf4f2006-04-26 17:54:57 +000026
vanjeff6e4c64c2007-06-20 05:35:00 +000027Note: MDE and MDK that appear in other documentation refer to the OldMdePkg and
28Tools packages, respectively. While, these two packages are the minimum
29requirement for developing EDK II Packages we recommend that you download all
michaelx_krau561e4a72006-07-13 18:37:28 +000030of the top-level files listed above.
lhauchaa0bf4f2006-04-26 17:54:57 +000031
vanjeff6e4c64c2007-06-20 05:35:00 +000032The following package is available as a separate project, under a separate
michaelx_krau561e4a72006-07-13 18:37:28 +000033license, on the TianoCore.org website: https://fat-driver2.tianocore.org
lhauchc6c00392006-07-13 01:45:03 +000034
35 EdkFatPkg - A package containing source DXE drivers for the Fat 32 file
36 system
37
vanjeff6e4c64c2007-06-20 05:35:00 +000038Documents have the following filenames (to download these documents, see “Notes
hche10xb440dd82006-11-08 06:12:54 +000039on Documentation?later in these Release Notes):
vanjeff6e4c64c2007-06-20 05:35:00 +000040 EDK II Module Development Environment Library Specification, v0.58
michaelx_krau561e4a72006-07-13 18:37:28 +000041 (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
lhauchaa0bf4f2006-04-26 17:54:57 +000047 (Module_Surface_Area_0_50.rtf)
michaelx_krau561e4a72006-07-13 18:37:28 +000048 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_kraudcfa7b12006-07-12 20:39:54 +000052 EDK II Subversion Setup Guide
53 (edk2-subversion-setup.rtf)
lhauchaa0bf4f2006-04-26 17:54:57 +000054
55Pre-Requisites
56--------------
57The following list of tools must be installed on the development workstation
michaelx_krau561e4a72006-07-13 18:37:28 +000058prior to using the EDK II.
lhauchaa0bf4f2006-04-26 17:54:57 +000059
60Compiler Tool Chain
61 Microsoft* Visual Studio .NET 2003* (http://www.microsoft.com)
62 or
bbahnsen43475442006-06-07 00:21:44 +000063 A special GCC version 4.x or later (http://gcc.gnu.org). See below.
lhauchaa0bf4f2006-04-26 17:54:57 +000064
65Assembler Tool Chain
66 Microsoft Macro Assembler, version 6.15 or later
67 or
bbahnsen8fb9e6b2006-05-03 22:45:39 +000068 GNU binutils 2.16.1 or later
hche10xb440dd82006-11-08 06:12:54 +000069 (Http://ftp.gnu.org/gnu/binutils)
lhauchaa0bf4f2006-04-26 17:54:57 +000070
71Java Development Kit ( Java 5.0 or later)
hche10xef6e2ef2006-07-13 12:13:23 +000072 Sun* jdk-1.5.0_06 or later (http://java.sun.com)
lhauchaa0bf4f2006-04-26 17:54:57 +000073 or
74 Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)
75
76Java Tools
77 Apache-ANT, version 1.6.5 or later (http://ant.apache.org)
bbahnsen50518882006-05-03 18:10:56 +000078 Ant-contrib, version 1.0b2 or later
yshi8782eb162006-07-07 09:38:58 +000079 (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download)
lhauchaa0bf4f2006-04-26 17:54:57 +000080 Saxon8, version 8.1.1
81 (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)
yshi8782eb162006-07-07 09:38:58 +000082 XMLBeans, version 2.1.0 (http://xmlbeans.apache.org)
vanjeff6e4c64c2007-06-20 05:35:00 +000083 DO NOT download the latest XMLBeans, version 2.2.0. It is not compatible
michaelx_krau561e4a72006-07-13 18:37:28 +000084 with Saxon8, version 8.1.1.
lhauchaa0bf4f2006-04-26 17:54:57 +000085
86Other Tools
87 TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)
88
89Optional Tools
90--------------
91Compiler Tool Chains:
michaelx_krau561e4a72006-07-13 18:37:28 +000092 Intel(R) C++ Compiler for Windows*, ver. 9.0 or later (http://www.intel.com)
vanjeff6e4c64c2007-06-20 05:35:00 +000093 Intel(R) C Compiler for EFI Byte Code, ver. 1.2 or later
bbahnsen8fb9e6b2006-05-03 22:45:39 +000094 (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)
lhauchaa0bf4f2006-04-26 17:54:57 +000095 Microsoft Driver Development Kit, version 3790.1830 or later
bbahnsen8fb9e6b2006-05-03 22:45:39 +000096 (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)
lhauchaa0bf4f2006-04-26 17:54:57 +000097 Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later
98 Intel ACPI Component Architecture, version 20060113
99
bbahnsenba6930b2007-01-04 23:56:55 +0000100Python
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_krau561e4a72006-07-13 18:37:28 +0000119-----------------------------------------------
120Notes on Required Tools (Source Control System)
121-----------------------------------------------
michaelx_krau13421852006-07-05 20:41:25 +0000122The EDK II is being managed by the Subversion Source Control on Tianocore.org.
michaelx_krau561e4a72006-07-13 18:37:28 +0000123Subversion provides speed, security, and additional features. The
vanjeff6e4c64c2007-06-20 05:35:00 +0000124recommended client is TortoiseSVN version 1.3.3.
lhauchaa0bf4f2006-04-26 17:54:57 +0000125 (Available at http://tortoisesvn.tigris.org/)
126
michaelx_krau561e4a72006-07-13 18:37:28 +0000127The checkout procedures on the Tianocore.org Web site include
128instructions for the use of Subversion Source Control.
lhauchaa0bf4f2006-04-26 17:54:57 +0000129
michaelx_krau13421852006-07-05 20:41:25 +0000130The URL of the EDK II repository is:
lhauchaa0bf4f2006-04-26 17:54:57 +0000131 https://edk2.tianocore.org/svn/edk2/trunk/edk2
132
lhauchaa0bf4f2006-04-26 17:54:57 +0000133
michaelx_krau561e4a72006-07-13 18:37:28 +0000134--------------------------------------------------------------------
vanjeff6e4c64c2007-06-20 05:35:00 +0000135Notes On Required Tools (With examples for Windows, OS X, and Linux*)
michaelx_krau561e4a72006-07-13 18:37:28 +0000136--------------------------------------------------------------------
lhauchaa0bf4f2006-04-26 17:54:57 +0000137Software Installation Order:
vanjeff6e4c64c2007-06-20 05:35:00 +0000138 After installing the compiler tools and your Subversion client, install the
139 following required tools in this order:
michaelx_krau561e4a72006-07-13 18:37:28 +0000140 1. Java JDK
141 2. Apache-Ant
142 3. ant-contrib
143 4. xmlbeans
144 5. saxon8
lhauchaa0bf4f2006-04-26 17:54:57 +0000145
146Java Development Kit:
vanjeff6e4c64c2007-06-20 05:35:00 +0000147
lhauchaa0bf4f2006-04-26 17:54:57 +0000148 The Java Environment Variable must be set before attempting to build.
hche10xb440dd82006-11-08 06:12:54 +0000149 For Sun JDK (see note below?:
bbahnsen61324292006-07-07 23:39:10 +0000150 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:
yshi8782eb162006-07-07 09:38:58 +0000154 set JAVA_HOME=c:\Java\jrockit-R26.0.0-jdk1.5.0_04
vanjeff6e4c64c2007-06-20 05:35:00 +0000155
hche10xb440dd82006-11-08 06:12:54 +0000156 ?When using the Sun JDK5.0:
lhauchaa0bf4f2006-04-26 17:54:57 +0000157 During installation, you should specify the install directory as C:\Java
158 instead of C:\Program Files\(or some other drive letter.) While installing
vanjeff6e4c64c2007-06-20 05:35:00 +0000159 to this non-standard location is not required, in practice, it seems to work
160 more reliably.
michaelx_krau561e4a72006-07-13 18:37:28 +0000161 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
lhauchaa0bf4f2006-04-26 17:54:57 +0000163 Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.
lhauch01d2ed52006-04-27 15:09:06 +0000164
vanjeff6e4c64c2007-06-20 05:35:00 +0000165 NOTE: You cannot combine the location for the JDK and the JRE, because the
michaelx_krau561e4a72006-07-13 18:37:28 +0000166 JRE install removes most of the binaries and libraries installed by the JDK
lhauchaa0bf4f2006-04-26 17:54:57 +0000167 install.
168
169Java Tools:
170 The Apache-ANT requires the ANT_HOME environment variable to be set before
171 attempting to build:
michaelx_krau561e4a72006-07-13 18:37:28 +0000172 set ANT_HOME=c:\<full path to where ant was installed>
bbahnsen61324292006-07-07 23:39:10 +0000173 export ANT_HOME=~/ExternalTools/apache-ant (OS X and Linux example)
lhauchaa0bf4f2006-04-26 17:54:57 +0000174
vanjeff6e4c64c2007-06-20 05:35:00 +0000175 The ant-contrib.jar file should be installed in the %ANT_HOME%\lib
lhauchaa0bf4f2006-04-26 17:54:57 +0000176 directory.
177
michaelx_krau561e4a72006-07-13 18:37:28 +0000178 XMLBeans, requires the XMLBEANS_HOME environment variable to be set
lhauchaa0bf4f2006-04-26 17:54:57 +0000179 before attempting to build:
michaelx_krau561e4a72006-07-13 18:37:28 +0000180 set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>
bbahnsen61324292006-07-07 23:39:10 +0000181 export XMLBEANS_HOME=~/ExternalTools/xmlbeans (OS X and Linux example)
lhauchaa0bf4f2006-04-26 17:54:57 +0000182
michaelx_krau561e4a72006-07-13 18:37:28 +0000183 Copy the saxon8.jar file to the %XMLBEANS_HOME%\lib directory.
lhauchaa0bf4f2006-04-26 17:54:57 +0000184
michaelx_krau561e4a72006-07-13 18:37:28 +0000185 The Ant and XMLBean tools must be in the path.
lhauchaa0bf4f2006-04-26 17:54:57 +0000186 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_kraudcfa7b12006-07-12 20:39:54 +0000190
191--------------------
192A Word on Apache-ANT
193--------------------
194The Apache-ANT program is a build tool that uses XML-based project files.
195Similar to Makefiles, these project files may contain multiple targets. Most
196build.xml files in EDK II are auto-generated; any edits performed on the
michaelx_krau561e4a72006-07-13 18:37:28 +0000197build.xml files will be overwritten by the next build.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000198
199Pre-defined targets in the build.xml file include:
michaelx_krau561e4a72006-07-13 18:37:28 +0000200 all - This target builds binaries for defined architectures.
201 clean - This target removes object files generated by commands.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000202 cleanall - This target removes all generated files and directories.
203
lhauchd0d0be52007-01-25 18:33:21 +0000204Use the ANT option, -emacs, to remove the [cc] characters when an error occurs
205to provide a method for the Visual Studio IDE to open a file by double
206clicking the mouse on the file. Add -emacs to the end of the build command.
michaelx_krau561e4a72006-07-13 18:37:28 +0000207----------------------------
208A Word on the GCC Tool Chain
209----------------------------
bbahnsen7fe8ec42006-10-05 16:37:34 +0000210
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000211EDK II will not compile with a standard Linux gcc tool chain. While Linux
bbahnsen7fe8ec42006-10-05 16:37:34 +0000212distributions are usually based on ELF, EDK II requires a version of gcc that
213is configured to produce PE-COFF images. You will find a script in <Root of
214EDK2 tree>/Tools/gcc/tianoCross-gcc-4.1 that will download, configure, compile,
215and install a gcc 4.1 cross-compile tool chain for EDK II development. This
216custom tool chain supports the IA-32 architecture. It can be built and run on
217Cygwin, Linux, and many other POSIX-compliant host operating environments. To
218compile the custom gcc tool chain, you need the following tools on your host
219computer: bash, gcc, gmake, curl (or wget).
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000220
vanjeff6e4c64c2007-06-20 05:35:00 +0000221Only the OldMdePkg, EdkModulePkg and EdkUnixPkg are currently supported by gcc
bbahnsenc9b1cad2007-01-07 20:05:59 +0000222builds. Other builds, such as the EdkNt32Pkg, will not compile with gcc. By
223default, the edk2 will try to build the NT32.fpd, which is not supported by
224gcc. So, you need to change the Tools/Conf/target.txt.
bbahnsenaf9a0f82006-07-27 15:55:59 +0000225
bbahnsen7fe8ec42006-10-05 16:37:34 +0000226The cross-compile build script has been tested on Cygwin, OS X and Linux. You
227should expect to hack on these scripts to make them work on your system. You
228may need to install additional tools on your system to make the scripts work.
229
230You 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
242CYGWIN Notes
243
244You should setup cygwin to use binmode on all mounts. When you initially
245install cygwin it gives you the choice of Unix file mode (recommended) or DOS
246file mode. Unix mode will cause all the cygwin directories to be mounted in
247binmode, while DOS will mount the dirs in textmode. Here is an example of a
248cygwin install where the dirs are (properly) mounted in binmode.
vanjeff6e4c64c2007-06-20 05:35:00 +0000249To view mount information, type:
lhauch1095e1f2006-10-18 18:41:52 +0000250 mount
bbahnsen7fe8ec42006-10-05 16:37:34 +0000251
252C:\cygwin\bin on /usr/bin type user (binmode)
253C:\cygwin\lib on /usr/lib type user (binmode)
254c:\workspace on /workspace type system (binmode)
255C:\cygwin on / type user (binmode)
256
257If you use textmode, it is likely that the build will fail in a way that is
lhauch1095e1f2006-10-18 18:41:52 +0000258hard to debug. Textmode is required to retain or add the DOS ^M characters
259in DOS batch files during file editing sessions.
260
vanjeff6e4c64c2007-06-20 05:35:00 +0000261You can switch from textmode to binmode for compilation by executing the
lhauch1095e1f2006-10-18 18:41:52 +0000262following:
263 mount -b --change-cygdrive-prefix cygdrive
bbahnsen7fe8ec42006-10-05 16:37:34 +0000264
265Cygwin is pretty slow, so it is not recommended for large builds.
266
267
268
269
270
bbahnsenaf9a0f82006-07-27 15:55:59 +0000271The platform to be built is identified by the Tools/Conf/target.txt file:
272
273#
274# PROPERTY Type Use Description
275# ---------------- -------- -------- -----------------------------------------------------------
vanjeff6e4c64c2007-06-20 05:35:00 +0000276# ACTIVE_PLATFORM Filename Recommended Specify the WORKSPACE relative Path and Filename
bbahnsenaf9a0f82006-07-27 15:55:59 +0000277# 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
281ACTIVE_PLATFORM =
vanjeff6e4c64c2007-06-20 05:35:00 +0000282
bbahnsenaf9a0f82006-07-27 15:55:59 +0000283You can leave it black, as above, or set it to any .fpd file in the workspace.
284If you leave it blank, then you just cd to the dir that contains the .fpd that
vanjeff6e4c64c2007-06-20 05:35:00 +0000285you would like to build (OldMdePkg/ or EdkModulePkg/) and then type build.
bbahnsen6329bec2006-07-25 22:08:33 +0000286
287----------------------------
288A Word on compiling on Linux
289----------------------------
290
hche10xb440dd82006-11-08 06:12:54 +0000291In order to compile on Linux, you will need to have the e2fsprogs-devel package
bbahnsen6329bec2006-07-25 22:08:33 +0000292installed. Check your distribution for the rpm, deb or other package format.
293This package contains the uuid library and header that are used by some of the
294host tools.
295
296If you are running on x86_64 Linux, then you should install a 64 bit version of
297the Java JDK. The version that was used was jdk-1_5_0_07-linux-amd64-rpm.bin.
298It may be downloaded from sun.com.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000299
bbahnsen0a754282006-07-26 18:31:53 +0000300-----------------------------------------
301A Word on compiling under Cygwin with gcc
302-----------------------------------------
303
304Cygwin is a POSIX style operating environment for Windows. It is possible to
vanjeff6e4c64c2007-06-20 05:35:00 +0000305compile the EDK 2 using gcc and cygwin. Compiling under cygwin is slow, because
306the underlying file accesses are slow in cygwin. For this reason, we do not
307encourage the use of cygwin. A true unix system will be a superior choice for
qouyang6f02e332006-08-08 06:21:04 +0000308those wishing to compile with gcc.
bbahnsen0a754282006-07-26 18:31:53 +0000309
310Make sure that you select the e2fsprogs development package when you install
311cygwin. It is necessary for the GenFvImage tool.
312
michaelx_krauea5254e2006-08-01 20:18:19 +0000313----------------------------------------
314A Word on gcc for Processor Architectures
315----------------------------------------
316
vanjeff6e4c64c2007-06-20 05:35:00 +0000317Currently gcc support is limited to IA-32 builds, generating IA-32 PE32 images.
michaelx_krauea5254e2006-08-01 20:18:19 +0000318
vanjeff6e4c64c2007-06-20 05:35:00 +0000319The X64 bit (Intel 64, etc.) support under the gcc compiler does not support the EFIAPI
320calling convention (as defined in the UEFI 2.0 specification Chapter 2), so it is not
321possible to build a working EFI image for an X64 environment. Since the x64 gcc does
322not support the EFIAPI calling convention the x64 tools do not support generating a
323PE32+ image. The EFIAPI calling convention is very similar to the Microsoft x64
qouyang6f02e332006-08-08 06:21:04 +0000324calling convention.
michaelx_krauea5254e2006-08-01 20:18:19 +0000325
bbahnsenc9b1cad2007-01-07 20:05:59 +0000326We have added prelinary support for the MinGW64 Tool chain. This gcc tool
327chain is ported to follow the Microsft X64 ABI, and therefore is compatible
328with the EFI specification.
329
hche10xb440dd82006-11-08 06:12:54 +0000330On Itanium?Processors the gcc compiler does not support generating a PE32+ image.
michaelx_krauea5254e2006-08-01 20:18:19 +0000331
bbahnsenc9b1cad2007-01-07 20:05:59 +0000332----------------------------------------
333A Word on EdkUnixPkg -- The Unix simulator
334----------------------------------------
335
336A unix port of the Nt32 simulator has been added to the project. It currently
337builds and runs on 32 bit Linux, but should be portable to other Unix
338variants. In order to build it, you should use the ELFGCC tool chain defintion
339in tools_def.txt, which is set in target.txt. These are two settings to make
340in Tools/Conf/target.txt:
341
342ACTIVE_PLATFORM = EdkUnixPkg/Unix.fpd
343TOOL_CHAIN_TAG = ELFGCC
344
345Once that is setup, type build, and then you will end up with the simulator in
vanjeff6e4c64c2007-06-20 05:35:00 +0000346Build/Unix/DEBUG_ELFGCC/IA32/SecMain.exe.
bbahnsenc9b1cad2007-01-07 20:05:59 +0000347
348In order to use the gdb debugger with the simulator, you may need to load the
349correct symbol file for the various modules that are loaded. For example,
350
351add-symbol-file EdkModulePkg/Bus/Pci/PciBus/Dxe/PciBus/DEBUG/./PciBus.dll
3520x45dc6000
353
354You can see the names of the symbol files (they are in ELF format even though
355the extension is .dll) printed on the screen as the simulator comes up.
356
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000357-----------------------
michaelx_krau561e4a72006-07-13 18:37:28 +0000358Notes on Documentation
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000359-----------------------
360The documents are being managed by the Subversion Source Control on
361Tianocore.org. The document repository is "docs" and must be checked out
362separately from the EDK II source tree. Refer to the checkout procedures on
michaelx_krau561e4a72006-07-13 18:37:28 +0000363the Tianocore.org Web site for EDK II.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000364
365The URL of the document repository is:
366 https://edk2.tianocore.org/svn/edk2/trunk/docs
367
vanjeff6e4c64c2007-06-20 05:35:00 +0000368
lhauchaa0bf4f2006-04-26 17:54:57 +0000369-------------------------------------------------------------------------------
michaelx_krau561e4a72006-07-13 18:37:28 +0000370Quick Start
lhauchaa0bf4f2006-04-26 17:54:57 +0000371-----------
vanjeff6e4c64c2007-06-20 05:35:00 +0000372(assumes Microsoft Tools and OS environment, for GCC Tools or Linux, see
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000373"Detailed Starting Instructions" below)
374
375Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
michaelx_krau561e4a72006-07-13 18:37:28 +0000376check out the entire EDK II source tree.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000377
michaelx_krau561e4a72006-07-13 18:37:28 +0000378In a command window, change to the top-level directory of the EDK II source.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000379
michaelx_krau561e4a72006-07-13 18:37:28 +0000380To test your tool chain setup and to build the supplied tools, execute:
lhauch80d1b382006-08-07 22:17:13 +0000381 c:\MyWork\edk2\> edksetup ForceRebuild
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000382
vanjeff6e4c64c2007-06-20 05:35:00 +0000383(The edksetup script is referred to as the setup command throughout the
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000384rest 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
389You will need to set the WORKSPACE environment variable, or run the edksetup
michaelx_krau561e4a72006-07-13 18:37:28 +0000390script (without any arguments), any time you want to build.
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000391
392 Set the WORKSPACE environment variable, e.g.:
393
lhauch80d1b382006-08-07 22:17:13 +0000394 c:\> set WORKSPACE=C:\MyWork\edk2
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000395
michaelx_krau561e4a72006-07-13 18:37:28 +0000396You may need to edit the text files Tools/Conf/target.txt and
vanjeff6e4c64c2007-06-20 05:35:00 +0000397Tools/Conf/tools_def.txt (created by edksetup) using your favorite
398text editor to ensure that the paths to the tools you want to use
399to build EDK II binaries are correct. These files contain the default
400paths (as per the default installation of the tools), so a customized
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000401install may require this manual process.
402
michaelx_krau561e4a72006-07-13 18:37:28 +0000403Once this is completed, you are ready to test the build, by executing:
lhauch80d1b382006-08-07 22:17:13 +0000404 c:\MyWork\edk2\> build
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000405
vanjeff6e4c64c2007-06-20 05:35:00 +0000406This command builds the active platform specified in text file target.txt. If
407the active platform is not specified target.txt, you must execute the build
408command from the sub-directory that contains FPD files. For more information
409about the active platform policy, see the “EDK II Build and Packaging
bbahnsenba6930b2007-01-04 23:56:55 +0000410Architecture Specification.?
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000411
412-------------------------------------------------------------------------------
michaelx_krau561e4a72006-07-13 18:37:28 +0000413Detailed Starting Instructions
414------------------------------
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000415
lhauchaa0bf4f2006-04-26 17:54:57 +0000416Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
michaelx_krau561e4a72006-07-13 18:37:28 +0000417check out the entire EDK II source tree.
lhauchaa0bf4f2006-04-26 17:54:57 +0000418
michaelx_krau561e4a72006-07-13 18:37:28 +0000419In a command window, change to the top-level directory of the EDK II source.
lhauchaa0bf4f2006-04-26 17:54:57 +0000420
lhauch65a1d8a2006-07-12 06:40:42 +0000421If the active compiler tool chain is GCC, you must set the
422environment variable, TOOL_CHAIN to "gcc" before running the
423edksetup script. Example: export TOOL_CHAIN=gcc
lhauchaa0bf4f2006-04-26 17:54:57 +0000424
michaelx_krau561e4a72006-07-13 18:37:28 +0000425To test your tool chain setup and to build the supplied tools, execute:
lhauch80d1b382006-08-07 22:17:13 +0000426 c:\MyWork\edk2\> edksetup ForceRebuild
lhauchaa0bf4f2006-04-26 17:54:57 +0000427
michaelx_krau561e4a72006-07-13 18:37:28 +0000428On Linux systems, you must source the edksetup.sh file to load the correct
bbahnsen61324292006-07-07 23:39:10 +0000429settings into your shell.
430
431 . edksetup.sh # Note the dot.
432
bbahnsena5760d02006-07-27 22:02:59 +0000433If you have recently updated your code from subversion, the tools will need to
434be rebuilt if there were any code changes made to them. You can request that
435the tools get rebuilt by typing:
436
437 . edksetup.sh Rebuild # Unix-like systems
438 edksetup.bat Rebuild # Windows
439
vanjeff6e4c64c2007-06-20 05:35:00 +0000440The edksetup script is referred to as the setup command throughout the
michaelx_krau561e4a72006-07-13 18:37:28 +0000441rest of this document.
vanjeff6e4c64c2007-06-20 05:35:00 +0000442 NOTE: You should run the setup command (edksetup)at the start of every
443 session. This configures the environment to include the
hche10xb440dd82006-11-08 06:12:54 +0000444 TianoTools and the Java applications and libraries.
lhauchaa0bf4f2006-04-26 17:54:57 +0000445
michaelx_krau561e4a72006-07-13 18:37:28 +0000446Any changes to the tool source code or XML Schema documents require that
447you execute the following:
lhauch80d1b382006-08-07 22:17:13 +0000448 c:\MyWork\edk2\> edksetup ForceRebuild
lhauch65a1d8a2006-07-12 06:40:42 +0000449
michaelx_krau561e4a72006-07-13 18:37:28 +0000450You must set the WORKSPACE environment variable, or run the edksetup
451script (without any arguments), any time you want to build.
lhauch65a1d8a2006-07-12 06:40:42 +0000452
453 Set the WORKSPACE environment variable, e.g.:
454
lhauch80d1b382006-08-07 22:17:13 +0000455 c:\> set WORKSPACE=C:\MyWork\edk2
lhauch65a1d8a2006-07-12 06:40:42 +0000456
michaelx_krau561e4a72006-07-13 18:37:28 +0000457You may need to edit the text files Tools/Conf/target.txt and
vanjeff6e4c64c2007-06-20 05:35:00 +0000458Tools/Conf/tools_def.txt (created by edksetup) using your favorite
459text editor to ensure that the paths to the tools you want to use
460to build EDK II binaries are correct. These files contain the default
461paths (as per the default installation of the tools), so a customized
michaelx_kraudcfa7b12006-07-12 20:39:54 +0000462tool installation may require this manual process.
lhaucha032fb42006-07-06 14:13:56 +0000463
michaelx_krau561e4a72006-07-13 18:37:28 +0000464Once this is completed, you are ready to test the build, by executing:
lhauch80d1b382006-08-07 22:17:13 +0000465 c:\MyWork\edk2\> build
lhauchaa0bf4f2006-04-26 17:54:57 +0000466
vanjeff6e4c64c2007-06-20 05:35:00 +0000467This command builds the active platform specified in text file target.txt. If
468the active platform is not specified, go to the sub-directory that contains FPD
469files and execute the build command. For more information about the active
470platform policy, see the “EDK II Build and Packaging Architecture
bbahnsenba6930b2007-01-04 23:56:55 +0000471Specification.?
bbahnsen90f7b6a2006-06-22 23:19:41 +0000472
michaelx_krau561e4a72006-07-13 18:37:28 +0000473--------------------------
wuyizhonge3f236c2006-07-06 07:22:25 +0000474Individual Platform Builds
michaelx_krau561e4a72006-07-13 18:37:28 +0000475--------------------------
wuyizhonge3f236c2006-07-06 07:22:25 +0000476After running the setup command, you can build individual platforms.
michaelx_krau561e4a72006-07-13 18:37:28 +0000477In the command window:
478 Set the active platform in target.txt, and execute this command:
479 c:\<directory>\> build
480or
481 cd to the platform (FPD file) that you want to build and execute this command:
lhauch80d1b382006-08-07 22:17:13 +0000482 c:\MyWork\edk2\EdkNt32Pkg\> build
lhauchaa0bf4f2006-04-26 17:54:57 +0000483
vanjeff6e4c64c2007-06-20 05:35:00 +0000484 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_krau561e4a72006-07-13 18:37:28 +0000486 about active platform policy, see the “EDK II Build and Packaging Architecture
hche10xb440dd82006-11-08 06:12:54 +0000487 Specification.?
wuyizhonge3f236c2006-07-06 07:22:25 +0000488
vanjeff6e4c64c2007-06-20 05:35:00 +0000489To run the Nt32 emulation platform under Microsoft Windows, go to
lhauch70edbc32006-07-14 06:46:15 +0000490<full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe
lhauchaa0bf4f2006-04-26 17:54:57 +0000491
hche10xb440dd82006-11-08 06:12:54 +0000492To exit the Nt32 emulation platform, type “reset?at the EFI Shell>
michaelx_krau561e4a72006-07-13 18:37:28 +0000493command prompt. Alternatively, from the graphical interface, select the Boot
hche10xb440dd82006-11-08 06:12:54 +0000494Maintenance Manager's “Reset System?command.
michaelx_krau561e4a72006-07-13 18:37:28 +0000495
michaelx_krau020fa452006-07-18 16:31:13 +0000496 NOTE: When creating a new platform, the Platform Name is restricted
vanjeff6e4c64c2007-06-20 05:35:00 +0000497 to a single word containing alphanumeric characters, underscore, dash,
498 and period. The space character and other special characters are
michaelx_krau020fa452006-07-18 16:31:13 +0000499 not allowed.
lhauch70edbc32006-07-14 06:46:15 +0000500
michaelx_krau561e4a72006-07-13 18:37:28 +0000501-----------------------
502Notes on Symbolic Debug
503-----------------------
504To enable EFI Symbolic Debugging, make sure the target output is set to DEBUG
505in the text file Tools/Conf/target.txt and then modify the FPD <BuildOptions>
506<Options><Option BuildTargets="DEBUG" ToolCode="CC"> and append the following
507compiler 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
511option as well.)
lhauch03fed932006-05-24 19:51:36 +0000512
lhauchaa0bf4f2006-04-26 17:54:57 +0000513------------------------
514Individual Module Builds
515------------------------
516After running the setup command, you can build individual modules.
michaelx_krau561e4a72006-07-13 18:37:28 +0000517 In the command window, cd to the module that you want to build, and
518 execute the build command:
vanjeff6e4c64c2007-06-20 05:35:00 +0000519 c:\MyWork\edk2\OldMdePkg\Library\BaseLib\> build
wuyizhonge3f236c2006-07-06 07:22:25 +0000520
vanjeff6e4c64c2007-06-20 05:35:00 +0000521 You must set the active platform in target.txt for individual module builds.
lhauchaa0bf4f2006-04-26 17:54:57 +0000522
523-------------------------------------------------------------------------------
lhauchaa0bf4f2006-04-26 17:54:57 +0000524
525General Information:
vanjeff6e4c64c2007-06-20 05:35:00 +0000526===============================================================
michaelx_krau561e4a72006-07-13 18:37:28 +0000527Mechanisms
lhauchaa0bf4f2006-04-26 17:54:57 +0000528----------
bbahnsen8fb9e6b2006-05-03 22:45:39 +0000529A brief overview:
lhauchaa0bf4f2006-04-26 17:54:57 +0000530
vanjeff6e4c64c2007-06-20 05:35:00 +0000531A) The Surface Area Package Description (SPD) file contains information about
532the modules that the package contains, including the location of all MSA files,
michaelx_krau561e4a72006-07-13 18:37:28 +0000533and public library names and headers that might be provided by a module in the
lhauchaa0bf4f2006-04-26 17:54:57 +0000534package. Packages are defined by SPD files. (Found in the root of the Package
vanjeff6e4c64c2007-06-20 05:35:00 +0000535subdirectory (i.e. EdkNt32Pkg).) The SPD file is further explained in “EDK II
bbahnsenba6930b2007-01-04 23:56:55 +0000536Build and Packaging Architecture Specification.?
vanjeff6e4c64c2007-06-20 05:35:00 +0000537
538B) Module Surface Area Definition (MSA) files. A description of a module's
lhauchaa0bf4f2006-04-26 17:54:57 +0000539surface area, with all module specific default flags and features specified.
vanjeff6e4c64c2007-06-20 05:35:00 +0000540For additional details, see the "EDK II Module Surface Area Specification" and
michaelx_krau561e4a72006-07-13 18:37:28 +0000541the "EDK II Build and Packaging Architecture Specification."
lhaucha032fb42006-07-06 14:13:56 +0000542
543C) Framework Platform Description (FPD) files. A description of a platform's
544surface are, including a list of modules that are needed by the platform. To
545support individual module builds, developers are not required to provide
vanjeff6e4c64c2007-06-20 05:35:00 +0000546information about specific flash devices, nor flash device layout.
547Specific sections in the FPD file control aspects of the build, such
548as the Supported Architectures and Build Targets, as well as the tool flags
549that are used to create the binary files. A valid platform file can specify
lhaucha032fb42006-07-06 14:13:56 +0000550zero or more modules, so individual modules can be compiled within the context
551of a platform (FPD) definition.
552
michaelx_krau561e4a72006-07-13 18:37:28 +0000553D) Platform Configuration Database (PCD). A platform database that contains a
vanjeff6e4c64c2007-06-20 05:35:00 +0000554variety of current platform settings or directives that can be accessed by a
michaelx_krau561e4a72006-07-13 18:37:28 +0000555driver or application. The PCD is defined by the PCD_Protocol (This is
vanjeff6e4c64c2007-06-20 05:35:00 +0000556further explained in the "EDK II Platform Configuration Database Infrastructure
michaelx_krau561e4a72006-07-13 18:37:28 +0000557Description."
lhauchaa0bf4f2006-04-26 17:54:57 +0000558
lhaucha032fb42006-07-06 14:13:56 +0000559E) Library Class. A library class is a logical grouping of similar functions.
lhauchaa0bf4f2006-04-26 17:54:57 +0000560When developing components, the module surface area declares the class of
lhaucha032fb42006-07-06 14:13:56 +0000561libraries that can be used by the component. The MSA and SPD files can specify
vanjeff6e4c64c2007-06-20 05:35:00 +0000562a recommended instance of the library that a platform integrator (PI) may
563select, however this is only a recommendation. The PI may choose to select a
564different library instance to be used during compilation and linking. All
565library type modules must include header files in their distribution package,
566as well as their MSA files. Components, on the other hand, need provide only an
567MSA file and either source or binary files when distributing packages. The
568Library Classes are further explained in the "EDK II Build and Packaging
michaelx_krau561e4a72006-07-13 18:37:28 +0000569Architecture Specification."
lhauchaa0bf4f2006-04-26 17:54:57 +0000570
571=========================================================================
572The common operations by developers of new modules are:
michaelx_krau561e4a72006-07-13 18:37:28 +0000573-----------------------------------------------
5741) Manually creating a new module in a package:
lhauchaa0bf4f2006-04-26 17:54:57 +0000575 - The module source code must first be created in an appropriate directory
vanjeff6e4c64c2007-06-20 05:35:00 +0000576 (under the package the module is to be a part of.)
lhauchaa0bf4f2006-04-26 17:54:57 +0000577 - 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_krau561e4a72006-07-13 18:37:28 +0000580-----------------------------------------------------
5812) Adding and Removing modules to and from a package:
lhauchaa0bf4f2006-04-26 17:54:57 +0000582
michaelx_krau561e4a72006-07-13 18:37:28 +0000583 - 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
vanjeff6e4c64c2007-06-20 05:35:00 +0000589 <PackageDir>\<PackageName>.fpd file if necessary.
lhauchaa0bf4f2006-04-26 17:54:57 +0000590
michaelx_krau561e4a72006-07-13 18:37:28 +0000591 - Removing a module from a package:
vanjeff6e4c64c2007-06-20 05:35:00 +0000592 - Comment out or remove the corresponding <Filename> element under
michaelx_krau561e4a72006-07-13 18:37:28 +0000593 <MsaFiles> from <PackageDir>\<PackageName>.spd
594 - Comment out or remove the corresponding <ModuleSA> entry under each
vanjeff6e4c64c2007-06-20 05:35:00 +0000595 <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary.
lhauchaa0bf4f2006-04-26 17:54:57 +0000596
michaelx_krau561e4a72006-07-13 18:37:28 +0000597-------------------------------
5983) Manually creating a package:
lhauchaa0bf4f2006-04-26 17:54:57 +0000599 - 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_krau561e4a72006-07-13 18:37:28 +0000601 consumption and production information).
lhauchaa0bf4f2006-04-26 17:54:57 +0000602 - Create an SPD file defining these modules and calling out their MSA files.
vanjeff6e4c64c2007-06-20 05:35:00 +0000603 - Add a new <Filename> element under <PackageList> into
604 Tools\Conf\FrameworkDatabase.db, using the relative path to the workspace.
lhauchaa0bf4f2006-04-26 17:54:57 +0000605
michaelx_krau561e4a72006-07-13 18:37:28 +0000606-----------------------------------------
vanjeff6e4c64c2007-06-20 05:35:00 +00006074) Declaring a new Protocol in a package:
lhauchaa0bf4f2006-04-26 17:54:57 +0000608 - This release requires manual editing of the SPD file, adding the protocol
vanjeff6e4c64c2007-06-20 05:35:00 +0000609 to the ProtocolDeclarations section of the file.
lhauchaa0bf4f2006-04-26 17:54:57 +0000610 - Add the Protocol .h file to the Include\Protocol directory.
vanjeff6e4c64c2007-06-20 05:35:00 +0000611 - Add an <Entry> to the <ProtocolDeclarations> element in the
lhauch64fcaea2006-04-27 22:47:57 +0000612 <PackageName>.spd file
vanjeff6e4c64c2007-06-20 05:35:00 +0000613 - Each line contains Protocol base name, followed by the global variable
michaelx_krau561e4a72006-07-13 18:37:28 +0000614 name, and the hex value of the Protocol GUID.
lhauchaa0bf4f2006-04-26 17:54:57 +0000615
vanjeff6e4c64c2007-06-20 05:35:00 +0000616Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD
michaelx_krau561e4a72006-07-13 18:37:28 +0000617file):
lhauch64fcaea2006-04-27 22:47:57 +0000618<ProtocolDeclarations>
wuyizhonge3f236c2006-07-06 07:22:25 +0000619 <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>
lhauchaa0bf4f2006-04-26 17:54:57 +0000630
michaelx_krau561e4a72006-07-13 18:37:28 +0000631------------------------------------
6325) Declaring a new PPI in a package:
633 - This release requires manual editing of the SPD file
lhauchaa0bf4f2006-04-26 17:54:57 +0000634 - Add the PPI .h file to the Include\Ppi directory.
vanjeff6e4c64c2007-06-20 05:35:00 +0000635 - Add an <Entry> to the package <PpiDeclarations> element in the
lhauch64fcaea2006-04-27 22:47:57 +0000636 <PackageName>.spd file
vanjeff6e4c64c2007-06-20 05:35:00 +0000637 - Each line contains the PPI base name, followed by the global variable
michaelx_krau561e4a72006-07-13 18:37:28 +0000638 name and the hex value of the PPI GUID.
lhauchaa0bf4f2006-04-26 17:54:57 +0000639
lhauch64fcaea2006-04-27 22:47:57 +0000640Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):
641<PpiDeclarations>
wuyizhonge3f236c2006-07-06 07:22:25 +0000642 <Entry Name="BootInRecoveryMode">
643 <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>
644 <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>
645 <HelpText/>
lhauch64fcaea2006-04-27 22:47:57 +0000646 </Entry>
wuyizhonge3f236c2006-07-06 07:22:25 +0000647 <Entry Name="CpuIo">
648 <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>
649 <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>
650 <HelpText/>
lhauch64fcaea2006-04-27 22:47:57 +0000651 </Entry>
652</PpiDeclarations>
653
michaelx_krau561e4a72006-07-13 18:37:28 +0000654-------------------------------------
6556) Declaring a new GUID in a package:
lhauchaa0bf4f2006-04-26 17:54:57 +0000656 - This release requires manual editing of the SPD file to include the new
lhauch64fcaea2006-04-27 22:47:57 +0000657 Guid. This is identical to adding a ProtocolDeclaration or PpiDeclaration
michaelx_krau561e4a72006-07-13 18:37:28 +0000658 element, as described above.
lhauchaa0bf4f2006-04-26 17:54:57 +0000659
michaelx_krau561e4a72006-07-13 18:37:28 +0000660------------------------------------------
6617) Declaring a new PCD entry in a package:
lhauchaa0bf4f2006-04-26 17:54:57 +0000662 - This release requires manual editing of the SPD file to include the new
lhauch64fcaea2006-04-27 22:47:57 +0000663 PCD. New Pcd entries are added to the PcdDefinitions section of the
michaelx_krau561e4a72006-07-13 18:37:28 +0000664 <PackageName>.spd file using the following example for the format
665 (NOTE: The hex <Token> value must be unique):
lhauch64fcaea2006-04-27 22:47:57 +0000666
klu254c9f9e2006-07-07 06:19:08 +0000667<PcdDeclarations>
lhauch64fcaea2006-04-27 22:47:57 +0000668 <PcdEntry ItemType="FIXED_AT_BUILD">
669 <C_Name>PcdMaximumUnicodeStringLength</C_Name>
670 <Token>0x00000001</Token>
klu254c9f9e2006-07-07 06:19:08 +0000671 <TokenSpaceGuidCName>gEfiMdePkgTokenSpaceGuid</TokenSpaceGuidCName>
lhauch64fcaea2006-04-27 22:47:57 +0000672 <DatumType>UINT32</DatumType>
klu254c9f9e2006-07-07 06:19:08 +0000673 <ValidUsage>FIXED_AT_BUILD</ValidUsage>
lhauch64fcaea2006-04-27 22:47:57 +0000674 <DefaultValue>1000000</DefaultValue>
klu254c9f9e2006-07-07 06:19:08 +0000675 <HelpText>The maximum lengh for unicode string.</HelpText>
lhauch64fcaea2006-04-27 22:47:57 +0000676 </PcdEntry>
klu254c9f9e2006-07-07 06:19:08 +0000677</PcdDeclarations>
vanjeff6e4c64c2007-06-20 05:35:00 +0000678
lhauchaa0bf4f2006-04-26 17:54:57 +0000679------------------------------
michaelx_krau561e4a72006-07-13 18:37:28 +00006808) Declaring a new Library Class:
lhauchaa0bf4f2006-04-26 17:54:57 +0000681 - This release requires manual editing of the SPD file to include the new
vanjeff6e4c64c2007-06-20 05:35:00 +0000682 Library Class. New Library Class entries are added to the
michaelx_krau561e4a72006-07-13 18:37:28 +0000683 LibraryClassDeclarations section of the <PackageName>.spd file using
lhauch64fcaea2006-04-27 22:47:57 +0000684 the following example for the format:
685
686<LibraryClassDeclarations>
wuyizhonge3f236c2006-07-06 07:22:25 +0000687 <LibraryClass Name="BaseLib">
lhauch64fcaea2006-04-27 22:47:57 +0000688 <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>
wuyizhonge3f236c2006-07-06 07:22:25 +0000689 <HelpText/>
690 </LibraryClass>
691 <LibraryClass Name="BaseMemoryLib">
692 <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>
693 <HelpText/>
694 </LibraryClass>
lhauch64fcaea2006-04-27 22:47:57 +0000695</LibraryClassDeclarations>
lhauchaa0bf4f2006-04-26 17:54:57 +0000696
lhauchaa0bf4f2006-04-26 17:54:57 +0000697=======================================================
michaelx_krau561e4a72006-07-13 18:37:28 +0000698EDK II Changes Relative to the original EDK:
699--------------------------------------------
michaelx_krau13421852006-07-05 20:41:25 +0000700The EDK II represents significant changes in the structure of the EDK.
michaelx_krau561e4a72006-07-13 18:37:28 +0000701Therefore, it is very difficult to isolate all of the changes of this version of
702the EDK with the original EDK.
lhauchaa0bf4f2006-04-26 17:54:57 +0000703
704Of particular note:
705
michaelx_krau13421852006-07-05 20:41:25 +00007061) EDK II contains new hardware feature support for the ICH SMBUS Libraries.
lhauchaa0bf4f2006-04-26 17:54:57 +0000707 These libraries are provided to make Memory Reference Code (MRC) development
708 easier.
michaelx_krau561e4a72006-07-13 18:37:28 +00007092) The MDE libraries represent significant changes in source
lhauchaa0bf4f2006-04-26 17:54:57 +0000710 (with only limited changes in functionality.) These new libraries conform
hche10xb440dd82006-11-08 06:12:54 +0000711 to the "EDK II Module Development Environment Library Specification.?
lhauchaa0bf4f2006-04-26 17:54:57 +00007123) The Fat Binary and the EDK Shell Binary Packages are functionally identical
michaelx_krau561e4a72006-07-13 18:37:28 +0000713 to the original EDK.
lhauchaa0bf4f2006-04-26 17:54:57 +00007144) The EDK tools directory has been expanded to include more tools and more
715 tool functionality.
7165) The EDK NT32 section has been ported to the new build process, but
michaelx_krau561e4a72006-07-13 18:37:28 +0000717 functionally remains the same as the original EDK.
michaelx_krau13421852006-07-05 20:41:25 +00007186) The Application "HelloWorld" has been ported to EDK II as well.
lhauchaa0bf4f2006-04-26 17:54:57 +0000719
720=======================================================
hche10xb440dd82006-11-08 06:12:54 +0000721Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4890, no
lhauchaa0bf4f2006-04-26 17:54:57 +0000722virus detected.
bbahnsenba6930b2007-01-04 23:56:55 +0000723
bbahnsenc9b1cad2007-01-07 20:05:59 +0000724vim:tw=78:ts=2:com=fb\:- :ai