• UEFI编程实践
  • UEFI编程实践
  • UEFI编程实践
  • UEFI编程实践
  • UEFI编程实践
  • UEFI编程实践
  • UEFI编程实践
  • UEFI编程实践
21年品牌 40万+商家 超1.5亿件商品

UEFI编程实践

全新正版现货

85.9 7.2折 119 全新

库存2件

四川成都
认证卖家担保交易快速发货售后保障

作者罗冰

出版社机械工业出版社

ISBN9787111688853

出版时间2021-08

装帧平装

开本16开

纸张胶版纸

定价119元

货号29293651

上书时间2024-07-13

天涯淘书阁

五年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
正版全新
商品描述

编辑推荐】:

(1) 事实BOIS标准UEFI唯二中文图书


(2) 30多个设计精巧实例,可操作性强


(3) 资深专家撰写,十余年经验总结


(4) 软件专家张银奎、UEFI专家戴正华联袂推荐


(5 )全书代码可免费获取


 


本书对UEFI应用和驱动的开发,特别是Option ROM的开发做了细致而深入的讲解。本书主要有3个特色:


●内容全面:


对于各类总线外设,包括USB、网络、PCI/PCIE、串口和SMBus都提供了实际操作案例。


●偏重实操:


着重介绍了图形开发、对各种格式图像的访问,以及UEFI下GUI系统的构建,这些内容对实际项目开发有非常重要的意义。


●结合市场:


介绍了龙芯和飞腾处理器的发展情况,以及在各种国产平台下进行UEFI软件开发的方法。


 



内容简介】:

本书系统地介绍了X86、龙芯、飞腾架构下的UEFI应用和驱动开发,系统调试专家、《软件调试》作者张银奎,以及UEFI专家、《UEFI原理与编程》作者戴正华联袂推荐。
本书以项目开发为导向,采取“近实战,多实例”的方式,细致深入地介绍了UEFI应用和驱动开发相关的知识。



第1~3章,介绍了UEFI系统的组成、启动过程,在各种操作系统中搭建和调试开发环境的方法,以及UEFI应用和驱动开发的基本方法。
第4~10章以实际的开发实践为索引,介绍了图形图像开发、汉字显示、GUI构建、访问PCI/PCIE设备、访问SMBus设备、访问串口设备、实现USB通信和网络通信等内容。这部分以贴近实际开发的方式来构建实例,并深入剖析相关硬件协议及其在UEFI上的实现。
第11章和第12章,讲解了龙芯和飞腾架构,以及如何在这两类国产处理器上进行UEFI软件开发。


 



作者简介】:

罗 冰


物理隔离安全领域专家,主导开发过网络隔离卡、双网隔离机、国产隔离系统、单向光传输系统等各类安全产品,拥有十几项发明和实用新型专利。致力于UEFI技术的研究、实践,以及相关产品的开发,在CSDN和知乎上设有“UEFI开发探索”专栏。译著有《现代X86汇编语言程序设计》《21世纪机器人》,目前就职于国内某网络安全公司,担任总工程师。


 



序一】:


要想深刻理解今天的计算机系统,理解固件是一道绕不过的关口。回顾现代计算机的发展历史会发现,固件并非一开始就有,它是计算机系统和IT产业发展到一定阶段之后的产物。


在大型机时代,一家公司往往包揽整个系统的硬件和软件。到了小型机时代,情况也大体如此,比如著名的DEC公司,既研发硬件,又研发操作系统,自己的操作系统直接与自己的硬件配合,不需要固件。


20世纪80年代之后,PC(个人计算机)以排山倒海之势快速发展,现代计算机进入PC时代。PC的流行,让计算机走遍天下,这对整个人类的历史产生了深远的影响。如果没有PC,计算机至今可能还只是一小部分人在使用。


