[套装书]UEFI编程实践+UEFI原理与编程(2册)[POD]

作者
罗冰 等
丛书名
出版社
机械工业出版社
ISBN
9782112161727
简要
简介
内容简介书籍计算机书籍 ---------------------------8083414 - UEFI编程实践--------------------------- 本书偏重于实战,面向UEFI的爱好者和使用者。全书共12章,大致可以分为三部分。 1. 第1部分为介绍UEFI的基础框架,搭建开发和调试环境,并熟悉代码框架的搭建和编译方法。让读者能把握整体框架,并能为后续的实践做好准备; 2. 第2部分详细讲解UEFI如何访问外设、构建GUI、编写Option ROM等,并辅以实际的项目实例,加深对UEFI编程的理解。所提供的项目极具实践价值,基本上可以直接用在实际项目中; 3. 第3部分介绍目前国产计算机上UEFI的发展情况,详细讲解如何在国产计算机上进行UEFI项目的开发,包括搭建开发环境、测试方法等。 通过阅读本书,读者可以清晰地了解UEFI的编程方法,学习到如何以UEFI的方式去思考计算机的底层架构。书中提供了大量的实例训练,大部分来自作者曾经实战过的商业项目,极具参考价值,能有效帮助读者快速构建自己的UEFI相关产品。 ---------------------------3770867 - UEFI原理与编程[按需印刷]--------------------------- 这是国内首部UEFI专著,由资深UEFI专家兼布道者撰写,英特尔中国研究院院长吴甘沙强烈推荐! 本书以实战为导向,面向UEFI的使用者和开发者,首先细致地介绍了UEFI的系统组成、启动过程、优点,以及各种系统中的开发环境搭建;然后深入剖析了UEFI的工作原理,包括UEFIT程模块、各种协议、基础服务、事件、硬盘和文件系统等内容;最后讲解了UEFI的开发,涉及UEFI服务的开发、 UEFI驱动的开发、多任务应用的开发、网络应用的开发、GUI应用的开发,以及如何用 C++和C标准库开发UEFI应用,等等。 .
目录
[套装书具体书目]
3770867 - UEFI原理与编程[按需印刷] - 9787111487296 - 机械工业出版社 - 定价 89
8083414 - UEFI编程实践 - 9787111688853 - 机械工业出版社 - 定价 119



---------------------------8083414 - UEFI编程实践---------------------------


