UEFI开发与调试---运行阶段介绍
UEFI的运行可以分为如下几个阶段:
SEC阶段
此阶段是安全验证阶段,系统上电后即进入此阶段,作为UEFI的第一阶段,它是可信系统的根,一般可以在此阶段验证后面的PEI,此阶段大部分工作是为后面的PEI阶段提供运行环境。PEI阶段
PEI(Pre-EFI-Initialization)是EFI前期初始化阶段,资源依然十分有限,内存到了PEI后期才被初始化,其主要功能是为DXE准备执行环境,准备DXE需要的信息并最终将控制权交给DXE。按照功能可以分为PEI Core Services和PEI Modules,另外还需要实现Modules之间通信的接口PPI。DXE阶段
Driver Execution Environment,此阶段是驱动运行阶段,这是一个非常重要的阶段,完成了外设初始化的大部分工作,此阶段内存已经可以完全被使用了,此阶段还会初始化前面文章所介绍的edk2中的基础服务组件,系统表,启动服务表,运行服务表。在所有driver执行完毕之后,系统会进入下一个阶段,BDS。BDS阶段
Boot Device Selection阶段,只要是启动策略的执行,它其实是一个特殊的应用程序,当用户选择了启动设备之后,此阶段就会继续运行,跳转到TSL阶段。TSL阶段
Transient System Loader阶段,也是一个应用程序运行阶段。UEFI Shell就属于此阶段的人机交互界面。但一般情况下不会进入此界面,而是直接执行OS Loader。最后会执行ExitBootServices来结束启动服务,只保留RunTime Services,进入下一个阶段,RT。RT阶段
Runtime 阶段是OS Loader阶段,系统控制权已经由UEFI内核转交给OS Loader,UEFI占用的资源都已经被回收了,所有控制权都交给了OS Loader。OS Loader负责夹在真正的操作系统OS。AL阶段
After Life阶段,当系统出现故障时进入的阶段,UEFI目前没有定义此阶段的行为。
参考:《UEFI 原理与编程》–戴正华
UEFI开发与调试---运行阶段介绍相关推荐
- UEFI开发与调试--edk2中的基础组件
还记得前面介绍的MdePkg和MdeModulePkg吗?这两个包中会实现UEFI内核中的基础组件,其中就包括了系统表,启动服务表,运行时服务表. 系统表(System Table) 系统表是edk2 ...
- UEFI开发与调试---edk2中的应用模块/库模块/驱动模块
应用模块 应用模块包含标准应用程序模块,shell应用程序模块,以及main应用程序模块 标准应用程序模块 它是所有其他应用程序模块的基础,作为一个模块来说,同样由源文件和工程文件(.inf)组成. ...
- UEFI开发与调试---edk2中的Package
在开始编写UEFI APP之前,我们需要先对UEFI包和模块的概念有个了解. 在edk2的根目录下,我们可以发现有很多*Pkg命令的目录,这些实际上都是各个不同的包,每个包中都是一组模块的集合,每个包 ...
- UEFI开发与调试---edk2中的Module
Edk2在设计是按照模块来进行的,其中模块包含有很多种类型,比如最常见的三种:应用程序模块,驱动模块,库模块.每个模块都包含了一个工程元数据文件(.inf)和源文件..inf文件是用来辅助编译的,功能 ...
- UEFI开发与调试---QEMU虚拟盘的创建与修改
支持的文件格式 qemu支持多种类型的文件系统,而最原生的以及最灵活的是qcow2类型了,这种文件系统支持写时复制,加密,压缩以及VM快照. 除了这种文件系统之外,如下类型也是被支持的:raw ,cl ...
- 飞腾FT2000/4 u-boot/UEFI开发环境搭建
参考 UEFI开发与调试-edk2中子目录介绍 ACP基础--Resource Descriptors for ACPI ubuntu16.04操作系统下的edk2安装 [UEFI实战]如何在OS下获 ...
- UEFI开发探索100 – 《UEFI编程实践》发布啦
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365) <UEFI编程实践>发布 1 内容简介 第一部分 UEFI环境搭建及UEFI应用构建 ...
- UEFI开发探索28 – 用Windbg建立UEFI调试环境
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365) 最近的翻译计划和博客计划严重滞后.一方面是因为有两个案子在推进,业余时间也被占用:另外一方面 ...
- STM32G431+P-NUCLEO-IHM03开发套件调试3(p-nucleo-ihm03套件)-FOC基础原理介绍
STM32G431+P-NUCLEO-IHM03开发套件调试3(p-nucleo-ihm03套件) 文章目录 STM32G431+P-NUCLEO-IHM03开发套件调试3(p-nucleo-ihm0 ...
- 使用神卓互联内网穿透实现微信公众号开发:介绍了如何通过神卓互联实现微信公众号的开发和调试。
注册微信公众平台账号,并创建一个测试号. 1.在神卓互联控制台上,将公网IP地址和本地的80端口进行映射.同时,将80端口映射到本地开发2.环境的端口(如localhost:3000). 3.在本地开 ...
最新文章
- 1164: 分治 逆序对
- esp32 python-MicroPython for esp32
- Java虚拟机 —— 垃圾回收机制
- postgresql数据库的备份与恢复
- Linux数据报文接收发送总结5
- 【MM】采购退货的处理办法
- Ubuntu16.04 问题汇总
- java 学习书籍 转载
- 如何看待部分985研究生不如本科生,只能去做软件测试?
- struts1 mysql config_详解Struts1中的struts-config.xml配置文件【一】
- Go语言基础练习题系列5
- Xshell使用教程——问答方式
- Linux 磁盘无损扩容
- 【东南大学主办: IEEE ICSIP 2022】信号与图像处理热门主题,7月邀您相约苏州
- 如何快速删除pdf中某一页?
- 2022-2027年中国安防智能化行业市场全景评估及发展战略规划报告
- C++多线程和并发-更新(互斥量的基本概念、使用、作用、案例)-2023/2/12
- 软件测试读不出硬盘,电脑经常检测不到硬盘怎么办
- 多目标优化蚁群算法的matlab_混合参数蚁群算法的改进优化
- IT小妞要好好照顾自己
热门文章
- Umijs组件的初次应用
- Nginx跨域配置及配置文件加载过程讲解
- linux下海康威视MVS以及库的安装
- 神经网络之BP算法(图说神经网络+BP算法理论推导+例子运用+代码)
- Android扫描局域网内所有的ip地址
- js调用数科阅读器_pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
- 安装华为P10plus的手机驱动过程
- Win10 安装IE11失败错误代码0x80070490(未解决)
- java汉字转拼音maven_java汉字转拼音pinyin4j功能实现示例
- 理解拉普拉斯平滑 Laplace Smoothing