PC能在短短的十几二十年间红遍全球,是多方面的因素导致的。其中一个因素便是明确的社会化分工。与以前一个公司包揽所有软硬件不同,在PC时代,每个公司只负责PC中的一个部分。以英特尔和微软为shou的Wintel联盟虽然是PC时代的主要领导者,但它们也不能包揽PC的所有部件。以我在20世纪90年代初买的PC为例,它的CPU来自英特尔,DOS操作系统来自微软,显卡来自泰鼎。除此之外,它还有很多其他部件分别来自不同的厂商,比如显示器、内存条、硬盘、键盘、鼠标、声卡、超卡、主板等。


简单来说,PC的生产不是靠一家公司完成的,而是靠一个生态系统。在这个生态系统中,每一个参与者只负责其中的一部分。大家各司其职,每家公司只需要把自己的部分做好,性能和价格做优,这样整个PC的成本就会不断下降,从而能有更多的人买得起PC。当每个人都买得起PC时,这个生态系统就会生机盎然、和谐繁荣,其中的每个参与者都是赢家。正所谓“一花独放不是春,百花齐放春满园”。


PC市场的繁荣是整个PC产业联合推动的结果,这股浪潮把PC时代推向。回想上海早卖PC的场所在福州路的科技图书馆,每到周末各个楼层都人山人海。后来科技图书馆实在放不下了,就搬到了徐家汇的百脑汇,后来百脑汇旁又建了一个太平洋电脑商城。PC市场的繁荣造就了很多公司。直到今天,这些公司中的大部分仍然是IT产业的中坚力量。


在PC产业辉煌的背后,有一个关键的技术因素,这就是固件。纵观PC系统的架构,下面是五花八门的硬件,上面是操作系统和纷繁复杂的应用软件。如何能让纷繁复杂的软件运行在五花八门的硬件之上呢?稍微有点计算机常识的人脑海中都会立刻浮现出一大堆这样或那样的兼容问题。如果不解决兼容问题,用户就不敢自己组装PC,那么PC就仍然只是少数巨头才有的产品。若真的是这样,那么就没有所谓的PC生态系统了。


说到这里,不得不提一下PC时代的两个关键人物:比尔·盖茨和安迪·葛洛夫。安迪出生于1936年,是匈牙利籍犹太人,1968年加入英特尔,1979年成为英特尔的总裁,1987年成为英特尔的CEO,而1987年正是PC大爆发的前夜。如此说其实有点不妥当,因为安迪成为CEO和PC大爆发可谓互为因果。如果没有安迪,也许PC时代不会来得那么快。比尔·盖茨出生于1955年,比安迪小19岁。虽然两人年龄相差近20岁,但是他们配合默契,在PC历史上结成了一个非常伟大的联盟,这个伟大的联盟成就了英特尔和X86,也成就了微软和Windows,当然还成就了一大堆PC时代崛起的IT公司。当然,他们的成功不是偶然的,他们不仅定义了PC生态系统的宏伟格局,还解决了其中的关键问题。


要让PC产业百花齐放,就必须解决兼容性问题。解决兼容性问题的一种方法是制定标准,但是仅制定标准是不够的,还要有一种好的方法来固化标准,有一种经济的方式来实现标准,这样才能保证PC的高性能和低价格。


解决这些问题的好方案就是固件,也就是在软件和硬件之间加一个固件层,让这个固件层来管理硬件差异。这样就可以大大减轻操作系统的负担,让操作系统可以以一种统一的方式来掌控五花八门的硬件。


1996年,英特尔与微软联合推出了APM标准。1999年2月,以英特尔为代表的芯片厂商、以微软为代表的操作系统厂商和以东芝为代表的整机厂商,联合推出了ACPI标准。ACPI标准的制定者中加入了以东芝为代表的OEM厂商,这是具有特殊意义的。这代表着固件层的标准化进入一个新的时代。直到今天,ACPI仍广泛应用于各种计算机系统,从工控小盒子到大型服务器。