序一
序二
前言
第1章 UEFI的世界 1
1.1 Legacy BIOS1
1.1.1 Legacy BIOS的启动过程2
1.1.2 Legacy BIOS的不足之处4
1.2 UEFI BIOS6
1.2.1 UEFI标准概述6
1.2.2 UEFI BIOS的优点8
1.2.3 UEFI BIOS的启动过程9
1.2.4 国产计算机与UEFI13
1.3 本章小结15
第2章 UEFI开发和调试环境搭建16
2.1 搭建Windows下的UEFI开发环境17
2.1.1 安装开发工具17
2.1.2 配置开发环境18
2.1.3 编译UEFI模拟器和UEFI程序20
2.1.4 使用模拟器运行UEFI程序22
2.2 Windows下调试UEFI程序24
2.2.1 使用Visual Studio调试UEFI程序24
2.2.2 使用WINDBG调试UEFI程序27
2.3 搭建Linux下的UEFI开发环境30
2.3.1 安装开发工具31
2.3.2 配置开发环境32
2.3.3 编译UEFI模拟器和UEFI程序32
2.3.4 使用模拟器运行UEFI程序33
2.4 Linux下调试UEFI程序34
2.4.1 使用GDB调试UEFI程序34
2.4.2 使用Intel UDK Debugger Tool和GDB调试UEFI程序37
2.5 制作UEFI启动盘40
2.6 本章小结41
第3章 构建UEFI应用42
3.1 模块和包概述42
3.2 搭建UEFI工程模块44
3.2.1 DSC文件44
3.2.2 INF文件50
3.2.3 3种入口函数的UEFI应用55
3.2.4 库模块的编写61
3.2.5 其他工程文件63
3.3 搭建UEFI包72
3.3.1 包的DSC和DEC文件72
3.3.2 添加并编译模块73
3.4 用C++编写UEFI应用74
3.4.1 支持基础功能75
3.4.2 支持全局类77
3.5 使用UEFI Protocol81
3.5.1 Protocol概述81
3.5.2 支持使用Protocol的函数 83
3.5.3 使用Protocol示例91
3.6 本章小结93
第4章 图形与汉字显示94
4.1 UEFI图形显示95
4.1.1 图形显示的Protocol 95
4.1.2 图形显示基本函数的实现101
4.2 UEFI汉字显示—写像素点的方式107
4.2.1 点阵字的显示与字库提取108
4.2.2 写像素点的汉字显示110
4.3 UEFI汉字显示—HII方式115
4.3.1 HII字体与字库提取116
4.3.2 HII汉字显示119
4.3.3 HII字符串127
4.4 本章小结132
第5章 图像显示及特效133
5.1 UEFI图像显示—写屏方式134
5.1.1 BMP图像显示 134
5.1.2 PCX图像显示140
5.1.3 JPEG图像显示145
5.2 UEFI图像显示—HII方式150
5.2.1 图像处理Protocol150
5.2.2 HII图像显示153
5.3 图像显示的特效 157
5.3.1 图像块处理基本函数的实现157
5.3.2 颜色变换特效161
5.3.3 镜像显示165
5.3.4 图像块显示与清屏166
5.4 本章小结170
第6章 GUI开发与移植172
6.1 支持GUI的基础服务 172
6.1.1 UEFI事件处理 173
6.1.2 UEFI键盘处理179
6.1.3 UEFI鼠标处理 185
6.1.4 构建GUI框架186
6.2 开源GUI框架191
6.2.1 GuiLite介绍191
6.2.2 使用GuiLite编程 195
6.3 GUI框架的移植200
6.4 本章小结203
第7章 UEFI环境下访问外设205
7.1 访问PCI/PCIE设备205
7.1.1 与PCI/PCIE设备通信的机制206
7.1.2 支持访问PCI/PCIE设备的Protocol209
7.1.3 访问PCI/PCIE设备示例213
7.2 访问SMBus设备216
7.2.1 SMBus协议简介216
7.2.2 支持访问SMBus设备的Protocol218
7.2.3 访问SMBus设备示例220
7.3 访问串口设备223
7.3.1 串口协议简介223
7.3.2 支持访问串口设备的Protocol225
7.3.3 访问串口设备示例228
7.4 本章小结230
第8章 UEFI驱动与Option ROM232
8.1 服务型驱动233
8.1.1 安装与卸载Protocol233
8.1.2 构建服务型驱动236
8.1.3 访问示例Protocol242
8.2 UEFI驱动模型243
8.2.1 EFI Driver Binding Protocol 243
8.2.2 EFI Component Name Protocol247
8.2.3 完成驱动框架及其测试248
8.2.4 构建UEFI驱动及其测试程序251
8.2.5 测试UEFI驱动256
8.3 编写Option ROM258
8.3.1 PCI Option ROM简介258
8.3.2 编写UEFI Option ROM264
8.3.3 编译及测试Option ROM268
8.4 本章小结272
第9章 UEFI与USB273
9.1 USB规范简介274
9.1.1 USB通信原理276
9.1.2 USB描述符280
9.1.3 USB标准命令285
9.1.4 USB HID设备287
9.2 支持USB访问的Protocol292
9.2.1 EFI_USB2_HC_PROTOCOL292
9.2.2 EFI_USB_IO_PROTOCOL294
9.2.3 列举USB控制器和设备297
9.3 访问USB HID设备299
9.3.1 制作USB HID设备299
9.3.2 在UEFI下访问USB HID设备305
9.4 本章小结307
第10章 UEFI与网络309
10.1 准备UEFI网络测试环境311
10.1.1 搭建Nt32模拟器的网络环境311
10.1.2 在真实UEFI环境下使用网络313
10.1.3 在虚拟机UEFI环境下使用网络:VirtualBox314
10.1.4 在虚拟机UEFI环境下使用网络:QEMU314
10.1.5 IPv6网络测试环境搭建316
10.2 使用UEFI Protocol开发网络程序317
10.2.1 开发Windows的TCP4服务端程序318
10.2.2 开发UEFI的TCP4客户端程序323
10.3 使用StdLib的Socket接口开发网络程序334
10.3.1 使用Socket编写UEFI TCP4客户端程序334
10.3.2 开发Windows的TCP6服务端程序337
10.3.3 使用Socket编写UEFI TCP6客户端程序340
10.4 本章小结342
第11章 龙芯平台上开发UEFI程序343
11.1 龙芯平台概述343
11.1.1 龙芯产品介绍344
11.1.2 3A4000的CPU架构简介346
11.2 龙芯汇编语言348
11.2.1 安装Linux Lab349
11.2.2 龙芯汇编语言实验351
11.3 龙芯平台UEFI开发环境354
11.3.1 搭建龙芯平台UEFI开发环境355
11.3.2 编译示例工程356
11.4 本章小结357
第12章 飞腾平台上开发UEFI程序358
12.1 飞腾平台概述359
12.1.1 飞腾产品介绍359
12.1.2 FT-2000/4的CPU架构简介361
12.2 搭建飞腾平台UEFI开发环境363
12.2.1 准备EDK2环境364
12.2.2 使用Linux系统与gcc-arm365
12.2.3 使用Linux系统与Linaro UEFI工具367
12.3 飞腾平台的UEFI程序测试368
12.3.1 Windows系统下的UEFI测试环境369
12.3.2 Linux系统下的UEFI测试环境372
12.3.3 测试示例工程372
12.4 本章小结374
附录 UEFI Shell内置命令375



