UEFI启动阶段的SEC

SEC阶段(安全校验)

 SEC阶段是平台初始化的第一个阶段,计算机系统加载或重启后进入这个阶段

SEC阶段功能

主要是这下面几个功能

这是一段红色的文本。

*接收并除了系统启动和重启信号:系统加电、重启、运行异常信号
*初始化临时存储区域:CAR(cache as ram),Cache被配置为no-eviction模式.
*作为可信系统的根
*传递参数给下一阶段:系统当前状态、可启动固件(Boot Firmware Volume)的临时RAM区域的地址和大小、栈的地址和大小

提示:详细功能解释如下:
1、接收并处理系统启动信号:系统加电信号、系统重启信号、系统运行过程中的严重异常信号。
2、初始化临时存储区域:当系统运行在SEC阶段时,仅CPU和CPU内部资源被初始化,各种外部设备和内存都没有被初始化,因而系统需要一些临时的RAM区域,用于代码和数据的存取,我们将之称为临时RAM,以示与内存的区别。这些临时的RAM只能位于CPU内部。最常用的临时RAM就是Cache,当Cache被配置为no-eviction模式时,可以作为内存使用,读命中时返回Cache中的数据,读缺失时不会向主存发出缺失事件;写命中时将数据写入Cache,写缺失时不会向主存发出缺失事件,这种计数称为CAR(Cache As Ram)
3、作为可信系统的根:作为取得对系统控制权的第一部分,SEC阶段是整个可信系统的根。SEC能被系统信任,以后各个阶段才有被信任的基础。通常,SEC在将控制权转移给PEI之前,可以验证PEI
4、传递系统参数给下一个阶段(即PEI):SEC阶段的一切工作都是为了PEI阶段做准备,最终SEC要把控制权转交给PEI,同时要将现阶段的成果汇报给PEI。汇报的手段就是将如下信息作为参数传递给PEI的入口函数。
• 系统当前的状态,PEI可以根据这些状态判断系统的健康状况。
• 可启动固件的地址和大小
• 临时RAM区域的地址和大小
• 栈的地址和大小

SEC阶段执行流程

 以临时RAM初始化为界,SEC的执行又分为两大部分:临时的RAM生效之前称为Reset Vector阶段,临时RAM生效后调用SEC入口函数从而进入SEC功能区。

大致如下图:
在这里插入图片描述

Reset Vector

 UEFI第一条指令所在的位置被称为ResetVector,之后便会进入ResetVector执行阶段。Reset Vector的执行流程如下:
• 进入UEFI固件入口
• 从实模式转换到32位保护模式
• 定位固件中的Boot Firmware Volume
• 定位BFV中的SEC映像
• 若是64位系统,从32位模式转换成64位模式
• 调用SEC入口函数

在Reset Vector部分,因为系统还没有栈的概念,所以不能使用基于栈的程序设计,需要使用 汇编语言来完成一些操作。

注:
第一条指令:所在的位置是0xFFFFFFF0(这个地址有个专有的名称Reset Vector)
实模式:程序中用到的地址都是真实的物理地址,即程序员可见的地址完全是真实的内存地址,在实模式下所有的段都是可以读、写、可执行的。
保护模式:保护进程地址空间,程序A的地址空间,不能随意被程序B访问。

Reset Vector的执行流程代码分析:

1、Reset Vector进入UEFI固件的入口

; The VTF signature
;
; VTF-0 means that the VTF (Volume Top File) code does not require
; any fixups.
;
vtfSignature:
    DB      'V', 'T', 'F', <
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值