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