登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』UEFI原理与编程

書城自編碼: 2508837
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: 戴正华
國際書號(ISBN): 9787111487296
出版社: 机械工业出版社
出版日期: 2015-02-01
版次: 1

書度/開本: 16开 釘裝: 平装

售價:HK$ 164.7

 

** 我創建的書架 **
未登入.


新書推薦:
阿富汗史:骑驰在风暴中的国度
《 阿富汗史:骑驰在风暴中的国度 》

售價:HK$ 117.6
背影2
《 背影2 》

售價:HK$ 82.8
她的罪名
《 她的罪名 》

售價:HK$ 59.8
巨变与突围:碰撞中的清帝国:1644—1840
《 巨变与突围:碰撞中的清帝国:1644—1840 》

售價:HK$ 93.6
变态心理揭秘
《 变态心理揭秘 》

售價:HK$ 59.8
非洲三万里(2024版)
《 非洲三万里(2024版) 》

售價:HK$ 81.6
不思而美:一个人的心灵简史
《 不思而美:一个人的心灵简史 》

售價:HK$ 69.6
减压七处方
《 减压七处方 》

售價:HK$ 67.2

 

建議一齊購買:

+

HK$ 183.2
《 代码本色:用编程模拟自然系统 》
+

HK$ 179.4
《 计算的本质:深入剖析程序和计算机 》
+

HK$ 117.0
《 Xen虚拟化技术完全导读 》
+

HK$ 233.1
《 Linux内核精髓:精通Linux内核必会的75个绝技(一线内核技术专家经验和智慧结晶,深刻解读Linux内核的资源管理、文件系统、网络、虚拟化等核心主题) 》
編輯推薦:
《UEFI原理与编程》
国内首部UEFI专著,资深UEFI专家兼布道者撰写,英特尔中国研究院院长吴甘沙及大数据和数据经济实验室研究总监周鑫联袂推荐;

以实战为导向,全面介绍UEFI的使用、深入剖析UEFI的原理,为开发UEFI应用和驱动程序提供了翔实的指导。

更多精彩,点击进入华章品牌店查阅
內容簡介:
作为操作系统与硬件之间的连接桥梁,BIOS“统治”了计算机系统20余年,在整个计算机系统中扮演着非常重要的角色。近些年来,随着计算机硬件技术的快速发展,以及进入云计算和大数据时代以后,应用对计算机性能和计算能力的要求不断提升,BIOS因为设计上的先天缺陷,已经越来越不能满足需求,存在开发效率低、性能低、功能扩展性差、升级慢、安全性差等多方面的弊端。UEFI很好地解决了这些问题,逐渐成为BIOS的替代品。
《UEFI原理与编程》是国内第一本关于UEFI的专著,对UEFI的使用、原理和开发做了细致而深入的讲解,对广大研究、使用和从事UEFI开发的读者来说,有着重要的意义,显得格外珍贵!
《UEFI原理与编程》以实战为导向,面向UEFI的使用者和开发者,首先细致地介绍了UEFI的系统组成、启动过程、优点,以及各种系统中的开发环境搭建;然后深入剖析了UEFI的工作原理,包括UEFI工程模块、各种协议、基础服务、事件、硬盘和文件系统等内容;最后讲解了UEFI的开发,涉及UEFI服务的开发、UEFI驱动的开发、多任务应用的开发、网络应用的开发、GUI应用的开发,以及如何用C++和C标准库开发UEFI应用,等等。
關於作者:
戴正华 UEFI领域的资深专家、先驱者和布道者,致力于UEFI技术的研究、实践和推广,积累了丰富的经验。曾就职于斯福泰克和英特尔并行计算中心, 在英特尔中国研究院参与Ct(Arbb)编译器的开发及推广工作。目前就职于CryptoMill,从事信息保护方面的开发。
目錄