ACPI不是简单的条文定义,从软件的角度看,它是一门面向对象的编程语言。它以对象化的方式描述计算机系统的硬件,报告给操作系统,在软件和硬件之间架起一座桥梁。这座桥梁具有高度的灵活性,不但是充分可扩展的,而且是可编程的。


2013年,ACPI委员会把ACPI标准及其资产移交给UEFI论坛。UEFI论坛是一个更大的联盟,ARM也在其中。这标志着固件技术的发展进入一个更加开放和包容的新时代。


以UEFI为代表的固件技术在计算机系统中的地位其重要,但是要学习这个技术却有着非常高的技术门槛。因为这方面的从业者较少,可以查找的技术书籍和资料也相对有限。罗冰是我认识多年的好朋友,曾一起翻译《现代X86汇编语言程序设计》一书,也曾一起参加在庐山举行的“软件调试研习班”,一起在古老的白鹿洞书院畅谈技术和人生,一起爬庐山的秀峰。我也多次到罗冰的工作单位,参观他们研制的安全PC,听罗冰介绍他们设计的网络隔离产品,特别是针对UEFI所做的固件扩展。


2021年春节前的一个晚上,罗冰通过微信给我发来一堆文档,告诉我那是他写的《UEFI编程实践》的书稿。翻阅这些书稿后,我深深为他十几年如一日痴心于固件技术所感动。写书很难,写这样一本关于UEFI编程的书更是不容易。我曾劝他不要写这么冷门的书,但是罗冰没有想那么多,默默地把几百页的书稿完成了,足见他对固件技术的热爱。撰写这样的书对于作者而言是件苦差事,但对于喜爱固件技术的读者来说却是件喜事。


“君子谋道不谋食”,希望所有想深入理解计算机系统的人都读一读这本书。


 


张银奎


格蠹科技(Xedge.ai)创始人


微软全球价值技术专家(MVP)


 


 



序二】:


很久之前就注意到罗冰的“UEFI开发探索”系列博客文章。这些文章详细记录了他在UEFI开发中遇到的问题、解决思路以及解决方案,对UEFI开发者帮助很大。3个月前高婧雅编辑告诉我罗冰正在撰写一本关于UEFI编程的书并邀请我作序,我很是高兴。从《UEFI原理与编程》出版至今已有6年,6年里世界发生了巨大变化。6年前UEFI与BIOS尚处于新旧交替之中,今天BIOS已难觅踪迹。然而BIOS的名字被非正式地保留了下来,SPEC和官方文档中会严格区分UEFI与BIOS,日常交流中经常用“Legacy BIOS”指代BIOS,用“UEFI BIOS”指代UEFI,这是题外话。总体来说,底层开发已无法避开UEFI。现在UEFI SPEC已从2.4更新到2.8,《UEFI原理与编程》采用的UDK 2014已显陈旧,芯片行业也遇到了前所未有的机遇与挑战,现在急需一本切合技术需求的作品。因为工作的关系,我近几年主要从事显卡渲染核心和计算核心的验证工作,很久未进行UEFI一线开发,对更新《UEFI原理与编程》心有余而力不足。所幸看到罗冰将其在近几年UEFI开发中积累的知识和经验整理成册。


罗冰的新书以实践为主。对新手而言,通过这本书,可以遵循实例与讲解,一步步进入UEFI世界,学习如何调试UEFI程序、如何访问各种外设和如何编写设备驱动;对有经验的开发者而言,可以直接使用书中的库和代码,例如GuiLite库,做出生动有趣的UEFI应用。难能可贵的是,书中给出了在龙芯和飞腾平台上的实践。UEFI是构建芯片软硬件生态系统的重要支撑, 让更多的固件开发者熟悉这些平台,对加速生态系统发展有重要意义。


希望有越来越多的开发资料面世,让程序员学习UEFI可以更简单、更深入,也希望有更多的库可以移植到UEFI中来,让固件开发变得容易且有趣。


好了,现在加电自检,扬帆起航吧!


 


戴正华


AMD SMTS 开发工程师 



目录】:

●第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


   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

正版全新
此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP