]>
Commit | Line | Data |
---|---|---|
aa0bf4f4 | 1 | Intel(R) Platform Innovation Framework for EFI\r |
362271d6 | 2 | EFI Development Kit II (EDK II) \r |
3 | Root Package 1.00\r | |
4 | 2006-07-06\r | |
aa0bf4f4 | 5 | \r |
6 | Copyright (c) 2006, Intel Corporation\r | |
7 | \r | |
8 | This document provides updates to documentation, along with a description on \r | |
362271d6 | 9 | how to install and build the EDK II.\r |
aa0bf4f4 | 10 | \r |
11 | Package Contents\r | |
12 | ----------------\r | |
13 | ReleaseNote.txt- These release notes for the package.\r | |
14 | MdePkg - A package containing Industry Standard headers and libraries\r | |
15 | Tools - A package containing Build Specific tools which are designed\r | |
16 | to help the developer create and modify drivers and\r | |
17 | libraries\r | |
18 | EdkModulePkg - A package containing reference drivers\r | |
19 | EdkFatBinPkg - A package containing binary DXE drivers for the Fat 32 file\r | |
20 | system\r | |
362271d6 | 21 | EdkFatPkg - A package containing source DXE drivers for the Fat 32 file\r |
22 | system\r | |
aa0bf4f4 | 23 | EdkShellBinPkg - A package containing binary Shell applications and commands\r |
24 | EdkNt32Pkg - A package containing the NT32 Emulation platform reference\r | |
25 | \r | |
26 | Note: MDE and MDK that appear in other documentation refer to the MdePkg and\r | |
27 | Tools packages. These two packages are the minimum requirement for developing\r | |
13421853 | 28 | EDK II Packages. It is also recommended that the top level files included\r |
aa0bf4f4 | 29 | with the EDK be downloaded in conjunction with these two packages.\r |
30 | \r | |
31 | Note: Documents have the following filenames:\r | |
13421853 | 32 | EDK II Module Development Environment Library Specification v0.50 \r |
aa0bf4f4 | 33 | (MDE_Library_Spec_0_50.rtf)\r |
13421853 | 34 | EDK II Build and Packaging Architecture Specification v0.50\r |
aa0bf4f4 | 35 | (Build_Packaging_Spec_0_50.rtf)\r |
13421853 | 36 | EDK II Platform Configuration Database Infrastructure Description v0.51\r |
aa0bf4f4 | 37 | (PCD_Infrastructure_0_51.rtf)\r |
13421853 | 38 | EDK II Module Surface Area v0.50\r |
aa0bf4f4 | 39 | (Module_Surface_Area_0_50.rtf)\r |
13421853 | 40 | EDK II Module Development Environment (MDE) Package Specification v0.50\r |
aa0bf4f4 | 41 | (MDE_Package_Spec_0_50.rtf)\r |
13421853 | 42 | EDK II C Coding Standards Specification v0.50\r |
aa0bf4f4 | 43 | (C_Coding_Standards_Specification_ 0_50.rtf)\r |
44 | \r | |
45 | Pre-Requisites\r | |
46 | --------------\r | |
47 | The following list of tools must be installed on the development workstation\r | |
e3f236c8 | 48 | prior to using the Edk II.\r |
aa0bf4f4 | 49 | \r |
50 | Compiler Tool Chain\r | |
51 | Microsoft* Visual Studio .NET 2003* (http://www.microsoft.com)\r | |
52 | or\r | |
43475442 | 53 | A special GCC version 4.x or later (http://gcc.gnu.org). See below.\r |
aa0bf4f4 | 54 | \r |
55 | Assembler Tool Chain\r | |
56 | Microsoft Macro Assembler, version 6.15 or later\r | |
57 | or\r | |
8fb9e6b8 | 58 | GNU binutils 2.16.1 or later\r |
aa0bf4f4 | 59 | \r |
60 | Java Development Kit ( Java 5.0 or later)\r | |
61 | Sun* jdk-1.5.0_04 or later (http://java.sun.com)\r | |
62 | or\r | |
63 | Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)\r | |
64 | \r | |
65 | Java Tools\r | |
66 | Apache-ANT, version 1.6.5 or later (http://ant.apache.org)\r | |
50518883 | 67 | Ant-contrib, version 1.0b2 or later\r |
68 | (http://sourceforge.net/project/showfiles.php?group_id=36177)\r | |
aa0bf4f4 | 69 | Saxon8, version 8.1.1\r |
70 | (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)\r | |
71 | XMLBeans, version 2.1.0 or later (http://xmlbeans.apache.org) \r | |
72 | \r | |
73 | Other Tools\r | |
74 | TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)\r | |
75 | \r | |
76 | Optional Tools\r | |
77 | --------------\r | |
78 | Compiler Tool Chains:\r | |
50518883 | 79 | Intel C++ Compiler for Windows, ver. 9.0 or later (http://www.intel.com)\r |
8fb9e6b8 | 80 | Intel C Compiler for EFI Byte Code, ver. 1.2 or later \r |
81 | (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)\r | |
aa0bf4f4 | 82 | Microsoft Driver Development Kit, version 3790.1830 or later\r |
8fb9e6b8 | 83 | (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)\r |
aa0bf4f4 | 84 | Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later\r |
85 | Intel ACPI Component Architecture, version 20060113\r | |
86 | \r | |
87 | -----------------------\r | |
88 | Notes On Required Tools (Source Control System)\r | |
89 | -----------------------\r | |
13421853 | 90 | The EDK II is being managed by the Subversion Source Control on Tianocore.org.\r |
aa0bf4f4 | 91 | This software package provides speed, security, and additional features. The\r |
92 | recommended client is TortoiseSVN version 1.3.3. \r | |
93 | (Available at http://tortoisesvn.tigris.org/)\r | |
94 | \r | |
95 | There are instructions for the use of Subversion Source Control on the\r | |
96 | Tianocore.org website, as part of the checkout procedures.\r | |
97 | \r | |
13421853 | 98 | The URL of the EDK II repository is:\r |
aa0bf4f4 | 99 | https://edk2.tianocore.org/svn/edk2/trunk/edk2\r |
100 | \r | |
101 | -----------------------\r | |
102 | Notes On Documentation\r | |
103 | -----------------------\r | |
104 | The documents are being managed by the Subversion Source Control on\r | |
105 | Tianocore.org. The document repository is "docs" and must be checked out\r | |
13421853 | 106 | separately from the EDK II source tree. Refer to the checkout procedures on\r |
107 | the Tianocore.org website for EDK II.\r | |
aa0bf4f4 | 108 | \r |
109 | The URL of the document repository is:\r | |
110 | https://edk2.tianocore.org/svn/edk2/trunk/docs\r | |
111 | \r | |
112 | \r | |
113 | -----------------------\r | |
114 | Notes On Required Tools (MS Windows environment example)\r | |
115 | -----------------------\r | |
116 | Software Installation Order:\r | |
117 | After installing the compiler tools and your Subversion client, the following\r | |
118 | required tools should be installed in order: \r | |
119 | Java JDK, Apache-Ant, ant-contrib, xmlbeans, saxon8\r | |
120 | \r | |
121 | Java Development Kit:\r | |
122 | \r | |
123 | The Java Environment Variable must be set before attempting to build.\r | |
124 | i.e. For Sun JDK (see note below*):\r | |
125 | set JAVA_HOME=c:\ Java\jdk1.5.0_06 \r | |
126 | i.e. For Bea Systems:\r | |
127 | set JAVA_HOME=c:\Program Files\Java\jrockit-R26.0.0-jdk1.5.0_04\r | |
128 | \r | |
129 | *When using the Sun JDK5.0\r | |
130 | During installation, you should specify the install directory as C:\Java\r | |
131 | instead of C:\Program Files\(or some other drive letter.) While installing\r | |
132 | to this non-standard location is not required. In use, it seems to work \r | |
133 | more reliably. \r | |
134 | For the JDK, the install path would be C:\Java\jdk1.5.0_06\r | |
135 | For the JRE, the install path would be C:\Java\jre1.5.0_06\r | |
136 | Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.\r | |
01d2ed5e | 137 | \r |
aa0bf4f4 | 138 | NOTE: You cannot combine the location for the JDK and the JRE, as the JRE\r |
139 | install removes most of the binaries and libraries installed by the JDK\r | |
140 | install.\r | |
141 | \r | |
142 | Java Tools:\r | |
143 | The Apache-ANT requires the ANT_HOME environment variable to be set before\r | |
144 | attempting to build:\r | |
01d2ed5e | 145 | i.e. set ANT_HOME=c:\<full path to where ant was installed>\r |
aa0bf4f4 | 146 | \r |
147 | The ant-contrib.jar file should be installed in the %ANT_HOME%\lib \r | |
148 | directory.\r | |
149 | \r | |
150 | The XMLBeans, requires the XMLBEANS_HOME environment variable to be set\r | |
151 | before attempting to build:\r | |
01d2ed5e | 152 | i.e. set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>\r |
aa0bf4f4 | 153 | \r |
154 | The saxon8.jar file should be copied to the %XMLBEANS_HOME%\lib directory.\r | |
155 | \r | |
156 | The Ant and XMLBean tools are required to be in the path.\r | |
157 | MS system example:\r | |
158 | set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin\r | |
159 | Linux/OS X bash shell example:\r | |
160 | export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin\r | |
161 | \r | |
162 | -------------------------------------------------------------------------------\r | |
163 | Quick Start\r | |
164 | -----------\r | |
a032fb4d | 165 | Copy the target.template file in the Tools/Conf directory to target.txt, which\r |
166 | must also be in the Tools/Conf directory.\r | |
167 | \r | |
e3f236c8 | 168 | Edit the text file, target.txt, located in the Tools/Conf directory. This \r |
a032fb4d | 169 | file contains options for setting the active platform and restricting the build. \r |
170 | The restictions are used to limit the build output by specifying build target(s), \r | |
171 | tagname(s) and architecture(s) to less than the full set of possible options. \r | |
172 | \r | |
173 | The ACTIVE_PLATFORM MUST BE SET. All other options need not be set, however by \r | |
174 | unsetting these options (by removing the line from the file, or leaving the Value \r | |
175 | empty) will result in all available build possibilites when typing build. By\r | |
176 | default EDK II can build a matrix of binaries, using different target types, tool\r | |
177 | chain tags and architectures. Options to target.txt file are as follows:\r | |
178 | \r | |
179 | ACTIVE_PLATFORM = Value REQUIRED\r | |
180 | Where Value is the WORKSPACE relative path and filename of a Framework Platform \r | |
181 | Definition (FPD) File. Example:\r | |
182 | \r | |
183 | ACTIVE_PLATFORM = MdePkg/MdePkg.fpd\r | |
184 | \r | |
185 | TARGET = Value OPTIONAL\r | |
186 | Where Value is a list of one or more of the following: DEBUG, RELEASE or a User\r | |
187 | Defined Target type, such as PERF. Example: \r | |
188 | \r | |
189 | TARGET = DEBUG RELEASE\r | |
190 | \r | |
191 | TARGET_ARCH = Value OPTIONAL\r | |
192 | Where Value is a list of one or more supported Architectures: IA32, X64, IPF or\r | |
193 | EBC. Example: \r | |
194 | \r | |
195 | TARGET_ARCH = IA32 X64 EBC\r | |
196 | \r | |
197 | TOOL_CHAIN_CONF = Value OPTIONAL\r | |
198 | Where Value is the Filename of an alternate tools_def.txt file created by the\r | |
199 | user. The alternate tools_def.txt files must be in the Tools/Conf directory.\r | |
200 | These tool definitions are scoped to the WORKSPACE (location of the EDK \r | |
201 | installation) and cannot be shared between WORKSPACES. (You can copy the files\r | |
202 | from one workspace to another.) Example: \r | |
203 | \r | |
204 | TOOL_CHAIN_CONF = alfred.txt\r | |
205 | \r | |
206 | TOOL_CHAIN_TAG = Value OPTIONAL\r | |
207 | Where Value is a list of TagName entries as defined in the tools_def.txt file.\r | |
208 | The TagName can be used to specify different versions of a compiler, i.e., \r | |
209 | gcc 4.0 and gcc 4.1 which will allow you to build binaries with both tool chains \r | |
210 | during the same build - useful during testing of a new compiler tool chain, or \r | |
211 | for changing compiler flags to check out performance with a different set of \r | |
212 | flags than flags used for production. Example:\r | |
213 | \r | |
214 | TOOL_CHAIN_TAG = GCC40 GCC41\r | |
215 | \r | |
216 | To clear a restriction, just remove any data after the equal sign. To clear\r | |
217 | the TARGET_ARCH limitation that was set above, enter: \r | |
218 | \r | |
219 | TARGET_ARCH =\r | |
220 | \r | |
221 | -----------\r | |
222 | Copy the tools_def.template file in Tools/Conf to tools_def.txt in the same\r | |
223 | directory.\r | |
e3f236c8 | 224 | \r |
225 | Edit the tools definition file, tools_def.txt, also located in the Tools/Conf \r | |
226 | directory. This file contains the names of the compiler tool chains and the \r | |
227 | location of the compiler binaries. It has been pre-populated with the standard \r | |
228 | location for the Microsoft tool chains and includes the standard location of \r | |
a032fb4d | 229 | the Intel C Compiler for EFI Byte Code (EBC.) In addition, EDK II provides\r |
230 | support for Cygwin, Linux and OS X GCC compiler tool chains. A script has been\r | |
231 | provided in the Tools/gcc directory as well as instructions in obtaining and\r | |
232 | building a version of GCC that has been tested. The tools_def.txt file has\r | |
233 | the GCC binary locations that are created using this script.\r | |
234 | \r | |
235 | Both target.txt and tools_def.txt files are formatted as Property = Value, \r | |
236 | which must appear on a single line. Spanning a Value entry over multiple\r | |
237 | lines is not supported at this time. In the target.txt file, the Property is\r | |
238 | a single, uppercase word with underscore characters. These Property names are\r | |
239 | fixed by the build system. The tools_def.txt file's Property is an underscore\r | |
240 | delimited coding, which supports some user defined values. The coding for\r | |
241 | the Property is: TARGET_TAGNAME_ARCH_COMMAND_ATTR The Value, is either a \r | |
242 | full path, full path and filename or a reserved word.\r | |
243 | \r | |
244 | TARGET - DEBUG and RELEASE are predefined, however the user may define one or\r | |
245 | more of their own TARGET types in this file.\r | |
246 | \r | |
247 | TAGNAME - HOST, MSFT, GCC, INTC are predefined, however the user may define \r | |
248 | one or more of their own TAGNAME keywords in this file.\r | |
249 | \r | |
250 | ARCH - EDK II supports IA32, X64, IPF and EBC at this time.\r | |
251 | \r | |
252 | COMMAND - Predefined command codes are listed in the tools_def.txt file, however\r | |
253 | the user can specify additional command codes for their one, non-\r | |
254 | standard tools.\r | |
255 | \r | |
256 | ATTR - Predefined Attributes are listed in the tools_def.txt file.\r | |
257 | \r | |
258 | NOTE: The TAGNAME: HOST is reserved and MUST be defined in order to build the\r | |
259 | included Tiano tools from their C source files. These tools have been\r | |
260 | built and tested using both Microsoft and GCC tool chains.\r | |
261 | NOTE: The "*" symbol may be used as a wildcard character in most of these\r | |
262 | fields, refer to the tools_def.txt and the "EDK II Build and Packaging\r | |
263 | Architecture Specification" for more details.\r | |
264 | \r | |
265 | \r | |
266 | -----------\r | |
aa0bf4f4 | 267 | Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to\r |
13421853 | 268 | checkout the entire EDK II source tree.\r |
aa0bf4f4 | 269 | \r |
e3f236c8 | 270 | In a command window, change to the top level directory of the Edk II sources.\r |
aa0bf4f4 | 271 | Set the WORKSPACE environment variable, e.g.:\r |
272 | \r | |
a032fb4d | 273 | c:\> set WORKSPACE=C:\MyWork\Edk2\r |
aa0bf4f4 | 274 | \r |
275 | To test your tool chain setup and to build the Supplied Tools, execute:\r | |
a032fb4d | 276 | c:\MyWork\Edk2\> edksetup\r |
aa0bf4f4 | 277 | \r |
278 | (This command will be referred to as the setup command throughout the rest of\r | |
279 | this document.)\r | |
280 | NOTE: You should run the setup command at the start of every session.\r | |
281 | This configures the environment to include the TianoTools and the\r | |
282 | Java applications and libraries.\r | |
283 | \r | |
a032fb4d | 284 | If you are confident that none of the tool tool sources have changed, and you\r |
285 | only want to set up the workspace environment you may execute:\r | |
286 | c:\MyWork\Edk2\> edksetup skip\r | |
287 | \r | |
aa0bf4f4 | 288 | Once this is completed, you are ready to test the Build, by executing:\r |
a032fb4d | 289 | c:\MyWork\Edk2\> build\r |
aa0bf4f4 | 290 | \r |
e3f236c8 | 291 | This command builds active platform specified in text file target.txt. If \r |
292 | active platform is not specified, go to sub-directory which contains FPD files and\r | |
293 | type build. More information about active platform policy reference to specification\r | |
294 | <<EDK II Build and Packaging Architecture Specification>>.\r | |
90f7b6a8 | 295 | \r |
aa0bf4f4 | 296 | -------------------------\r |
e3f236c8 | 297 | Individual Platform Builds\r |
aa0bf4f4 | 298 | -------------------------\r |
e3f236c8 | 299 | After running the setup command, you can build individual platforms.\r |
300 | In the command window, \r | |
301 | 1. Set active platform in target.txt, and type "build" in whatever directory;\r | |
302 | 2. or cd to the platform (FPD file) that you want to build, and just type:\r | |
a032fb4d | 303 | c:\MyWork\Edk2\EdkNt32Pkg\> build\r |
e3f236c8 | 304 | \r |
305 | Note that active platform with the high priority to build, that means active \r | |
306 | platform will be built even if exists FPD file under current directory. More \r | |
307 | information about active platform policy reference to specification\r | |
308 | <<EDK II Build and Packaging Architecture Specification>>. \r | |
aa0bf4f4 | 309 | \r |
a032fb4d | 310 | Go to <full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe\r |
e3f236c8 | 311 | to run the Nt32 emulation platform under Microsoft Windows.\r |
aa0bf4f4 | 312 | \r |
03fed93e | 313 | To exit the Nt32 emulation platform, you may type reset at the EFI Shell>\r |
314 | command prompt. Alternately, you may use the Graphical interface, Boot\r | |
315 | Maintenance Manager screen's Reset System command.\r | |
316 | \r | |
aa0bf4f4 | 317 | ------------------------\r |
318 | Individual Module Builds\r | |
319 | ------------------------\r | |
320 | After running the setup command, you can build individual modules.\r | |
321 | In the command window, cd to the module that you want to build, and just\r | |
322 | type:\r | |
a032fb4d | 323 | c:\MyWork\Edk2\MdePkg\Library\BaseLib\> build\r |
e3f236c8 | 324 | \r |
325 | Note active platform must be set for individual module build. \r | |
aa0bf4f4 | 326 | \r |
327 | -------------------------------------------------------------------------------\r | |
328 | A Word on Apache-ANT\r | |
329 | --------------------\r | |
330 | The Apache-ANT program is a build tool that uses XML-based project files.\r | |
331 | Similar to Makefiles, these project files may contain multiple targets. Most\r | |
a032fb4d | 332 | build.xml files in EDK II are auto-generated; any edits performed on the\r |
333 | build.xml files will be overwritten the next time build is executed.\r | |
aa0bf4f4 | 334 | \r |
a032fb4d | 335 | Pre-defined targets in the build.xml file include:\r |
aa0bf4f4 | 336 | all - This target builds binaries for defined architectures\r |
337 | clean - This target removes object files generated by commands\r | |
338 | cleanall - This target removes all generated files and directories.\r | |
339 | \r | |
340 | A Word on GCC tool chain\r | |
341 | ------------------------\r | |
a032fb4d | 342 | EDK II will not compile with a standard Linux gcc tool chain. While Linux\r |
343 | distributions are usually based on ELF, EDK II requires a version of gcc \r | |
344 | that is configured to produce PE-COFF images. You will find a script in \r | |
345 | edk2/Tools/gcc that will download, configure, compile, and install a gcc \r | |
346 | 4.X cross-compile tool chain for EDK II development. It has support for \r | |
347 | the IA32 architecture. It can be built and run on Cygwin, Linux, and many \r | |
348 | other POSIX compliant host operating environments. There are a few tools\r | |
349 | that you will need on your host computer in order to compile the tool \r | |
350 | chain. Among them are bash, gcc, gmake, curl (or wget).\r | |
aa0bf4f4 | 351 | \r |
352 | -------------------------------------------------------------------------------\r | |
353 | \r | |
354 | General Information:\r | |
355 | =============================================================== \r | |
356 | Mechanisms:\r | |
357 | ----------\r | |
8fb9e6b8 | 358 | A brief overview:\r |
aa0bf4f4 | 359 | \r |
360 | A) Surface Area Package Description (SPD) file contains information about the\r | |
361 | modules that the package contains, including the location of all MSA files, and\r | |
362 | public library names and headers that might be provided by a module in the\r | |
363 | package. Packages are defined by SPD files. (Found in the root of the Package\r | |
a032fb4d | 364 | subdirectory (i.e. EdkNt32Pkg)) The SPD is further explained in the "EDK Build \r |
365 | and Packaging Architecture Specification" document.\r | |
aa0bf4f4 | 366 | \r |
367 | B) Module Surface Area Definition (MSA) files. A description of a module's \r | |
368 | surface area, with all module specific default flags and features specified.\r | |
369 | Refer to the "Module Surface Area Architecture Specification" for additional\r | |
a032fb4d | 370 | details. The MSA is further explained in the "EDK II Build Packaging Architecture \r |
371 | Specification" document.\r | |
372 | \r | |
373 | C) Framework Platform Description (FPD) files. A description of a platform's\r | |
374 | surface are, including a list of modules that are needed by the platform. To\r | |
375 | support individual module builds, developers are not required to provide\r | |
376 | information about specific flash devices, nor flash device layout. There are\r | |
377 | specific sections in the FPD file that do control aspects of the build, such \r | |
378 | as the Supported Architectures and Build Targets, as well as the tool flags \r | |
379 | that are used to create the binary files. A valid platform file can specify \r | |
380 | zero or more modules, so individual modules can be compiled within the context\r | |
381 | of a platform (FPD) definition.\r | |
382 | \r | |
383 | D) Platform Configuration Database (PCD). A platform database which contains a\r | |
aa0bf4f4 | 384 | variety of current platform settings or directives by which a driver or\r |
385 | application can interact with. The PCD is defined by the PCD_Protocol (This is\r | |
386 | further explained in the "Platform Configuration Database Infrastructure \r | |
387 | Description" document.\r | |
388 | \r | |
a032fb4d | 389 | E) Library Class. A library class is a logical grouping of similar functions.\r |
aa0bf4f4 | 390 | When developing components, the module surface area declares the class of\r |
a032fb4d | 391 | libraries that can be used by the component. The MSA and SPD files can specify\r |
392 | a recommended instance of the library that a platform integrator may select,\r | |
393 | however this is only a recommendation. The PI may choose to select a different\r | |
394 | library instance to be used during compilation/linking. All library type modules \r | |
395 | must include header files in their distribution package, as well as their MSA\r | |
396 | files. Components, on the other hand, need only provide an MSA and either source\r | |
397 | or binary files when distributing packages. The Library Classes are further \r | |
398 | explained in the "EDK II Build and Packaging Architecture Specification" \r | |
399 | document.\r | |
aa0bf4f4 | 400 | \r |
401 | =========================================================================\r | |
402 | The common operations by developers of new modules are:\r | |
403 | -------------------------------------------------------\r | |
404 | \r | |
405 | 1) How to manually create a new module in a package:\r | |
406 | - The module source code must first be created in an appropriate directory\r | |
407 | (under the package the module is to be a part of.) \r | |
408 | - An MSA file must be created, spelling out all aspects of the module.\r | |
409 | - The MSA must be added to the SPD for the package to include the module.\r | |
410 | \r | |
411 | -----------------------------------------\r | |
412 | 2) Add/Remove module(s) to/from a package:\r | |
413 | \r | |
414 | - Setup environment as Build\r | |
415 | - Add a module to a package\r | |
e3f236c8 | 416 | * Generate the module SurfaceArea description file\r |
417 | * Add a new <Filename> element under <MsaFiles> into\r | |
aa0bf4f4 | 418 | <PackageDir>\<PackageName>.spd, using relative path to package\r |
e3f236c8 | 419 | * Add a new <ModuleSA> entry under each <FrameworkModules> into\r |
420 | <PackageDir>\<PackageName>.fpd file if necessary. \r | |
aa0bf4f4 | 421 | \r |
422 | - Remove a module from a package\r | |
e3f236c8 | 423 | * Comment out or remove corresponding <Filename> element under <MsaFiles>\r |
aa0bf4f4 | 424 | from <PackageDir>\<PackageName>.spd\r |
425 | * Comment out or remove corresponding <ModuleSA> entry under each\r | |
e3f236c8 | 426 | <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary. \r |
aa0bf4f4 | 427 | \r |
428 | -----------------------------------\r | |
429 | 3) How to manually create a package:\r | |
430 | - Identify the modules that are to be members of the project.\r | |
431 | - Identify the Variables and Guids required in and of the Package (including\r | |
432 | consumption/production information).\r | |
433 | - Create an SPD file defining these modules and calling out their MSA files.\r | |
e3f236c8 | 434 | - add a new <Filename> element under <PackageList> into \r |
435 | Tools\Conf\FrameworkDatabase.db, using the relative path to workspace. \r | |
aa0bf4f4 | 436 | \r |
437 | --------------------------------------\r | |
438 | 4) Declare a new Protocol in a package: \r | |
439 | - This release requires manual editing of the SPD file, adding the protocol\r | |
440 | to the ProtocolDeclarations section of the file. \r | |
441 | - Add the Protocol .h file to the Include\Protocol directory.\r | |
64fcaead | 442 | - Add an <Entry> to the <ProtocolDeclarations> element in the \r |
443 | <PackageName>.spd file\r | |
aa0bf4f4 | 444 | * Each line contains Protocol base name then the global variable name and\r |
445 | then the hex value of the Protocol GUID.\r | |
446 | \r | |
64fcaead | 447 | Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD file):\r |
448 | <ProtocolDeclarations>\r | |
e3f236c8 | 449 | <Entry Name="Bds">\r |
450 | <C_Name>gEfiBdsArchProtocolGuid</C_Name>\r | |
451 | <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>\r | |
452 | <HelpText/>\r | |
453 | </Entry>\r | |
454 | <Entry Name="Cpu">\r | |
455 | <C_Name>gEfiCpuArchProtocolGuid</C_Name>\r | |
456 | <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>\r | |
457 | <HelpText/>\r | |
458 | </Entry>\r | |
459 | </ProtocolDeclarations>\r | |
aa0bf4f4 | 460 | \r |
461 | ---------------------------------\r | |
462 | 5) Declare a new PPI in a package:\r | |
463 | - This release requires manual editing of the SPD file\r | |
464 | - Add the PPI .h file to the Include\Ppi directory.\r | |
64fcaead | 465 | - Add an <Entry> to the package <PpiDeclarations> element in the \r |
466 | <PackageName>.spd file\r | |
aa0bf4f4 | 467 | * Each line contains PPI base name then the global variable name and then\r |
468 | the hex value of the PPI GUID.\r | |
469 | \r | |
64fcaead | 470 | Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):\r |
471 | <PpiDeclarations>\r | |
e3f236c8 | 472 | <Entry Name="BootInRecoveryMode">\r |
473 | <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>\r | |
474 | <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>\r | |
475 | <HelpText/>\r | |
64fcaead | 476 | </Entry>\r |
e3f236c8 | 477 | <Entry Name="CpuIo">\r |
478 | <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>\r | |
479 | <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>\r | |
480 | <HelpText/>\r | |
64fcaead | 481 | </Entry>\r |
482 | </PpiDeclarations>\r | |
483 | \r | |
aa0bf4f4 | 484 | ----------------------------------\r |
485 | 6) Declare a new GUID in a package:\r | |
486 | - This release requires manual editing of the SPD file to include the new\r | |
64fcaead | 487 | Guid. This is identical to adding a ProtocolDeclaration or PpiDeclaration\r |
488 | element as described above.\r | |
aa0bf4f4 | 489 | \r |
490 | --------------------------------------- \r | |
64fcaead | 491 | 7) Define a new PCD entry in a package:\r |
aa0bf4f4 | 492 | - This release requires manual editing of the SPD file to include the new\r |
64fcaead | 493 | PCD. New Pcd entries are added to the PcdDefinitions section of the\r |
494 | <PackageName>.spd file using the following example for the format:\r | |
495 | NOTE: The hex <Token> value must be unique.\r | |
496 | \r | |
497 | <PcdDefinitions>\r | |
498 | <PcdEntry ItemType="FIXED_AT_BUILD">\r | |
499 | <C_Name>PcdMaximumUnicodeStringLength</C_Name>\r | |
500 | <Token>0x00000001</Token>\r | |
501 | <DatumType>UINT32</DatumType>\r | |
502 | <DefaultValue>1000000</DefaultValue>\r | |
503 | </PcdEntry>\r | |
504 | </PcdDefinition>\r | |
aa0bf4f4 | 505 | \r |
506 | ------------------------------\r | |
507 | 8) Declare a new Library Class:\r | |
508 | - This release requires manual editing of the SPD file to include the new\r | |
64fcaead | 509 | Library Class. New Library Class entries are added to the \r |
510 | LibraryClassDeclarations seection of the <PackageName>.spd file using\r | |
511 | the following example for the format:\r | |
512 | \r | |
513 | <LibraryClassDeclarations>\r | |
e3f236c8 | 514 | <LibraryClass Name="BaseLib">\r |
64fcaead | 515 | <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>\r |
e3f236c8 | 516 | <HelpText/>\r |
517 | </LibraryClass>\r | |
518 | <LibraryClass Name="BaseMemoryLib">\r | |
519 | <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>\r | |
520 | <HelpText/>\r | |
521 | </LibraryClass>\r | |
64fcaead | 522 | </LibraryClassDeclarations>\r |
aa0bf4f4 | 523 | \r |
aa0bf4f4 | 524 | =======================================================\r |
525 | Notes:\r | |
526 | ------\r | |
13421853 | 527 | The EDK II represents significant changes in the structure of the EDK.\r |
aa0bf4f4 | 528 | Therefore it is very difficult to isolate all of the changes of this version of\r |
529 | the EDK with the previous (EDK 1.0) version.\r | |
530 | \r | |
531 | Of particular note:\r | |
532 | \r | |
13421853 | 533 | 1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.\r |
aa0bf4f4 | 534 | These libraries are provided to make Memory Reference Code (MRC) development\r |
535 | easier.\r | |
1465cc8b | 536 | 2) The MDE Libraries - The MDE libraries represent significant changes in source\r |
aa0bf4f4 | 537 | (with only limited changes in functionality.) These new libraries conform\r |
538 | to the "MDE Library Specification". \r | |
539 | 3) The Fat Binary and the EDK Shell Binary Packages are functionally identical\r | |
540 | to the EDK 1.0 version.\r | |
541 | 4) The EDK tools directory has been expanded to include more tools and more\r | |
542 | tool functionality.\r | |
543 | 5) The EDK NT32 section has been ported to the new build process, but\r | |
544 | functionally remains the same as the EDK 1.0 version.\r | |
13421853 | 545 | 6) The Application "HelloWorld" has been ported to EDK II as well.\r |
aa0bf4f4 | 546 | \r |
547 | =======================================================\r | |
548 | Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4718, no\r | |
549 | virus detected.\r | |
550 | \r |