---------------------------3770867 - UEFI原理与编程[按需印刷]---------------------------


《UEFI原理与编程》

前 言
第1章 UEFI概述 1
1.1 BIOS的前世今生 1
1.1.1 BIOS在计算机系统中的作用 1
1.1.2 BIOS缺点 2
1.2 初识UEFI 2
1.2.1 UEFI系统组成 3
1.2.2 UEFI的优点 4
1.2.3 UEFI系统的启动过程 5
1.3 本章小结 12
第2章 UEFI 开发环境搭建 14
2.1 配置Windows开发环境 14
2.1.1 安装所需开发工具 15
2.1.2 配置EDK2开发环境 15
2.1.3 编译UEFI模拟器和UEFI工程 17
2.1.4 运行模拟器 19
2.2 配置Linux 开发环境 21
2.2.1 安装所需开发工具 22
2.2.2 配置EDK2开发环境 22
2.2.3 编译UEFI模拟器和UEFI工程 23
2.2.4 运行模拟器 24
2.3 OVMF的制作和使用 25
2.4 UEFI的启动 27
2.5 本章小结 28
第3章 UEFI工程模块文件 29
3.1 标准应用程序工程模块 30
3.1.1 入口函数 30
3.1.2 工程文件 31
3.1.3 编译和运行 37
3.1.4 标准应用程序的加载过程 37
3.2 其他类型工程模块 43
3.2.1 Shell应用程序工程模块 43
3.2.2 使用main函数的应用程序工程模块 46
3.2.3 库模块 47
3.2.4 UEFI驱动模块 49
3.2.5 模块工程文件小结 50
3.3 包及.dsc、.dec、.fdf文件 51
3.3.1 .dsc文件 51
3.3.2 .dec文件 56
3.4 调试UEFI 59
3.5 本章小结 61
第4章 UEFI中的Protocol 62
4.1 Protocol 在UEFI内核中的表示 64
4.2 如何使用Protocol服务 65
4.2.1 OpenProtocol服务 66
4.2.2 HandleProtocol服务 67
4.2.3 LocateProtocol服务 69
4.2.4 LocateHandleBuffer服务 69
4.2.5 其他一些使用Protocol的服务 71
4.2.6 CloseProtocol服务 72
4.3 Protocol服务示例 73
4.4 本章小结 75
第5章 UEFI的基础服务 76
5.1 系统表 76
5.1.1 系统表的构成 77
5.1.2 使用系统表 79
5.2 启动服务 82
5.2.1 启动服务的构成 82
5.2.2 启动服务的生存期 91
5.3 运行时服务 93
5.4 本章小结 102
第6章 事件 103
6.1 事件函数 104
6.1.1 等待事件的服务WaitForEvent 105
6.1.2 生成事件的服务CreateEvent 106
6.1.3 CreateEventEx服务 110
6.1.4 事件相关的其他函数 112
6.2 定时器事件 113
6.3 任务优先级 114
6.3.1 提升和恢复任务优先级 115
6.3.2 UEFI中的时钟中断 116
6.3.3 UEFI事件Notif?ication函数的派发 126
6.4 鼠标和键盘事件示例 127
6.5 本章小结 128
第7章 硬盘和文件系统 129
7.1 GPT硬盘 129
7.1.1 基于MBR分区的传统硬盘 129
7.1.2 GPT硬盘详解 130
7.2 设备路径 134
7.3 硬盘相关的Protocol 139
7.3.1 BlockIo解析 140
7.3.2 BlockIo2解析 142
7.3.3 DiskIo解析 146
7.3.4 DiskIo2解析 147
7.3.5 PassThrough解析 150
7.4 文件系统 152
7.5 文件操作 153
7.5.1 打开文件 154
7.5.2 读文件 156
7.5.3 写文件 159
7.5.4 关闭文件(句柄) 160
7.5.5 其他文件操作 160
7.5.6 异步文件操作 162
7.5.7 EFI_SHELL_PROTOCOL中的文件操作 166
7.6 本章小结 170
第8章 开发UEFI服务 171
8.1 Protocol服务接口设计 172
8.2 Protocol服务的实现 174
8.3 服务型驱动的框架 178
8.4 ffmpeg的移植与编译 179
8.4.1 libavcodec的建立和移植 181
8.4.2 其他库的建立与移植 182
8.4.3 在驱动型服务中使用StdLib 186
8.5 使用Protocol服务 188
8.6 本章小结 190
第9章 开发UEFI驱动 191
9.1 UEFI驱动模型 192
9.1.1 EFI Driver Binding Protocol的构成 192
9.1.2 EFI Component Name Protocol的作用和构成 196
9.2 编写设备驱动的步骤 197
9.3 PCI设备驱动基础 199
9.4 AC97控制器芯片的控制接口 202
9.5 AC97驱动 206
9.5.1 AC97驱动的驱动服务EFI_AUDIO_PROTOCOL 206
9.5.2 AC97驱动的框架部分 213
9.5.3 AC97驱动实验 220
9.6 本章小结 221
第10章 用C++开发UEFI应用 222
10.1 从编译器角度看C与C++的差异 222
10.2 在EDK2中支持C++ 224
10.2.1 使EDK2支持C++基本特性 224
10.2.2 在Windows系统下的程序启动过程 226
10.2.3 在Windows系统下支持全局构造和析构 229
10.2.4 在Linux系统下的程序启动过程 231
10.2.5 在Linux系统下支持全局构造和析构 240
10.2.6 支持new和delete 242
10.2.7 支持STL 243
10.3 GcppPkg概览 243
10.4 测试GcppPkg 246
10.5 本章小结 248
第11章 GUI基础 249
11.1 字符串 249
11.1.1 字符串函数 249
11.1.2 字符串资源 251
11.1.3 管理字符串资源 255
11.2 管理语言 260
11.3 包列表 262
11.4 图形界面显示 263
11.4.1 显示模式 264
11.4.2 Block Transfer(Blt)传输图像 267
11.4.3 在图形界面下显示字符串 269
11.5 用SimpleFont显示中文 272
11.5.1  SimpleFont 格式 273
11.5.2 如何生成字体文件 275
11.5.3 如何注册字体文件 276
11.6 开发SimpleFont字库程序 277
11.7 字体Font 278
11.7.1 Font的格式 279
11.7.2 字体包的格式 279
11.7.3 为什么Font性能高于SimpleFont 281
11.8 本章小结 284
第12章 GUI应用程序 285
12.1 UEFI事件处理 285
12.1.1 键盘事件 285
12.1.2 鼠标事件 292
12.1.3 定时器事件 293
12.1.4 UI事件服务类 294
12.2 事件处理框架 297
12.3 鼠标与控件的绘制 302
12.3.1 鼠标的绘制 303
12.3.2 控件的绘制 305
12.4 控件系统包GUIPkg 306
12.5 简单视频播放器的实现 309
12.6 本章小结 315
第13章 深入了解多任务 317
13.1 多处理器服务 317
13.1.1 EFI_MP_SERVICES_PROTOCOL功能及用法 317
13.1.2 启动AP的过程 324
13.2 内联汇编基础和寄存器上下文的保存与恢复 333
13.2.1 内联汇编基础 333
13.2.2 寄存器上下文的保存与恢复 335
13.3 多线程 336
13.3.1 生成线程 337
13.3.2 调度线程 340
13.3.3 等待线程结束 341
13.3.4 SimpleThread服务 341
13.4 本章小结 345
第14章 网络应用开发 346
14.1 在UEFI中使用网络 348
14.2 使用EFI_TCP4_PROTOCOL 350
14.2.1 生成Socket对象 352
14.2.2 连接 356
14.2.3 传输数据 358
14.2.4 关闭Socket 361
14.2.5 测试Socket 362
14.3 本章小结 363
第15章 使用C标准库 364
15.1 为什么使用C标准库函数 364
15.2 实现简单的Std函数 365
15.2.1 简单标准库函数包sstdPkg 366
15.2.2 使用sstdPkg 368
15.3 使用EDK2的StdLib 369
15.3.1 main函数工程 369
15.3.2 非main函数工程 374
15.4 本章小结 376
第16章 Shell及常用Shell命令 377
16.1 Shell的编译与执行 377
16.2 Shell服务 379
16.3 Shell脚本 385
16.3.1 Shell脚本语法简介 385
16.3.2 自动运行指定应用程序 388
16.4 Shell内置命令 388
16.4.1 调试设备的相关命令 388
16.4.2 驱动相关命令 390
16.4.3 网络相关命令 392
16.5 本章小结 394
附录A UEFI常用术语及简略语 395
附录B RFC 4646常用语言列表 397
附录C 状态值 398
附录D 参考资料 400

推荐

车牌查询
桂ICP备20004708号-3