前言
第1章 UEFI概述
1.1 BIOS的前世今生
1.1.1 BIOS在计算机系统中的作用
1.1.2 BIOS缺点
1.2 初识UEFI
1.2.1 UEFI系统组成
1.2.2 UEFI的优点
1.2.3 UEFI系统的启动过程
1.3 本章小结
第2章 UEFI 开发环境搭建
2.1 配置Windows开发环境
2.1.1 安装所需开发工具
2.1.2 配置EDK2开发环境
2.1.3 编译UEFI模拟器和UEFI工程
2.1.4 运行模拟器
2.2 配置Linux 开发环境
2.2.1 安装所需开发工具
2.2.2 配置EDK2开发环境
2.2.3 编译UEFI模拟器和UEFI工程
2.2.4 运行模拟器
2.3 OVMF的制作和使用
2.4 UEFI的启动
2.5 本章小结
第3章 UEFI工程模块文件
3.1 标准应用程序工程模块
3.1.1 入口函数
3.1.2 工程文件
3.1.3 编译和运行
3.1.4 标准应用程序的加载过程
3.2 其他类型工程模块
3.2.1 Shell应用程序工程模块
3.2.2 使用main函数的应用程序工程模块
3.2.3 库模块
3.2.4 UEFI驱动模块
3.2.5 模块工程文件小结
3.3 包及.dsc、.dec、.fdf文件
3.3.1 .dsc文件
3.3.2 .dec文件
3.4 调试UEFI
3.5 本章小结
第4章 UEFI中的Protocol
4.1 Protocol 在UEFI内核中的表示
4.2 如何使用Protocol服务
4.2.1 OpenProtocol服务
4.2.2 HandleProtocol服务
4.2.3 LocateProtocol服务
4.2.4 LocateHandleBuffer服务
4.2.5 其他一些使用Protocol的服务
4.2.6 CloseProtocol服务
4.3 Protocol服务示例
4.4 本章小结
第5章 UEFI的基础服务
5.1 系统表
5.1.1 系统表的构成
5.1.2 使用系统表
5.2 启动服务
5.2.1 启动服务的构成
5.2.2 启动服务的生存期
5.3 运行时服务
5.4 本章小结
第6章 事件
6.1 事件函数
6.1.1 等待事件的服务WaitForEvent
6.1.2 生成事件的服务CreateEvent
6.1.3 CreateEventEx服务
6.1.4 事件相关的其他函数
6.2 定时器事件
6.3 任务优先级
6.3.1 提升和恢复任务优先级
6.3.2 UEFI中的时钟中断
6.3.3 UEFI事件Notif?ication函数的派发
6.4 鼠标和键盘事件示例
6.5 本章小结
第7章 硬盘和文件系统
7.1 GPT硬盘
7.1.1 基于MBR分区的传统硬盘
7.1.2 GPT硬盘详解
7.2 设备路径
7.3 硬盘相关的Protocol
7.3.1 BlockIo解析
7.3.2 BlockIo2解析
7.3.3 DiskIo解析
7.3.4 DiskIo2解析
7.3.5 PassThrough解析
7.4 文件系统
7.5 文件操作
7.5.1 打开文件
7.5.2 读文件
7.5.3 写文件
7.5.4 关闭文件(句柄)
7.5.5 其他文件操作
7.5.6 异步文件操作
7.5.7 EFI_SHELL_PROTOCOL中的文件操作
7.6 本章小结
第8章 开发UEFI服务
8.1 Protocol服务接口设计
8.2 Protocol服务的实现
8.3 服务型驱动的框架
8.4 ffmpeg的移植与编译
8.4.1 libavcodec的建立和移植
8.4.2 其他库的建立与移植
8.4.3 在驱动型服务中使用StdLib
8.5 使用Protocol服务
8.6 本章小结
第9章 开发UEFI驱动
9.1 UEFI驱动模型
9.1.1 EFI Driver Binding Protocol的构成
9.1.2 EFI Component Name Protocol的作用和构成
9.2 编写设备驱动的步骤
9.3 PCI设备驱动基础
9.4 AC97控制器芯片的控制接口
9.5 AC97驱动
9.5.1 AC97驱动的驱动服务EFI_AUDIO_PROTOCOL
9.5.2 AC97驱动的框架部分
9.5.3 AC97驱动实验
9.6 本章小结
第10章 用C++开发UEFI应用
10.1 从编译器角度看C与C++的差异
10.2 在EDK2中支持C++
10.2.1 使EDK2支持C++基本特性
10.2.2 在Windows系统下的程序启动过程
10.2.3 在Windows系统下支持全局构造和析构
10.2.4 在Linux系统下的程序启动过程
10.2.5 在Linux系统下支持全局构造和析构
10.2.6 支持new和delete
10.2.7 支持STL
10.3 GcppPkg概览
10.4 测试GcppPkg
10.5 本章小结
第11章 GUI基础
11.1 字符串
11.1.1 字符串函数
11.1.2 字符串资源
11.1.3 管理字符串资源
11.2 管理语言
11.3 包列表
11.4 图形界面显示
11.4.1 显示模式
11.4.2 Block Transfer(Blt)传输图像
11.4.3 在图形界面下显示字符串
11.5 用SimpleFont显示中文
11.5.1  SimpleFont 格式
11.5.2 如何生成字体文件
11.5.3 如何注册字体文件
11.6 开发SimpleFont字库程序
11.7 字体Font
11.7.1 Font的格式
11.7.2 字体包的格式
11.7.3 为什么Font性能高于SimpleFont
11.8 本章小结
第12章 GUI应用程序
12.1 UEFI事件处理
12.1.1 键盘事件
12.1.2 鼠标事件
12.1.3 定时器事件
12.1.4 UI事件服务类
12.2 事件处理框架
12.3 鼠标与控件的绘制
12.3.1 鼠标的绘制
12.3.2 控件的绘制
12.4 控件系统包GUIPkg
12.5 简单视频播放器的实现
12.6 本章小结
第13章 深入了解多任务
13.1 多处理器服务
13.1.1 EFI_MP_SERVICES_PROTOCOL功能及用法
13.1.2 启动AP的过程
13.2 内联汇编基础和寄存器上下文的保存与恢复
13.2.1 内联汇编基础
13.2.2 寄存器上下文的保存与恢复
13.3 多线程
13.3.1 生成线程
13.3.2 调度线程
13.3.3 等待线程结束
13.3.4 SimpleThread服务
13.4 本章小结
第14章 网络应用开发
14.1 在UEFI中使用网络
14.2 使用EFI_TCP4_PROTOCOL
14.2.1 生成Socket对象
14.2.2 连接
14.2.3 传输数据
14.2.4 关闭Socket
14.2.5 测试Socket
14.3 本章小结
第15章 使用C标准库
15.1 为什么使用C标准库函数
15.2 实现简单的Std函数
15.2.1 简单标准库函数包sstdPkg
15.2.2 使用sstdPkg
15.3 使用EDK2的StdLib
15.3.1 main函数工程
15.3.2 非main函数工程
15.4 本章小结
第16章 Shell及常用Shell命令
16.1 Shell的编译与执行
16.2 Shell服务
16.3 Shell脚本
16.3.1 Shell脚本语法简介
16.3.2 自动运行指定应用程序
16.4 Shell内置命令
16.4.1 调试设备的相关命令
16.4.2 驱动相关命令
16.4.3 网络相关命令
16.5 本章小结
附录A UEFI常用术语及简略语
附录B RFC 4646常用语言列表
附录C 状态值
附录D 参考资料
內容試閱
第1章
UEFI概述
从我们按下开机键到进入操作系统,对用户来说是一个等待的过程,而对计算机来说是一个复杂的过程。在BIOS时代,这个过程重复了一年又一年,操作系统已经从枯燥的文本界面演化到丰富多彩的图形界面,BIOS却一直延续着枯燥的过程,BIOS设置也一直是单调的蓝底白字格式。BIOS的坚持出于两个原因:外因是BIOS基本能满足市场需求,内因是BIOS的设计使得BIOS的升级和扩增变得非常困难。随着64位CPU逐渐取代32位CPU,BIOS越来越不能满足市场的需求,这使得UEFI作为BIOS的替代者,逐渐开始取代BIOS的地位。
1.1 BIOS的前世今生
BIOS诞生于1975年的CPM计算机,诞生之初,也曾是一种先进的技术,并且是系统中相当重要的一个部分。随着IBM PC兼容机的流行,BIOS也逐渐发展起来。它“统治”了计算机系统20多年的时间,在这段时间里,CPU每18个月性能提升一倍。计算机软硬件都已经繁衍了无数代,BIOS诞生之初与之配套的8位CPU和DOS系统都已经退出历史舞台,而BIOS依然顽强地存在于计算机中。
1.1.1 BIOS在计算机系统中的作用
BIOS全称为“基本输入输出系统”,它是存储在主板ROM里的一组程序代码,这些代码包括:
加电自检程序,用于开机时对硬件的检测。
系统初始化代码,包括硬件设备的初始化、创建BIOS中断向量等。
基本的外围IO处理的子程序代码。
CMOS设置程序。
BIOS程序运行在16位实模式下,实模式下最大的寻址范围是1MB,0x0C0000~0x0FFFFF保留给BIOS使用。开机后,CPU跳到0x0FFFF0处执行,一般这里是一条跳转指令,跳到真正的BIOS入口处执行。BIOS代码首先做的是“加电自检”(Power On Self Test,POST),主要是检测关机设备是否正常工作,设备设置是否与CMOS中的设置一致。如果发现硬件错误,则通过喇叭报警。POST检测通过后初始化显示设备并显示显卡信息,接着初始化其他设备。设备初始化完毕后开始检查CPU和内存并显示检测结果。内存检测通过以后开始检测标准设备,例如硬盘、光驱、串口设备、并口设备等。然后检测即插即用设备,并为这些设备分配中断号、IO端口和DMA通道等资源。如果硬件配置发生变化,那么这些变化的配置将更新到CMOS中。随后,根据配置的启动顺序从设备启动,将启动设备主引导记录的启动代码通过BIOS中断读入内存,然后控制权交到引导程序手中,最终引导进入操作系统。
1.1.2 BIOS缺点
随着CPU及其他硬件设备的革新,BIOS逐渐成为计算机系统发展的瓶颈,主要体现在如下几个方面:
1)开发效率低:大部分BIOS代码使用汇编开发,开发效率不言而喻。汇编开发的另一个缺点是使得代码与设备的耦合程度太高,代码受硬件变化的影响大。
2)性能差:BIOS基本输入输出服务需要通过中断来完成,开销大,并且BIOS没有提供异步工作模式,大量的时间消耗在等待上。
3)功能扩展性差,升级缓慢:BIOS代码采用静态链接,增加硬件功能时,必须将16位代码放置在0x0C0000~0x0DFFFF区间,初始化时将其设置为约定的中断处理程序。而且BIOS没有提供动态加载设备驱动的方案。
4)安全性:BIOS运行过程中对可执行代码没有安全方面的考虑。
5)不支持从硬盘2TB以上的地址引导:受限于BIOS硬盘的寻址方式,BIOS硬盘采用32位地址,因而引导扇区的最大逻辑块地址是232(换算成字节地址,即232×512=2TB)。
1.2 初识UEFI
UEFI(Unif?ied Extensible Firmware Interface,统一可扩展固件接口)定义了操作系统和平台固件之间的接口,它是UEFI Forum发布的一种标准。它只是一种标准,没有提供实现。其实现由其他公司或开源组织提供,例如英特尔公司提供的开源UEFI实现TianoCore和Phoenix公司的SecureCore Tiano。UEFI实现一般可分为两部分:
平台初始化(遵循Platform Initialization标准,同样由UEFI Forum发布)。
固件-操作系统接口。
UEFI发端于20世纪90年代中期的安腾系统。相对于当时流行的32位IA32系统,安腾是一种全新的64位系统,BIOS的限制对这种64位系统变得不可接受(BIOS也正是随着32位系统被64位系统取代而逐渐退出市场的)。因为BIOS在64位系统上的限制,1998年英特尔公司发起了Intel Boot Initiative项目,后来更名为EFI(Extensible Firmware Interface)。2003年英特尔公司的安腾CPU计划遭到AMD公司的x86_64 CPU顽强阻击,x86_64 CPU时代到来,市场更愿意接受渐进式的变化,英特尔公司也开始发布兼容32位系统的x86_64 CPU。安腾虽然没有像预期那样独占市场,EFI却显示出了它的价值。2005年,英特尔公司联合微软、AMD、联想等11家公司成立了Unif?ied EFI Forum,负责制定统一的EFI标准。第一个UEFI标准——UEFI 2.0在2006年1月发布。目前最新的UEFI标准是2013年发布的UEFI 2.4。
1.2.1 UEFI系统组成
UEFI提供给操作系统的接口包括启动服务(Boot Services,BS)和运行时服务(Runtime Service,RT)以及隐藏在BS之后的丰富的Protocol。BS和RT以表的形式(C语言中的结构体)存在。UEFI驱动和服务以Protocol的形式通过BS提供给操作系统。
图1-1展示了基于EFI的计算机系统的组成。
图1?1 EFI系统组成
从操作系统加载器(OS Loader)被加载,到OS Loader执行ExitBootServices的这段时间,是从UEFI环境向操作系统过渡的过程。在这个过程中,OS Loader可以通过BS和RT使用UEFI提供的服务,将计算机系统资源逐渐转移到自己手中,这个过程称为TSL(Transient System Load)。
当OS Loader完全掌握了计算机系统资源时,BS也就完成了它的使命。OS Loader调用ExitBootServices结束BS并回收BS占用的资源,之后计算机系统进入UEFI Runtime阶段。在Runtime阶段只有运行时服务继续为OS提供服务,BS已经从计算机系统中销毁。
在TSL阶段,系统资源通过BS管理,BS提供的服务如下。
1)事件服务:事件是异步操作的基础。有了事件的支持,才可以在UEFI系统内执行并发操作。
2)内存管理:主要提供内存的分配与释放服务,管理系统内存映射。
3)Protocol管理:提供了安装Protocol与卸载Protocol的服务,以及注册Protocol通知函数(该函数在Protocol安装时调用)的服务。
4)Protocol使用类服务:包括Protocol的打开与关闭,查找支持Protocol的控制器。例如要读写某个PCI设备的寄存器,可以通过OpenProtocol服务打开这个设备上的PciIo Protocol,用PciIo-Io.Read服务可以读取这个设备上的寄存器。
5)驱动管理:包括用于将驱动安装到控制器的connect服务,以及将驱动从控制器上卸载的disconnect服务。例如,启动时,如果我们需要网络支持,则可以通过loadImage将驱动加载到内存,然后通过connect服务将驱动安装到设备。
6)Image管理:此类服务包括加载、卸载、启动和退出UEFI应用程序或驱动。
7)ExitBootServices:用于结束启动服务。
RT提供的服务主要包括如下几个方面。
1)时间服务:读取设定系统时间。读取设定系统从睡眠中唤醒的时间。
2)读写UEFI系统变量:读取设置系统变量,例如BootOrder用于指定启动项顺序。通过这些系统变量可以保存系统配置。
3)虚拟内存服务:将物理地址转换为虚拟地址。
4)其他服务:包括重启系统的ResetSystem,获取系统提供的下一个单调单增值等。
1.2.2 UEFI的优点
UEFI能迅速取代BIOS,得益于UEFI相对BIOS的几大优势。
(1)UEFI的开发效率
BIOS开发一般采用汇编语言,代码多是硬件相关的代码。而在UEFI中,绝大部分代码采用C语言编写,UEFI应用程序和驱动甚至可以使用C++编写。UEFI通过固件-操作系统接口(BS和RT服务)为OS和OS加载器屏蔽了底层硬件细节,使得UEFI上层应用可以方便重用。
(2)UEFI系统的可扩展性
UEFI系统的可扩展性体现在两个方面:一是驱动的模块化设计;二是软硬件升级的兼容性。
大部分硬件的初始化通过UEFI驱动实现。每个驱动是一个独立的模块,可以包含在固件中,也可以放在设备上,运行时根据需要动态加载。
UEFI中每个表、每个Protocol(包括驱动)都有版本号,这使得系统的平滑升级变得简单。
(3)UEFI系统的性能
相比BIOS,UEFI有了很大的性能提升,从启动到进入操作系统的时间大大缩短。性能的提高源于以下几个方面:
1)UEFI提供了异步操作。基于事件的异步操作,提高了CPU利用率,减少了总的等待时间。
2)UEFI舍弃了中断这种比较耗时的操作外部设备的方式,仅仅保留了时钟中断。外部设备的操作采用“事件+异步操作”完成。
3)可伸缩的遍历设备的方式,启动时可以仅仅遍历启动所需的设备,从而加速系统启动。
(4)UEFI系统的安全性
UEFI的一个重要突破就是其安全方面的考虑。当系统的安全启动功能被打开后,UEFI在执行应用程序和驱动前会先检测程序和驱动的证书,仅当证书被信任时才会执行这个应用程序或驱动。UEFI应用程序和驱动采用PECOFF格式,其签名放在签名块中。
1.2.3 UEFI系统的启动过程
UEFI系统的启动遵循UEFI平台初始化(PlatformInitialization)标准。UEFI系统从加电到关机可分为7个阶段:
SEC(安全验证)→PEI(EFI前期初始化)→DXE(驱动执行环境)
→BDS(启动设备选择)→TSL(操作系统加载前期)
→RT(Run Time)
→AL(系统灾难恢复期)
图1-2展示了UEFI系统从加电到关机的7个阶段(以图中竖线为界)。
前三个阶段是UEFI初始化阶段,DXE阶段结束后UEFI环境已经准备完毕。
BDS和TSL是操作系统加载器作为UEFI应用程序运行的阶段。
操作系统加载器调用ExitBootServices服务后进入RT阶段,RT阶段包括操作系统加载器后期和操作系统运行期。
当系统硬件或操作系统出现严重错误不能继续正常运行时,固件会尝试修复错误,这时系统进入AL期。但PI规范和UEFI规范都没有规定AL期的行为。“?”号表示其行为由系统供应商自行定义。
……

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.