(特价书)UEFI编程实践
内容系统全面,涵盖了UEFI应用和驱动开发、调试,其中提供了USB、网络、PCI/PCIE等总线访问方法,以及不可缺的图形图像开发方法
基本信息

编辑推荐
软件专家张银奎、UEFI专家戴正华联袂推荐,领域专家撰写,30多个精巧实例,可操作性强
内容系统全面,涵盖了UEFI应用和驱动开发、调试,其中提供了USB、网络、PCI/PCIE等总线访问方法,以及不可缺的图形图像开发方法
内容简介
计算机书籍
本书偏重于实战,面向UEFI的爱好者和使用者。全书共12章,大致可以分为三部分。
1. 第1部分为介绍UEFI的基础框架,搭建开发和调试环境,并熟悉代码框架的搭建和编译方法。让读者能把握整体框架,并能为后续的实践做好准备;
2. 第2部分详细讲解UEFI如何访问外设、构建GUI、编写Option ROM等,并辅以实际的项目实例,加深对UEFI编程的理解。所提供的项目极具实践价值,基本上可以直接用在实际项目中;
3. 第3部分介绍目前国产计算机上UEFI的发展情况,详细讲解如何在国产计算机上进行UEFI项目的开发,包括搭建开发环境、测试方法等。
通过阅读本书,读者可以清晰地了解UEFI的编程方法,学习到如何以UEFI的方式去思考计算机的底层架构。书中提供了大量的实例训练,大部分来自作者曾经实战过的商业项目,极具参考价值,能有效帮助读者快速构建自己的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
前言
当时,我们正与国内某PC大厂合作,开发一款安全计算机。这款产品包含一个嵌入BIOS中的软件模块,此模块是用汇编语言编写的Option ROM。由于合作方计划将BIOS架构全部转为UEFI,因此要求我们将软件模块移植到UEFI架构下。
在对UEFI的理解还非常初级的情况下,笔者忐忑地接下了任务。用了三周时间,在AMI的集成工具上,笔者使用C语言将原有的软件模块重写为了UEFI驱动,总算是圆满完成了任务。
这之后,笔者花了不少时间去研究UEFI的公开文档,尝试着做了很多实验。在此期间,UEFI规范从2.3升级到2.8;身边的计算机运行Legacy BIOS的越来越少,运行UEFI BIOS的越来越多。UEFI的开发效率高、可扩展性好,而且系统性能和安全性都很高,支持X86、ARM和RISC-V等多种指令集架构。时至今日,UEFI已经成为事实上的BIOS标准,所有有志于底层开发的工程师都有必要深入了解UEFI架构及其编程方法。
本书的写作初衷
因十年前的项目机缘,笔者开始学习UEFI的相关知识,并利用业余时间,以“UEFI开发探索”为名,撰写了UEFI开发的系列博客。在此期间,认识了不少业界的朋友,在产品开发、市场推广方面,我们有过相当多的探讨。
也是因为如此,当国产自主计算机从前几年开始大批量出货,而大部分BIOS采用了UEFI架构时,笔者一点都不感到奇怪。基于此认识,公司的产品针对国产自主计算机的软件架构进行了较大改造,如果没有UEFI架构的支持,这是做不到的。
在产品开发的过程中,能够参考的资料,除去UEFI规范等公开资料外,英文资料有Intel Press出版的Beyond BIOS和Harnessing the UEFI Shell。中文资料,则只有戴正华老师的《UEFI原理与编程》。作为主流的BIOS架构,可供参考的书籍实在太少。
笔者长期进行Legacy BIOS和UEFI BIOS的ROM开发,对于底层编程有丰富的项目经验。因此,萌生了将日常的实践经验记录下来并集结成册的想法。希望能为UEFI的推广,特别是国产化计算机的发展,贡献自己的一份力量。
本书特点及读者对象
本书以实践为主,主要特点如下。
是为数不多的介绍国产计算机UEFI开发的书籍。
针对每个主题,都准备了相应的示例和代码,目的是以实例讲解知识点。
偏重于解决实际项目中遇到的问题,包括汉字显示、构建GUI界面、访问PCIE设备和USB设备等。
书中详细地介绍了如何在Windows/Linux主机上搭建UEFI开发和调试环境,以及构建和编译UEFI程序,非常适合UEFI开发初学者阅读,可以帮助他们循序渐进地进入UEFI世界。
本书也很适合UEFI的专业开发者,包括云终端、显卡、还原卡等领域的开发者使用。书中提供的丰富的源代码能为项目开发提供很好的参考。
本书如何阅读
开发UEFI程序,要求程序员有C/C++语言的背景。如果了解对应架构(比如X86、ARM、RISC -V等)的汇编语言和Python语言,对于调试和理解编译过程会更有帮助,当然这不是必需的。
本书的代码仓库为https://gitee.com/luobing4365/uefi-practical-programming.git或者https://github.com/luobing/uefi-practical-programming.git。读者可以使用GIT工具,将代码下载到本地阅读。
按照本书介绍的示例进行操作,需要用到各种参考手册,特别是UEFI规范参考手册(目前版本为V2.8)、库函数参考手册等。这些文档可以在www.uefi.org和GitHub的仓库tianocore/tianocore.github.io中找到。
媒体评论
同时,除去BIOS开发厂商,第三方开发者采用UEFI BIOS的也越来越多,包括各类网卡厂商、显卡厂商、还原卡厂商等。编写支持UEFI BIOS的软件,是各厂商急需解决的问题。
本书对UEFI应用和驱动的开发,特别是Option ROM的开发做了细致而深入的讲解。本书主要有3个特色。
内容全面:对于各类总线外设,包括USB、网络、PCI/PCIE、串口和SMBus都提供了实际操作案例。
偏重实操:着重介绍了图形开发、对各种格式图像的访问,以及UEFI下GUI系统的构建,这些内容对实际项目开发有非常重要的意义。
结合市场:介绍了龙芯和飞腾处理器的发展情况,以及在各种国产平台下进行UEFI软件开发的方法。