作者简介

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

 

前言

随着国产CPU的发展,Arm、MIPS、X86、Alphs各种架构百花齐放。相比之前,UEFI工程师面对的硬件更为丰富,所要解决的问题成倍增长,由此也带来了开发人才短缺的问题。按照业内专家估计,现有人员起码需要增加五成,才能解决人才不足问题。

作为承接操作系统和硬件的夹心层,UEFI抽象了硬件,对操作系统提供了统一的接口。面对千奇百怪的硬件,UEFI工程师需要根据各种Spec和功能需求,操作各种寄存器,向上汇报。因此,除去需要熟悉各种工业标准,UEFI本身的标准,工程师还需要对操作系统有一定的熟悉度。

当然,不少公司也期望通过内部培养来解决日益增长的业务需求。但是UEFI工程师需要阅读大量Spec和硬件资料,对技术要求相当高,入门比较艰难。这对于有志于入行的程序员,是非常大的考验。

因此,下面从理解UEFI、UEFI开发、CPU体系架构、常用手册、操作系统六个各方面,分享书单以及相关分享,介绍入门UEFI必读的10本书。

理解UEFI

1、《Beyond BIOS》

作者:Vincent Zimmer,Michael Rothman,Suresh Marisetty

大部分的UEFI程序员,都是从这本书开始进入UEFI的世界的。本书介绍了现代固件的发展,UEFI的框架和其实现(EDKII)。描述了UEFI从开机到进入操作系统,以及如何提供给操作系统接口的所有过程。三位作者都为此领域的发展做出了重大贡献,学习业界大牛的思维,将为进入UEFI开发打下坚实的基础。

2、《Harnessing the Uefi Shell》

作者:Michael Rothman, Vincent Zimmer, Tim Lewis

本书介绍了UEFI Shell的使用。这是一个类似于Bash Shell的工具,依托于UEFI的基础设施,可以在安全、网络、系统配置、诊断维护等领域发挥重要作用。在实际的开发中,笔者也经常在Shell下测试驱动,开发各类硬件测试工具。UEFI Shell是本领域开发人员必须掌握的工具。

3、《Qucik BOOT》

作者:Pete Dice

这是一本描述基本初始化过程的全景式图书,为开发人员提供架构背景和启动顺序的详细信息。书中对大量的概念进行了解释,对这些概念的理解是UEFI从业人员必须要了解的。另外,作者也详细阐述了对优化技术的理解。作为入门书籍之一,或可称为本领域的《开蒙要训》。

UEFI开发

1、《UEFI原理与编程》

作者:戴正华

国内首部UEFI专著,全面介绍UEFI的使用、剖析UEFI的原理。详细介绍了UEFI工程的建立、Protocol的使用,UEFI应用和驱动的开发,以及UEFI Shell的命令和编程,并提供了大量的示例代码。本书也是笔者最常用的参考书之一。

2、《UEFI编程实践》

作者:罗冰

本书注重实践和实用,对初学者友好。介绍完开发和调试环境,以及UEFI应用和驱动相关的知识点后,对图形图像、外围设备访问等开发者较关心的课题提供了详细阐述。书中践行“Show me the code” 极客精神,自制Oprom开发板和USB实验板,读者可方便得到程序反馈,深刻理解。针对国产化平台的龙芯和飞腾,介绍了如何落地相关的开发知识。

CPU体系架构

1、《计算机组成与设计(硬件软件接口ARM版)

作者:(美)戴维·A.帕特森 约翰·L.亨尼斯

这是计算机组成方面最著名的本科生教材,已经再版多次。两位图灵奖得主,深入浅出的阐述了如何设计指令集、如何思考系统架构。对于UEFI工程师,对CPU架构的理解是基本功要求,学习从芯片架构师的角度去思考,非常有助于深入UEFI架构的理解。

2、《x86x64体系探索及编程

作者:邓志

