当前位置:主页 > 书籍配套资源 > UEFI配套资源
《UEFI原理与编程》源代码

《UEFI原理与编程》源代码

  • 更新:2022-04-07
  • 大小:9.9 MB
  • 类别:UEFI
  • 作者:戴正华
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

内容简介

这是国内首部UEFI专著,由资深UEFI专家兼布道者撰写,英特尔中国研究院院长吴甘沙强烈推荐!

本书以实战为导向,面向UEFI的使用者和开发者,首先细致地介绍了UEFI的系统组成、启动过程、优点,以及在各种系统中开发环境的搭建;然后深入剖析了UEFI的工作原理,包括UEFI工程模块、各种协议、基础服务、事件、硬盘和文件系统等内容;最后讲解了UEFI的开发,涉及UEFI服务的开发、UEFI驱动的开发、多任务应用的开发、网络应用的开发、GUI应用的开发,以及如何用C++和C标准库开发UEFI应用,等等。

封面图

目录

  • 前言
  • 第1章UEFI概述1
  • 1.1BIOS的前世今生1
  • 1.1.1BIOS在计算机系统中的作用1
  • 1.1.2BIOS缺点2
  • 1.2初识UEFI2
  • 1.2.1UEFI系统组成3
  • 1.2.2UEFI的优点4
  • 1.2.3UEFI系统的启动过程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.3OVMF的制作和使用25
  • 2.4UEFI的启动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.1Shell应用程序工程模块43
  • 3.2.2使用main函数的应用程序工程模块46
  • 3.2.3库模块47
  • 3.2.4UEFI驱动模块49
  • 3.2.5模块工程文件小结50
  • 3.3包及.dsc、.dec、.fdf文件51
  • 3.3.1.dsc文件51
  • 3.3.2.dec文件56
  • 3.4调试UEFI59
  • 3.5本章小结61
  • 第4章UEFI中的Protocol62
  • 4.1Protocol 在UEFI内核中的表示64
  • 4.2如何使用Protocol服务65
  • 4.2.1OpenProtocol服务66
  • 4.2.2HandleProtocol服务67
  • 4.2.3LocateProtocol服务69
  • 4.2.4LocateHandleBuffer服务69
  • 4.2.5其他一些使用Protocol的服务71
  • 4.2.6CloseProtocol服务72
  • 4.3Protocol服务示例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等待事件的服务WaitForEvent105
  • 6.1.2生成事件的服务CreateEvent106
  • 6.1.3CreateEventEx服务110
  • 6.1.4事件相关的其他函数112
  • 6.2定时器事件113
  • 6.3任务优先级114
  • 6.3.1提升和恢复任务优先级115
  • 6.3.2UEFI中的时钟中断116
  • 6.3.3UEFI事件Notif ication函数的派发126
  • 6.4鼠标和键盘事件示例127
  • 6.5本章小结128
  • 第7章硬盘和文件系统129
  • 7.1GPT硬盘129
  • 7.1.1基于MBR分区的传统硬盘129
  • 7.1.2GPT硬盘详解130
  • 7.2设备路径134
  • 7.3硬盘相关的Protocol139
  • 7.3.1BlockIo解析140
  • 7.3.2BlockIo2解析142
  • 7.3.3DiskIo解析146
  • 7.3.4DiskIo2解析147
  • 7.3.5PassThrough解析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.7EFI_SHELL_PROTOCOL中的文件操作166
  • 7.6本章小结170
  • 第8章开发UEFI服务171
  • 8.1Protocol服务接口设计172
  • 8.2Protocol服务的实现174
  • 8.3服务型驱动的框架178
  • 8.4ffmpeg的移植与编译179
  • 8.4.1libavcodec的建立和移植181
  • 8.4.2其他库的建立与移植182
  • 8.4.3在驱动型服务中使用StdLib186
  • 8.5使用Protocol服务188
  • 8.6本章小结190
  • 第9章开发UEFI驱动191
  • 9.1UEFI驱动模型192
  • 9.1.1EFI Driver Binding Protocol的构成192
  • 9.1.2EFI Component Name Protocol的作用和构成 196
  • 9.2编写设备驱动的步骤197
  • 9.3PCI设备驱动基础199
  • 9.4AC97控制器芯片的控制接口202
  • 9.5AC97驱动206
  • 9.5.1AC97驱动的驱动服务EFI_AUDIO_PROTOCOL206
  • 9.5.2AC97驱动的框架部分213
  • 9.5.3AC97驱动实验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和delete242
  • 10.2.7支持STL243
  • 10.3GcppPkg概览243
  • 10.4测试GcppPkg246
  • 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.2Block 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字体Font278
  • 11.7.1Font的格式279
  • 11.7.2字体包的格式279
  • 11.7.3为什么Font性能高于SimpleFont281
  • 11.8本章小结284
  • 第12章GUI应用程序285
  • 12.1UEFI事件处理285
  • 12.1.1键盘事件285
  • 12.1.2鼠标事件292
  • 12.1.3定时器事件293
  • 12.1.4UI事件服务类294
  • 12.2事件处理框架297
  • 12.3鼠标与控件的绘制302
  • 12.3.1鼠标的绘制303
  • 12.3.2控件的绘制305
  • 12.4控件系统包GUIPkg306
  • 12.5简单视频播放器的实现309
  • 12.6本章小结315
  • 第13章深入了解多任务317
  • 13.1多处理器服务317
  • 13.1.1EFI_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.4SimpleThread服务341
  • 13.4本章小结345
  • 第14章网络应用开发346
  • 14.1在UEFI中使用网络348
  • 14.2使用EFI_TCP4_PROTOCOL350
  • 14.2.1生成Socket对象352
  • 14.2.2连接356
  • 14.2.3传输数据358
  • 14.2.4关闭Socket361
  • 14.2.5测试Socket362
  • 14.3本章小结363
  • 第15章使用C标准库364
  • 15.1为什么使用C标准库函数364
  • 15.2实现简单的Std函数365
  • 15.2.1简单标准库函数包sstdPkg366
  • 15.2.2使用sstdPkg368
  • 15.3使用EDK2的StdLib369
  • 15.3.1main函数工程369
  • 15.3.2非main函数工程374
  • 15.4本章小结376
  • 第16章Shell及常用Shell命令377
  • 16.1Shell的编译与执行377
  • 16.2Shell服务379
  • 16.3Shell脚本385
  • 16.3.1Shell脚本语法简介385
  • 16.3.2自动运行指定应用程序388
  • 16.4Shell内置命令388
  • 16.4.1调试设备的相关命令388
  • 16.4.2驱动相关命令390
  • 16.4.3网络相关命令392
  • 16.5本章小结394
  • 附录AUEFI常用术语及简略语395
  • 附录BRFC 4646常用语言列表397
  • 附录C状态值398
  • 附录D参考资料400

资源下载

资源下载地址1:https://pan.baidu.com/s/1tZ47HYlTUsWwat1m726dXQ

相关资源

网友留言