快乐游泳

时间:2018-09-16 20:08:36来源:杰瑞文章网点击:作文字数:700字
1. EDKII介绍 本文档提供了有关下载,配置和构建EDKII项目以及运行EDKII仿真环境的详细说明。 1.1.概述 本章介绍EDKII项目引入的功能,并阐述了几个关键特性所起的作用。阅读完本章,读者将对EDKII有个基本的了解。 EDKII引入的特性包括: 最小分配单元 EDKII引入了“Packages”的概念。这是代码发布的基本单位。与EDK相比,EDK II用户可以发布和使用“Packages”,而不是使用“Whole Source Tree”。 相同功能的不同实现 EDKII引入了“Library Class/Library Instance”的概念,“Library Class”是一组用于常见的支持例程的标准接口。“Library Instance”提供了这些接口的具体实现。平台集成商可以根据不同的应用场景选择不同的实现。 统一的配置接口 平台配置数据库(PCD)是一种为模块开发者提供统一接口的机制,用于提取固件的编译时或运行时所确定的外部输入信息。该机制标准化了平台和模块设置暴露的问题,可以促进平台移植。 跨结构和交叉编译的能力 EDKII源码支持各种架构(如IA32、X64、IA64)以及各种工具链(如Microsoft VC、GNU GCC和Intel ICC)。为了支持这些功能,EDKII为库中的架构相关或编译器相关的功能提供了特定的实现。 已有模块的兼容性 EDKII提供了trunk驱动程序,以解决在主要由EDKII模块组成的平台中使用已有的EDK模块的二进制兼容性问题。 重定义基础API(即模块化开发环境库) 在EDKII中,有很多API可以被模块化开发者重新定义和增加,如PCI库、I/O库和Print库等。 增强的构建系统 其基础架构基于Python,独立于操作系统。它公开几个配置文件,用户可以用它来选择各种工具链,甚至是构建规则或生成目标。 EDKII提供EDK模块所需的定义和库接口,因此EDK模块可以被集成到EDKII中。 1.1.1. UEFI & PI 统一可扩展固件接口(UEFI)规范定义了操作系统和平台固件之间的一组标准接口。UEFI的前身是Intel开发的可扩展固件接口(EFI)。Intel后来将EFI的所有权交给了一个非营利性组织UEFI论坛,该论坛现在负责UEFI的开发和推广工作。 UEFI平台初始化规范(PI)是UEFI论坛和UEFI一起定制的一套规范。PI的前身是Intel面向EFI的平台创新框架。UEFI/EFI指定操作系统到固件的接口,PI/Framework规范指定了构建固件的结构。 1.1.2. EDK & EDKII EFI开发工具包(EDK)是Framework Core Interface Specification定义的开源框架版本,以及一组示例驱动程序,并为Nt32、Unix和DUET平台实现了三个目标样本。除了开源框架基础代码之外,EDK还允许开发、调试和测试EFI和DXE驱动程序,OptionROM和pre-Boot应用程序。 为了解决使用EDK所暴露的问题,Intel启动了现在称为EDKII的重构计划。它着重于如何让客户轻松编写特定类型的模块,将模块移植到平台上或重新定制。以下部分详细介绍了EDKII引入的几个关键概念,如包、库类/库实例和PCD等。 1.1.2.1. Package 没有整个源码树就不能编译EDK。并且,最小分配单元为整个源码树。为了解决这个问题,EDKII推出了Package的概念。使用这个,可以不需要整个源码树。 Package是最小的分配单位,同时在一个项目中提供一个自然的分配体系,为不同的目的服务。例如,从硬件的角度看,开发者可以将CPU/芯片组/平台相关的定义和驱动程序单独分成三个package,以便用户发布和重用。开发人员也可以将独立于各个平台的所有模块放在一个package中。这样,当平台移植时,开发者只需要关注平台相关的代码。 EDKII提供了一整套Package,这部分将在下面介绍。由于某些软件包并不是构建指定模块或固件所必须的,固件开发人员需要选择相关软件包来完成构建或发布。此外,开发人员还可以基于EDKII代码库创建和发布自己的软件包。欲了解更多信息,请参阅EDKII Package规格文档。 1.1.2.2. Library class/Library Instance 因为在固件开发中可能存在相同的功能需求需要不同的实现,如: l 使用C代码提供跨体系结构的功能,而不是使用汇编代码来提供更好的性能 l 使用I/O端口执行PCI配置周期,而不是使用内存I/O指令 Library class是一组标准的API定义,用于提供某些功能。模块编写者可以直接使用它们进行编程。Library Instance提供这些API的实现。Library class和Library Instance之间的关系是一对多的关系。一个Library class可能有多个实现,即多个Library Instance。一个模块只依赖于一个Library class而不是具体的实现,所以相同的模块源代码可以很容易地配置为与不同的Library Instance链接以满足各种需求。EDKII提供了很多Library class/Library Instance,以方便用户在MdePkg中进行开发。例如,MdePkg提供一个名为BaseMemoryLib的Library class,其中有许多与内存操作相关的API。对于这个Library class,有多个Library Instance,如: 一个用C代码实现跨平台 一个用ASM实现以提高内存操作的效率 平台集成商可以选择性地使用各种实现。 1.1.2.3. PCD PCD是模块用于从外部来源提取信息和控制程序行为的统一机制。信息可以来自许多不同的地方。信息可能是: 编译时 生成image时 运行时 模块编写者不需要知道信息来自哪里,因为平台开发人员可以自行选择。模块的源代码可以保持不变以支持多个平台,因为所有的外部输入信息都是由同一的PCD接口提取的。 例如,PCD“PcdDebugPrintErrorLevel”用于控制调试打印级别。模块开发人员只需调用PCD接口PcdGet32(PcdDebugPrintErrorLevel)来提取其值。PCD的值由模块构建中的平台配置决定。各种值可能导致不同的行为,例如启用或禁用特定调试打印语句的显示。 1.2.相关信息 1.2.1. 有用的文章和信息源 Unified Extensible Firmware Interface Specification Version 2.1, The Unified EFI Forum, Inc, 2007, http://www.uefi.org . Unified Extensible Firmware Interface Specification Version 2.1, The Unified EFI Forum, Inc, 2007, http://www.uefi.org . Intel® Platform Innovation Framework for EFI Specifications, Intel, 2006, http://www.intel.com/technology/framework/ . 1.2.1.1. TianoCore文档 http://sourceforge.net/projects/edk2/files/ EDK II INF File Specification, Version 1.2, Intel, 2009. EDK II DSC File Specification, Version 1.2, Intel, 2009. EDK II DEC File Specification, Version 1.2, Intel, 2009. EDK II FDF (Flash Description File) File Specification, Version 1,2, Intel, 2009. EDK II Build Specification, Version 1.2, Intel, 2009. 1.3.术语 1.4.读者
作文投稿

快乐游泳一文由杰瑞文章网免费提供,本站为公益性作文网站,此作文为网上收集或网友提供,版权归原作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!

杰瑞文章网友情提示:请不要直接抄作文用来交作业。你可以学习、借鉴、期待你写出更好的作文。

快乐游泳相关的作文:

说说你对这篇作文的看法吧

最新发表的关于快乐的作文

    SQL Error: select id,classid,ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard,eckuid,title,ftitle,newstime,titlepic,smalltext,writer,diggtop from ***_ecms_news where (classid='269') order by newstime desc limit 10

最受欢迎的关于快乐的作文

    SQL Error: select id,classid,ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard,eckuid,title,ftitle,newstime,titlepic,smalltext,writer,diggtop from ***_ecms_news where (classid='269') order by onclick desc limit 10