学习X86架构,最好的参考手册当然是Intel的SDM(Software Developer’s Manual)。不过SDM内容太多,很容易迷失。本书对Intel手册所述处理器架构的探索和论证,从多个方面对处理器架构相关的知识进行了梳理介绍。书中每个章节都准备了相应的测试实验,可以在真实的机器上体会和学习。

常用手册

1、 UEFI Specification

链接:https://uefi.org/specifications

学习UEFI,必然需要了解UEFI规范。UEFI规范讲述了系统固件应该怎么做,都应该包含哪些部分,有那些软件接口,固件必须实现的驱动接口等。建议通读前七章,建立相关概念;熟读Boot Service和Runtime Service,再根据需要对相应的Protocol进行深入了解。

2、 Platform Initialization (PI) Specification

链接:https://uefi.org/specifications

UEFI规范是关于系统固件、附加驱动和OS的规范,操作系统只能通过UEFI规范中的接口或服务进行交互。而PI规范是关于UEFI如何实现的规范,所有的接口和服务仅由固件生成和使用。PI规范建议快速通读,在实际需要中再根据课题深入了解。

3、ACPI Specification

链接:https://uefi.org/specifications

ACPI规范是业界通用的接口,使得操作系统能对主板上设备的配置以及包含设备在内的整个系统的电源管理进行控制。在操作系统主导的电源管理功能中,这是一个非常重要的组件。ACPI使得操作系统可以独立于硬件向前发展,硬件也可以独立于操作系统向前发展,促进生态的形成。UEFI与ACPI密不可分,UEFI工程师的一个重要任务就是为操作系统提供各类硬件的ACPI描述。

操作系统

1、《深入解析WINDOWS操作系统

作者:Mark E.Russinovich,David A. Solomon等著

这是微软策划出版的系列图书,每个版本都是由微软的内核专家撰写,目前已经出版到第7版。对于UEFI工程师,了解操作系统的架构是很有必要的,因为所服务的主要对象就是操作系统。本书深入解析Windows操作系统的系统架构、进程、线程、内存管理等知识,对于UEFI工程师来说,主要关心启动、硬件驱动加载和电源管理部分。

2、《奔跑吧Linux内核》

作者:张天飞

针对Linux内核的讲解,市面上已经有太多的书籍了。而且Linux内核是个非常庞大的工程,UEFI工程师一般也不需要深入到独立开发内核的程度。因此,对其开发能到入门级即可,知道如何编译和调试,了解UEFI如何启动到Linux Kernel,以及如何提供操作系统所需的各种资源。本书作者提供了Linux 5.0的实验代码,很值得选择感兴趣的主题,亲手操作,加深对相关架构知识的理解。

3、《QEMU\KVM源码解析与应用

作者:李强

为了理解UEFI架构以及EDKII的源码,需要准备称手的测试和调试环境。而硬件环境不光是花费不菲,修改也比较麻烦。个人认为,Qemu是最好的实验载体了,EDKII中也为其准备了相应的架构支持。本书非常详尽地对QEMU与KVM的实现进行了详细分析,涉及的源码包括QEMU程序的基本组成与重要组件、主板与固件虚拟化、CPU虚拟化、内存虚拟化、中断虚拟化、设备虚拟化等。UEFI工程师可从中学习如何添加需要的硬件设备,用来验证UEFI驱动,可以大大加速日常的工作速度。

总结

UEFI或者说BIOS行业颇为枯燥,需要阅读大量Spec和硬件资料。因此,UEFI工程师需要了解的知识非常宽广,某些方面要求非常深入。本篇从理解UEFI、UEFI开发、CPU体系架构、常用手册和操作系统方面,推荐了12本入门所需要了解的书籍。这些书籍即可作为入门,也适合作为案头参考,常常翻阅,结合平常的实践学习积累,相信对大家的工作学习中会有所帮助。

