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