UEFI原理与编程学习笔记(一)——UEFI概述

UEFI原理与编程学习笔记(一)

  • 一、学习目的
  • 二、笔记内容
    • 2.1 BIOS与UEFI基本知识
      • 2.1.1 问题总结
      • 2.1.2 回答总结
    • 2.2 UEFI基本知识
  • 三、后续计划

一、学习目的

1、了解UEFI与BIOS之间的关系。
2、认识UEFI是什么?
3、了解UEFI启动的流程。

二、笔记内容

2.1 BIOS与UEFI基本知识

2.1.1 问题总结

UEFI是BIOS的替代者,BIOS的全称为基本输入/输出系统,其主要功能分为以下4部分:
(1)加电自检,开机时对硬件进行检测。(都进行哪些检测?)
(2)系统初始化代码,包括对硬件设备的初始化、创建BIOS中断向量等等。
(3)基本的外围I/O处理的子程序代码。(与单片机的外围I/O处理有何区别?)
(4)CMOS设置程序。(什么是CMOS?)
BIOS为何会被UEFI代替?

2.1.2 回答总结

UEFI是BIOS的替代者,BIOS的全称为基本输入/输出系统,其主要功能分为以下4部分:
(1)POST自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡等。
检测显卡以前的过程称过关键部件测试,如果关键部件有问题,计算机会处于挂起状态,习惯上称为核心故障。另一类故障称为非关键性故障,检测完显卡后,计算机将对64KB以上内存、I/O口、软硬盘驱动器、键盘、即插即用设备、CMOS设置等进行检测,并在屏幕上显示各种信息和出错报告。(所谓非关键性故障 / 核心故障 与 CE / UCE-non-fatal / UCE-fatal之间是否有关系?)
(2)暂无问题
(3)由于刚刚开始学习没有想到两者之间的对比,留到后面进行添加。
(4)CMOS简单的来说就是一块可读可写的RAM芯片,多数通过主板上的纽扣电池保持供电,使其在断AC过程中不会丢失数据。
通过BIOS程序可以将Setup阶段的参数保存于CMOS芯片中,同时每次进入Setup阶段也会从CMOS芯片中读取参数。“通过BIOS设置程序对CMOS参数进行设置”
BIOS为何会被UEFI代替?
BIOS存在五点缺陷:
(1)开发效率低 (2)性能差 (3)功能扩展性差,升级缓慢 (4)安全性(基本没有)(5)不支持从硬盘2TB以上的地址引导
UEFI存在三点优势:
(1)UEFI的开发效率:BIOS一般为汇编语言,代码多是硬件相关的代码;UEFI中,绝大部分代码由C语言编写。UEFI通过固件-操作系统接口(BS和RT服务)为OS和OS Loader屏蔽底层硬件细节。
(2)UEFI系统的可扩展性
(3)UEFI系统的性能:(a)UEFI提供了异步操作,提高了CPU利用率,减少了总的等待时间;(b)UEFI舍弃了中断,仅保留了时钟中断。外部设备的操作采用”事件+异步操作"的方式完成。(c)可伸缩的遍历设备的方式,启动时可以仅仅遍历启动所需的设备,从而加速系统的启动。(d)UEFI的安全性。

2.2 UEFI基本知识

UEFI全称(Unified Extensible Firmware Interface,统一可扩展固件接口),其本身知识一种标准,具体的实现由其他公司或开源组织提供。
UEFI提供给操作系统的接口包括BS(Boot Services,启动服务)和RT(Runtime Services,运行时服务)。UEFI驱动和服务以Protocol的形式通过BS提供给操作系统。

UEFI原理与编程学习笔记(一)——UEFI概述_第1张图片

从OS Loadeer被加载,到OS Loader执行ExitBootService()的这段时间,是从UEFI环境向OS过渡的过程。OS Loader可以通过BS和RT使用UEFI提供的服务,把系统资源逐步转移到OS中,这就是所谓的TSL(Transient System Load)。当过渡到OS阶段后,BS就结束了,必须使用ExitBootService()结束BS并回收BS占用的资源,UEFI正式进入Runtime阶段。

BS(Boot Services) 备注 RT(Runtime Services) 备注
事件服务 有事件才能在UEFI系统内执行并发操作 时间服务 读取/设置系统时间
内存管理 内存分配与释放 读写UEFI系统变量 读取/设置系统变量
Protocol管理 安装Protocol与卸载Protocol(其中注册Protocol通知函数用于安装过程中) 虚拟内存服务 将物理内存转换为虚拟内存
Protocol使用类服务 包括打开、关闭Protocol和查找支持Protocol的控制器 其他服务 包括重启系统的ResetSystem,获取系统提供的下一个单调单增值等
驱动管理 将驱动安装或卸载到控制器的connect服务和disconnect服务
Image管理 加载、卸载、启动和退出UEFI应用程序或驱动
ExitBootService 结束启动服务

UEFI原理与编程学习笔记(一)——UEFI概述_第2张图片
Step1

  • SEC阶段:(Security Phase)安全验证
    1、接受系统的启动、重启、异常信号
    2、Cache AS RAM(CAR),在Cache上开辟一段空间作为内存使用(此时内存还没初始化,相关C语言运行需要内存和栈的空间)
    3、传递系统参数给PEI阶段

Step2

  • PEI阶段:(EFI前期的初始化)
    1、此阶段主要是为DXE阶段做的相关准备工作
    (1)做CPU和相关硬件的初始化,最主要的是内存初始化
    (2)将DXE阶段需要的参数以HOB列表形式进行封装,并传递给DXE阶段

Step3

  • DXE阶段:(驱动执行环境)
    1、此阶段主要是进行大量的驱动加载和初始化工作
    (1)通过对固件中所有Driver的遍历,当Driver
    (2)当Driver都被执行完成了,系统即完成了初始化

Step4

  • BDS阶段:(启动设备选择)
    1、此阶段主要初始化控制台设备
    (1)加载必要的设备驱动
    (2)根据用户选择执行相应启动项

Step5

  • TSL阶段:(操作系统加载前期)
    1、此阶段是OS Loader执行的第一个阶段
    (1)为OS Loader准备执行环境
    (2)OS Loader调用EXITBootService结束启动服务
    (3)进入RT阶段(RunTime)阶段

Step6

-RT阶段:(OS环境执行时期)
1、此阶段主要是RT随着操作系统运行提供相应服务
(1)OS已经完全获得控制权,RT会清理和回收一些之前UEFI占用资源
(2)这一阶段运行出现错误时,将进入RL修复

Step7

-AL阶段:(灾难恢复)
1、此阶段主要根据厂家定义的修复方案进行,UEFI未进行相关规定

三、后续计划

1、继续阅读UEFI原理与编程第二章内容。
2、根据第二章内容,搭建EDK2模拟环境,写出第一个HelloWorld程序。
3、在此过程中,继续完善UEFI原理与编程学习笔记。
4、在网上继续寻找UEFI系统的7个阶段的深度解读,加深对UEFI系统的认识。
UEFI系统的7个阶段移植自浅谈UEFI之启动流程经历的7个阶段,感谢前辈的讲解。

你可能感兴趣的:(BIOS,bios,操作系统)