UEFI入门必读的12本书相关推荐

  1. 计算机视觉学习路线—计算机视觉入门必读的20本书

    计算机视觉入门的一些pdf书籍,按照不同领域帮大家划分了下,涉及深度学习基础.目标检测.Opencv.SLAM.点云.多视图集合.三维重建等~ 20本干货书籍已经给大家打包好了,需要的加小姐姐威信领取 ...

  2. LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用

    LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用. ...

  3. 了解linux内核必读的5本书

    了解linux内核必读的5本书 1.<Linux内核设计与实现> 简称LKD,从入门开始,介绍了诸如进程管理.系统调用.中断和中断处理程序.内核同步.时间管理.内存管理.地址空间.调试技术 ...

  4. C/C++程序员必读的十本书(上)

    在Gmail TopLanguage  Group 中看到一篇文章"C/C++程序员必读的十本书(上)",大家的讨论都很激励,大家都觉得这篇文章写得很棒,我想在Group里的朋友都 ...

  5. 《HTML5+CSS3网页设计入门必读》——1.13 测验

    本节书摘来自异步社区<HTML5+CSS3网页设计入门必读>一书中的第1章,第1.13节,作者: [美]Julie Meloni更多章节内容可以访问云栖社区"异步社区" ...

  6. 研究内核安全必读的10本书

    ​更多内核安全.eBPF分析和实践文章,请关注博客和公众号: CSDN博客:内核功守道 公众号: 内核功守道 背景分析 随着云网边端的急速发展,越来越多的智能设备被人们所使用,平时生活中变得无法离开它 ...

  7. 人生必读的100本书隐私政策

    人生必读的100本书隐私政策 版本日期:2021年12月13日 生效日期:2021年12月14日 提示条款 我们深知个人信息对您的重要性,我们将按照法律法规的规定,采用安全的保护措施,保护您的个人信息 ...

  8. 程序员职业生涯规划必读的十本书

    参与文末每日话题讨论,赠送异步新书 你所能犯的最大错误就是相信自己是在为别人工作.这样一来你对工作的安全感已然尽失.职业发展的驱动力一定是来自个体本身.记住:工作是属于公司的,而职业生涯却是属于你自己 ...

  9. C程序员必读的 3 本书

    C程序员必读的 3 本书 原创: Martin 老师  公众号:零基础零障碍学习C语言 勿用质疑,今天来看这篇文章的朋友都是准备学好C语言的朋友,大家想学好C语言的迫切性,就好比Martin老师等着元 ...

最新文章

  1. javascript-tab切换效果
  2. 网络营销外包——网络营销外包专员浅析提升用户体验从哪入手?
  3. 以太坊go-ethereum项目源码本地环境搭建
  4. st link v2引脚连接_ST-Link资料02_ST-Link固件介绍,及固件命名规则
  5. Java 将数据写入磁盘并读取磁盘上的文件
  6. CPU多核并发缓存架构介绍
  7. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——G题 贪吃的派蒙
  8. 程序员如何勇敢说“不”!
  9. C#图片处理之:色彩调整
  10. 第八届蓝桥杯第二题等差素数列
  11. VisualStudio2017专业版和企业版激活密钥
  12. 干货 | 华为内部几近满分的项目管理PPT
  13. WordPress主题可视化建站The7 V8.7
  14. HDU 5745 La Vie en rose(DP+bitset优化)
  15. matlab 某一函数半高,1. 半高宽的知识
  16. 边缘计算平台能力开放
  17. #Star Way To Heaven 优化二分 /prim凉宫春日的忧郁
  18. Observability:Influx
  19. 少壮不努力 老大徒伤悲
  20. WebStorm高效快捷生成html标签锦集(IDEA同)

热门文章

  1. 南京邮电大学数据结构实验四(各种排序算法)
  2. 四分之一车辆垂向动力学模型
  3. 《人工智能》—— 思维导图
  4. vue axios中文文档(一)
  5. STM32学习笔记(二)——常用接口
  6. 详解|一级建造师考试报名流程有哪些?
  7. 大恒工业相机C#语言winform平台开发例程
  8. 审计局计算机安全领导小组,南宁市审计局关于印发《岗位信息安全和保密责任制度》的通知...
  9. QA小白的学习之路!!!!
  10. python 爬虫 全国各地车牌号爬取自编