AIOT人人都是极客

文章数:1086 被阅读:1552441

账号入驻

送书

最新更新时间:2021-10-20
    阅读数:

回顾计算机的发展历史,并不是一开始就形成了现在的硬件+固件+操作系统这样的分工合作。在大型机时代(20世纪60年代),比如《人月神话》中曾经介绍过的IBM System/360,其硬件、操作系统是同时开发的,操作系统直接与硬件配合,不需要固件。

图1 IBM System/360

 

进入20世纪80年代,个人计算机(Personal Computer,简称PC)蓬勃发展,现代计算机进入PC时代,一直持续到至今。PC的流行,对人类的活动产生了巨大的影响,我们现在已经无法想象没有计算机的生活了。

 

PC之所以在短短几十年间在全球流行,其中一个最重要的因素是社会化的分工。与大型机、小型机时代不同,PC时代的每个公司只负责PC的一个部分。微软和Intel组成的Wintel联盟,不是包揽PC的所有部件。你可以使用IntelCPU、微软的Windows系统、华硕的主板、Kingston的内存、七彩虹的显卡,再加上其他厂家的硬盘、键鼠、电源等,组成完整的计算机系统。

 

这种合作,我们现在称之为生态系统。在这个生态系统中,每一个参与者只负责其中一部分。大家遵循一定的标准,各司其职,把自己的部分做到最好,性价比做到最高。产生的结果,就是PC的成本越来越低,软件越来越丰富,整个生态系统生机盎然、欣欣向荣。

 

大量的硬件,带来的是各种各样的兼容性问题。纵观PC系统架构,下有五花八门的硬件,上有操作系统和复杂的应用软件。如何让这些纷纭复杂的软件运行在各种硬件上?答案是固件,也就是我们常说的Basic Input Output System(简称BIOS)。

 

也就是说,在软件和硬件之间增加固件层,由固件来管理硬件差异。这样可以大大减轻操作系统的负担,使之以一种统一的方式来掌控五花八门的硬件。

 

在目前的市场上,存在各种BIOS架构,包括UEFICorebootUboot等。不同的BIOS架构,所实现的功能有所不同,不过必须提供操作系统所需要的接口。目前主流的BIOS架构是UEFI,特别是PC上,几乎成为事实上的标准。如图2给出了UEFI的启动流程。

 

图2 UEFI启动的7个阶段

 

UEFI的7个阶段分别为SEC(安全验证)、PEIEFI前期初始化)、DXE(驱动执行环境)、BDS(启动设备选择)、TLS(操作系统加载)、RT(运行时)和AL(灾难恢复)。其中,前三个阶段是UEFI初始化阶段,DXE阶段加载了大量的硬件驱动,此后UEFI环境就准备好了。

 

BDS阶段负责选择启动设备,之后将会启动操作系统的OS Loader。由OS Loader去加载操作系统的Kernel,将操作系统启动起来。这些工作,都会在TLS阶段完成。

 

OS Loader会收集各种资源,包括内存的状况、ACPI的情况等,之后会触发ExitBootServices(),告知BIOS操作系统将接管权限。

 

OS Loader不是由BIOS提供的,是由操作系统提供的。在完成操作系统启动后,UEFI BIOS将不再有控制权,而是转接给操作系统。BIOS退出后,还会提供Runtime ServicesSMI Handler等服务,供操作系统使用。

 

随着PC的发展,BIOS与操作系统早就密不可分了。BIOS负责初始化硬件,为操作系统提供各类硬件信息,并启动操作系统。完成启动工作后,BIOS交出控制权,并为操作系统提供Runtime Service等服务,以及ACPISMBIOSTable。如图3所示,是一张显示操作系统和UEFI结构的宏观图。

 

图3 UEFI和操作系统软件架构

 

进入操作系统后,UEFI BIOS提供的接口包括三类:

 1) UEFI Runtime ServicesUEFI运行时服务)


包括Variable ServicesReal Time Clock ServicesStatus Code ServicesReset Services              

等。

 2) Version Information(版本信息)


包括UEFI Specfication VersionUEFI规范版本)、Firmware Vendor(固件厂商)、Firmware Revision(固件修订版本)等。

3)System Configuration Table(系统配置表)


包括ACPI TableSMBIOS TableHOB ListDXE Services TableSAL System Table等。

 

虽然此时BIOS已经退出运行舞台,但仍旧在操作系统上发挥巨大的作用。比如按照ACPI标准提供的ACPI Table,它以对象化的方式描述计算机系统的硬件,报告给操作系统。我们最切身体会的关机、睡眠(休眠或待机)等电源事件,就是在ACPI Table控制下进行的。

 

操作系统的运行,特别是对硬件的掌控,依赖于UEFI BIOS提供的各类支持。对于操作系统内核开发而言,有必要深入了解UEFI架构以及其相应的开发知识。

 

想要了解更多关于UEFI的相关技术欢迎阅读《UEFI编程实践》



《UEFI编程实践》书中提供了33个UEFI应用和驱动示例,以及多个用来配合实验的Windows程序、Linux程序和嵌入式程序。涵盖了构建程序架构、调试方法、构建GUI、各种总线外设的访问、网络应用开发、UEFI驱动和Option ROM开发等内容,特别介绍了国产计算机下的UEFI开发,是偏实战操作的技术性书籍。

作者介绍:

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


文末送书:

大家留言评论对【人人都是极客】阅读的收获或者建议,留言评论前5名每人送一本纸氏书籍,包邮的哦。

时间截止:2021-10-22,20:00:00

我会从评论中挑选,并置顶你的评论,如果你的评论被回复并置顶了,请一定要联系我,并把邮寄地址发给我。过期不候哦!!

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved