lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 1 | Intel(R) Platform Innovation Framework for EFI
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame^] | 2 | EFI Development Kit II (EDK II)
|
| 3 | Root Package 1.00
|
| 4 | 2006-07-06
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 5 |
|
| 6 | Copyright (c) 2006, Intel Corporation
|
| 7 |
|
| 8 | This document provides updates to documentation, along with a description on
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame^] | 9 | how to install and build the EDK II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 10 |
|
| 11 | Package Contents
|
| 12 | ----------------
|
| 13 | ReleaseNote.txt- These release notes for the package.
|
| 14 | MdePkg - A package containing Industry Standard headers and libraries
|
| 15 | Tools - A package containing Build Specific tools which are designed
|
| 16 | to help the developer create and modify drivers and
|
| 17 | libraries
|
| 18 | EdkModulePkg - A package containing reference drivers
|
| 19 | EdkFatBinPkg - A package containing binary DXE drivers for the Fat 32 file
|
| 20 | system
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame^] | 21 | EdkFatPkg - A package containing source DXE drivers for the Fat 32 file
|
| 22 | system
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 23 | EdkShellBinPkg - A package containing binary Shell applications and commands
|
| 24 | EdkNt32Pkg - A package containing the NT32 Emulation platform reference
|
| 25 |
|
| 26 | Note: MDE and MDK that appear in other documentation refer to the MdePkg and
|
| 27 | Tools packages. These two packages are the minimum requirement for developing
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 28 | EDK II Packages. It is also recommended that the top level files included
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 29 | with the EDK be downloaded in conjunction with these two packages.
|
| 30 |
|
| 31 | Note: Documents have the following filenames:
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 32 | EDK II Module Development Environment Library Specification v0.50
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 33 | (MDE_Library_Spec_0_50.rtf)
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 34 | EDK II Build and Packaging Architecture Specification v0.50
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 35 | (Build_Packaging_Spec_0_50.rtf)
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 36 | EDK II Platform Configuration Database Infrastructure Description v0.51
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 37 | (PCD_Infrastructure_0_51.rtf)
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 38 | EDK II Module Surface Area v0.50
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 39 | (Module_Surface_Area_0_50.rtf)
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 40 | EDK II Module Development Environment (MDE) Package Specification v0.50
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 41 | (MDE_Package_Spec_0_50.rtf)
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 42 | EDK II C Coding Standards Specification v0.50
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 43 | (C_Coding_Standards_Specification_ 0_50.rtf)
|
| 44 |
|
| 45 | Pre-Requisites
|
| 46 | --------------
|
| 47 | The following list of tools must be installed on the development workstation
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 48 | prior to using the Edk II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 49 |
|
| 50 | Compiler Tool Chain
|
| 51 | Microsoft* Visual Studio .NET 2003* (http://www.microsoft.com)
|
| 52 | or
|
bbahnsen | 4347544 | 2006-06-07 00:21:44 +0000 | [diff] [blame] | 53 | 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] | 54 |
|
| 55 | Assembler Tool Chain
|
| 56 | Microsoft Macro Assembler, version 6.15 or later
|
| 57 | or
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 58 | GNU binutils 2.16.1 or later
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 59 |
|
| 60 | Java Development Kit ( Java 5.0 or later)
|
| 61 | Sun* jdk-1.5.0_04 or later (http://java.sun.com)
|
| 62 | or
|
| 63 | Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)
|
| 64 |
|
| 65 | Java Tools
|
| 66 | Apache-ANT, version 1.6.5 or later (http://ant.apache.org)
|
bbahnsen | 5051888 | 2006-05-03 18:10:56 +0000 | [diff] [blame] | 67 | Ant-contrib, version 1.0b2 or later
|
| 68 | (http://sourceforge.net/project/showfiles.php?group_id=36177)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 69 | Saxon8, version 8.1.1
|
| 70 | (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)
|
| 71 | XMLBeans, version 2.1.0 or later (http://xmlbeans.apache.org)
|
| 72 |
|
| 73 | Other Tools
|
| 74 | TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)
|
| 75 |
|
| 76 | Optional Tools
|
| 77 | --------------
|
| 78 | Compiler Tool Chains:
|
bbahnsen | 5051888 | 2006-05-03 18:10:56 +0000 | [diff] [blame] | 79 | Intel C++ Compiler for Windows, ver. 9.0 or later (http://www.intel.com)
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 80 | Intel C Compiler for EFI Byte Code, ver. 1.2 or later
|
| 81 | (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] | 82 | Microsoft Driver Development Kit, version 3790.1830 or later
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 83 | (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 84 | Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later
|
| 85 | Intel ACPI Component Architecture, version 20060113
|
| 86 |
|
| 87 | -----------------------
|
| 88 | Notes On Required Tools (Source Control System)
|
| 89 | -----------------------
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 90 | The EDK II is being managed by the Subversion Source Control on Tianocore.org.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 91 | This software package provides speed, security, and additional features. The
|
| 92 | recommended client is TortoiseSVN version 1.3.3.
|
| 93 | (Available at http://tortoisesvn.tigris.org/)
|
| 94 |
|
| 95 | There are instructions for the use of Subversion Source Control on the
|
| 96 | Tianocore.org website, as part of the checkout procedures.
|
| 97 |
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 98 | The URL of the EDK II repository is:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 99 | https://edk2.tianocore.org/svn/edk2/trunk/edk2
|
| 100 |
|
| 101 | -----------------------
|
| 102 | Notes On Documentation
|
| 103 | -----------------------
|
| 104 | The documents are being managed by the Subversion Source Control on
|
| 105 | Tianocore.org. The document repository is "docs" and must be checked out
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 106 | separately from the EDK II source tree. Refer to the checkout procedures on
|
| 107 | the Tianocore.org website for EDK II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 108 |
|
| 109 | The URL of the document repository is:
|
| 110 | https://edk2.tianocore.org/svn/edk2/trunk/docs
|
| 111 |
|
| 112 |
|
| 113 | -----------------------
|
| 114 | Notes On Required Tools (MS Windows environment example)
|
| 115 | -----------------------
|
| 116 | Software Installation Order:
|
| 117 | After installing the compiler tools and your Subversion client, the following
|
| 118 | required tools should be installed in order:
|
| 119 | Java JDK, Apache-Ant, ant-contrib, xmlbeans, saxon8
|
| 120 |
|
| 121 | Java Development Kit:
|
| 122 |
|
| 123 | The Java Environment Variable must be set before attempting to build.
|
| 124 | i.e. For Sun JDK (see note below*):
|
| 125 | set JAVA_HOME=c:\ Java\jdk1.5.0_06
|
| 126 | i.e. For Bea Systems:
|
| 127 | set JAVA_HOME=c:\Program Files\Java\jrockit-R26.0.0-jdk1.5.0_04
|
| 128 |
|
| 129 | *When using the Sun JDK5.0
|
| 130 | During installation, you should specify the install directory as C:\Java
|
| 131 | instead of C:\Program Files\(or some other drive letter.) While installing
|
| 132 | to this non-standard location is not required. In use, it seems to work
|
| 133 | more reliably.
|
| 134 | For the JDK, the install path would be C:\Java\jdk1.5.0_06
|
| 135 | For the JRE, the install path would be C:\Java\jre1.5.0_06
|
| 136 | Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.
|
lhauch | 01d2ed5 | 2006-04-27 15:09:06 +0000 | [diff] [blame] | 137 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 138 | NOTE: You cannot combine the location for the JDK and the JRE, as the JRE
|
| 139 | install removes most of the binaries and libraries installed by the JDK
|
| 140 | install.
|
| 141 |
|
| 142 | Java Tools:
|
| 143 | The Apache-ANT requires the ANT_HOME environment variable to be set before
|
| 144 | attempting to build:
|
lhauch | 01d2ed5 | 2006-04-27 15:09:06 +0000 | [diff] [blame] | 145 | i.e. set ANT_HOME=c:\<full path to where ant was installed>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 146 |
|
| 147 | The ant-contrib.jar file should be installed in the %ANT_HOME%\lib
|
| 148 | directory.
|
| 149 |
|
| 150 | The XMLBeans, requires the XMLBEANS_HOME environment variable to be set
|
| 151 | before attempting to build:
|
lhauch | 01d2ed5 | 2006-04-27 15:09:06 +0000 | [diff] [blame] | 152 | i.e. set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 153 |
|
| 154 | The saxon8.jar file should be copied to the %XMLBEANS_HOME%\lib directory.
|
| 155 |
|
| 156 | The Ant and XMLBean tools are required to be in the path.
|
| 157 | MS system example:
|
| 158 | set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin
|
| 159 | Linux/OS X bash shell example:
|
| 160 | export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin
|
| 161 |
|
| 162 | -------------------------------------------------------------------------------
|
| 163 | Quick Start
|
| 164 | -----------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 165 | Edit the text file, target.txt, located in the Tools/Conf directory. This
|
| 166 | file contains the tools defintion file and ative platform. It can also restrict
|
| 167 | current build target(s), tagname(s) and arch(s). Uncomment the line ACTIVE_PLATFORM
|
| 168 | which is commented out by default.
|
| 169 |
|
| 170 | Edit the tools definition file, tools_def.txt, also located in the Tools/Conf
|
| 171 | directory. This file contains the names of the compiler tool chains and the
|
| 172 | location of the compiler binaries. It has been pre-populated with the standard
|
| 173 | location for the Microsoft tool chains and includes the standard location of
|
| 174 | the Intel C Compiler for EFI Byte Code (EBC)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 175 |
|
| 176 | Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 177 | checkout the entire EDK II source tree.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 178 |
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 179 | In a command window, change to the top level directory of the Edk II sources.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 180 | Set the WORKSPACE environment variable, e.g.:
|
| 181 |
|
| 182 | c:\> set WORKSPACE=C:\MyWork\Edk2.0
|
| 183 |
|
| 184 | To test your tool chain setup and to build the Supplied Tools, execute:
|
| 185 | c:\MyWork\Edk2.0\> edksetup
|
| 186 |
|
| 187 | (This command will be referred to as the setup command throughout the rest of
|
| 188 | this document.)
|
| 189 | NOTE: You should run the setup command at the start of every session.
|
| 190 | This configures the environment to include the TianoTools and the
|
| 191 | Java applications and libraries.
|
| 192 |
|
| 193 | Once this is completed, you are ready to test the Build, by executing:
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 194 | c:\MyWork\Edk2.0\> build
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 195 |
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 196 | This command builds active platform specified in text file target.txt. If
|
| 197 | active platform is not specified, go to sub-directory which contains FPD files and
|
| 198 | type build. More information about active platform policy reference to specification
|
| 199 | <<EDK II Build and Packaging Architecture Specification>>.
|
bbahnsen | 90f7b6a | 2006-06-22 23:19:41 +0000 | [diff] [blame] | 200 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 201 | -------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 202 | Individual Platform Builds
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 203 | -------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 204 | After running the setup command, you can build individual platforms.
|
| 205 | In the command window,
|
| 206 | 1. Set active platform in target.txt, and type "build" in whatever directory;
|
| 207 | 2. or cd to the platform (FPD file) that you want to build, and just type:
|
| 208 | c:\MyWork\Edk2.0\EdkNt32Pkg\> build
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 209 |
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 210 | Note that active platform with the high priority to build, that means active
|
| 211 | platform will be built even if exists FPD file under current directory. More
|
| 212 | information about active platform policy reference to specification
|
| 213 | <<EDK II Build and Packaging Architecture Specification>>.
|
| 214 |
|
| 215 | Go to <full build path>\Debug\MSFT\IA32 and execute SecMain.exe
|
| 216 | to run the Nt32 emulation platform under Microsoft Windows.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 217 |
|
lhauch | 03fed93 | 2006-05-24 19:51:36 +0000 | [diff] [blame] | 218 | To exit the Nt32 emulation platform, you may type reset at the EFI Shell>
|
| 219 | command prompt. Alternately, you may use the Graphical interface, Boot
|
| 220 | Maintenance Manager screen's Reset System command.
|
| 221 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 222 | ------------------------
|
| 223 | Individual Module Builds
|
| 224 | ------------------------
|
| 225 | After running the setup command, you can build individual modules.
|
| 226 | In the command window, cd to the module that you want to build, and just
|
| 227 | type:
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 228 | c:\MyWork\Edk2.0\MdePkg\Library\BaseLib\> build
|
| 229 |
|
| 230 | Note active platform must be set for individual module build.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 231 |
|
| 232 | -------------------------------------------------------------------------------
|
| 233 | A Word on Apache-ANT
|
| 234 | --------------------
|
| 235 | The Apache-ANT program is a build tool that uses XML-based project files.
|
| 236 | Similar to Makefiles, these project files may contain multiple targets. Most
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 237 | build.xml files in Edk2.0 are auto-generated; any edits performed on the
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 238 | build.xml files will be overwritten the next time ant is executed.
|
| 239 |
|
| 240 | Pre-defined targets in the build.xml files include:
|
| 241 | all - This target builds binaries for defined architectures
|
| 242 | clean - This target removes object files generated by commands
|
| 243 | cleanall - This target removes all generated files and directories.
|
| 244 |
|
| 245 | A Word on GCC tool chain
|
| 246 | ------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 247 | EDK2 will not compile with a standard Linux gcc tool chain. While Linux
|
| 248 | distributions are usually based on ELF, EDK2 requires a version of gcc that is
|
bbahnsen | 4347544 | 2006-06-07 00:21:44 +0000 | [diff] [blame] | 249 | configured to produce PE-COFF images. You will find a script in edk2/Tools/gcc
|
| 250 | that will download, configure, compile, and install a gcc 4.X cross-compile
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 251 | tool chain for EDK2 development. It has support for the ia32 architecture. It
|
bbahnsen | 4347544 | 2006-06-07 00:21:44 +0000 | [diff] [blame] | 252 | can be built and run on Cygwin, Linux, and many other POSIX compliant host
|
| 253 | operating environments. There are a few tools that you will need on your host
|
| 254 | computer in order to compile the tool chain. Among them are bash, gcc, gmake,
|
| 255 | curl (or wget).
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 256 |
|
| 257 | -------------------------------------------------------------------------------
|
| 258 |
|
| 259 | General Information:
|
| 260 | ===============================================================
|
| 261 | Mechanisms:
|
| 262 | ----------
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 263 | A brief overview:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 264 |
|
| 265 | A) Surface Area Package Description (SPD) file contains information about the
|
| 266 | modules that the package contains, including the location of all MSA files, and
|
| 267 | public library names and headers that might be provided by a module in the
|
| 268 | package. Packages are defined by SPD files. (Found in the root of the Package
|
| 269 | subdirectory (i.e. EdkNt32Pkg)) The SPD is further explained in the "Build
|
| 270 | Packaging Specification" document.
|
| 271 |
|
| 272 | B) Module Surface Area Definition (MSA) files. A description of a module's
|
| 273 | surface area, with all module specific default flags and features specified.
|
| 274 | Refer to the "Module Surface Area Architecture Specification" for additional
|
| 275 | details. The MSA is further explained in the "Build Packaging Specification"
|
| 276 | document.
|
| 277 |
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame^] | 278 | C) Platform Configuration Database (PCD). A platform database which contains a
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 279 | variety of current platform settings or directives by which a driver or
|
| 280 | application can interact with. The PCD is defined by the PCD_Protocol (This is
|
| 281 | further explained in the "Platform Configuration Database Infrastructure
|
| 282 | Description" document.
|
| 283 |
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame^] | 284 | D) Library Class. A library class is a logical grouping of similar functions.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 285 | When developing components, the module surface area declares the class of
|
| 286 | libraries that can be used by the component. The MBD file specifies the
|
| 287 | instance(s) of the library that will be used during compilation/linking. All
|
| 288 | library type modules must include header files in their distribution package,
|
| 289 | as well as their surface area and module build description files. Components,
|
| 290 | on the other hand, need only provide the binary and build description files
|
| 291 | when distributing BINARY packages. The Library Classes are further explained
|
| 292 | in the "Build Packaging Specification" document.
|
| 293 |
|
| 294 | =========================================================================
|
| 295 | The common operations by developers of new modules are:
|
| 296 | -------------------------------------------------------
|
| 297 |
|
| 298 | 1) How to manually create a new module in a package:
|
| 299 | - The module source code must first be created in an appropriate directory
|
| 300 | (under the package the module is to be a part of.)
|
| 301 | - An MSA file must be created, spelling out all aspects of the module.
|
| 302 | - The MSA must be added to the SPD for the package to include the module.
|
| 303 |
|
| 304 | -----------------------------------------
|
| 305 | 2) Add/Remove module(s) to/from a package:
|
| 306 |
|
| 307 | - Setup environment as Build
|
| 308 | - Add a module to a package
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 309 | * Generate the module SurfaceArea description file
|
| 310 | * Add a new <Filename> element under <MsaFiles> into
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 311 | <PackageDir>\<PackageName>.spd, using relative path to package
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 312 | * Add a new <ModuleSA> entry under each <FrameworkModules> into
|
| 313 | <PackageDir>\<PackageName>.fpd file if necessary.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 314 |
|
| 315 | - Remove a module from a package
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 316 | * Comment out or remove corresponding <Filename> element under <MsaFiles>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 317 | from <PackageDir>\<PackageName>.spd
|
| 318 | * Comment out or remove corresponding <ModuleSA> entry under each
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 319 | <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 320 |
|
| 321 | -----------------------------------
|
| 322 | 3) How to manually create a package:
|
| 323 | - Identify the modules that are to be members of the project.
|
| 324 | - Identify the Variables and Guids required in and of the Package (including
|
| 325 | consumption/production information).
|
| 326 | - Create an SPD file defining these modules and calling out their MSA files.
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 327 | - add a new <Filename> element under <PackageList> into
|
| 328 | Tools\Conf\FrameworkDatabase.db, using the relative path to workspace.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 329 |
|
| 330 | --------------------------------------
|
| 331 | 4) Declare a new Protocol in a package:
|
| 332 | - This release requires manual editing of the SPD file, adding the protocol
|
| 333 | to the ProtocolDeclarations section of the file.
|
| 334 | - Add the Protocol .h file to the Include\Protocol directory.
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 335 | - Add an <Entry> to the <ProtocolDeclarations> element in the
|
| 336 | <PackageName>.spd file
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 337 | * Each line contains Protocol base name then the global variable name and
|
| 338 | then the hex value of the Protocol GUID.
|
| 339 |
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 340 | Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD file):
|
| 341 | <ProtocolDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 342 | <Entry Name="Bds">
|
| 343 | <C_Name>gEfiBdsArchProtocolGuid</C_Name>
|
| 344 | <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>
|
| 345 | <HelpText/>
|
| 346 | </Entry>
|
| 347 | <Entry Name="Cpu">
|
| 348 | <C_Name>gEfiCpuArchProtocolGuid</C_Name>
|
| 349 | <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>
|
| 350 | <HelpText/>
|
| 351 | </Entry>
|
| 352 | </ProtocolDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 353 |
|
| 354 | ---------------------------------
|
| 355 | 5) Declare a new PPI in a package:
|
| 356 | - This release requires manual editing of the SPD file
|
| 357 | - Add the PPI .h file to the Include\Ppi directory.
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 358 | - Add an <Entry> to the package <PpiDeclarations> element in the
|
| 359 | <PackageName>.spd file
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 360 | * Each line contains PPI base name then the global variable name and then
|
| 361 | the hex value of the PPI GUID.
|
| 362 |
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 363 | Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):
|
| 364 | <PpiDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 365 | <Entry Name="BootInRecoveryMode">
|
| 366 | <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>
|
| 367 | <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>
|
| 368 | <HelpText/>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 369 | </Entry>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 370 | <Entry Name="CpuIo">
|
| 371 | <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>
|
| 372 | <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>
|
| 373 | <HelpText/>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 374 | </Entry>
|
| 375 | </PpiDeclarations>
|
| 376 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 377 | ----------------------------------
|
| 378 | 6) Declare a new GUID in a package:
|
| 379 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 380 | Guid. This is identical to adding a ProtocolDeclaration or PpiDeclaration
|
| 381 | element as described above.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 382 |
|
| 383 | ---------------------------------------
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 384 | 7) Define a new PCD entry in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 385 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 386 | PCD. New Pcd entries are added to the PcdDefinitions section of the
|
| 387 | <PackageName>.spd file using the following example for the format:
|
| 388 | NOTE: The hex <Token> value must be unique.
|
| 389 |
|
| 390 | <PcdDefinitions>
|
| 391 | <PcdEntry ItemType="FIXED_AT_BUILD">
|
| 392 | <C_Name>PcdMaximumUnicodeStringLength</C_Name>
|
| 393 | <Token>0x00000001</Token>
|
| 394 | <DatumType>UINT32</DatumType>
|
| 395 | <DefaultValue>1000000</DefaultValue>
|
| 396 | </PcdEntry>
|
| 397 | </PcdDefinition>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 398 |
|
| 399 | ------------------------------
|
| 400 | 8) Declare a new Library Class:
|
| 401 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 402 | Library Class. New Library Class entries are added to the
|
| 403 | LibraryClassDeclarations seection of the <PackageName>.spd file using
|
| 404 | the following example for the format:
|
| 405 |
|
| 406 | <LibraryClassDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 407 | <LibraryClass Name="BaseLib">
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 408 | <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 409 | <HelpText/>
|
| 410 | </LibraryClass>
|
| 411 | <LibraryClass Name="BaseMemoryLib">
|
| 412 | <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>
|
| 413 | <HelpText/>
|
| 414 | </LibraryClass>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 415 | </LibraryClassDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 416 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 417 | =======================================================
|
| 418 | Notes:
|
| 419 | ------
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 420 | The EDK II represents significant changes in the structure of the EDK.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 421 | Therefore it is very difficult to isolate all of the changes of this version of
|
| 422 | the EDK with the previous (EDK 1.0) version.
|
| 423 |
|
| 424 | Of particular note:
|
| 425 |
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 426 | 1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 427 | These libraries are provided to make Memory Reference Code (MRC) development
|
| 428 | easier.
|
bbahnsen | 1465cc8 | 2006-05-02 15:57:28 +0000 | [diff] [blame] | 429 | 2) The MDE Libraries - The MDE libraries represent significant changes in source
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 430 | (with only limited changes in functionality.) These new libraries conform
|
| 431 | to the "MDE Library Specification".
|
| 432 | 3) The Fat Binary and the EDK Shell Binary Packages are functionally identical
|
| 433 | to the EDK 1.0 version.
|
| 434 | 4) The EDK tools directory has been expanded to include more tools and more
|
| 435 | tool functionality.
|
| 436 | 5) The EDK NT32 section has been ported to the new build process, but
|
| 437 | functionally remains the same as the EDK 1.0 version.
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 438 | 6) The Application "HelloWorld" has been ported to EDK II as well.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 439 |
|
| 440 | =======================================================
|
| 441 | Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4718, no
|
| 442 | virus detected.
|
| 443 |
|