BIOS工程师手边事--SMM模式

UEFI 进阶指南 (十七) - SMM 实战:从注册到触发 本文是UEFI SMM实战指南,详细讲解了System Management Mode从注册到触发的完整流程。文章介绍了两种注册SMI处理函数的方法(SwDispatch协议与SmiHandlerRegister),并对比了通过IO端口写入和使用SmmCommunication协议两种外部触发方式。重点强调了SMM开发中内存管理、通信安全及调试技巧等核心要点,帮助开发者掌握这一高权限、高安全性的固件编程技术。 阅读详情

一,SMM概念及特色 

    1,基本概念   

    SMM是Intel x86体系结构的一种CPU的执行模式。加上SMM,X86 CPU支持四种工作模式。分别是:实模式,保护模式,虚拟8086模式和SMM模式。SMM是一种特殊的工作模式,它不依赖于具体的操作系统,完全由固件来控制。

    SMM模式只能通过系统管理中断SMI进入,并只能通过执行RSM指令退出。为了实现SMM,Intel在其CPU上新增了一个引脚SMI# Pin,当这个引脚上为低电平的时候,CPU会进入该模式。SMM处理程序在SMRAM的空间内运行。SMRAM起始地址由SMBASE寄存器指定。

    2,SMM土特产

    SMI中断是进入SMM模式的唯一手段。

    RSM是唯一退出SMM的手段。

    CPU在SMM中执行代码是在SMRAM中,与其它CPU模式隔绝。

    进入SMM时,CPU会自动保存被中断的程序上下文环境。

    在SMM模式中,所有OS的中断都被禁止。可以说,SMM的中断,不管是SMI# PIN,还是SMI Message都要比OS的中断优先级别高。

    SMM是不可重入的,可以认为它们是绝对的公平民主和自由。


二,CPU模式切换

    INTEL X86 CPU共有四种模式(PS:个人认为,虚拟X86模式不算是一个单独的执行模式)。另外三种模式可以随时进入SMM模式,当SMM模式中的HANDLE处理完后,会返回到其它三种模式。

    图1,CPU模式切换



三,SMRAM

    SMM执行环境会被限制在一个较小的范围内,即被称为SMRAM的区域。但它访问权限却无任何限制,所以如果要能成功开发SMM类的病毒,那么它的破坏力将是无比强大的。

    在CPU刚上电时,SMRAM的基址是默认的,值为0x30000。BIOS运行的时候,可以将其值改写。改写的方法,是修改偏移FEF8H处的值。

    图2,SMM布局

    

    偏移8000H处,是我们代码的入口地址。Start of state Save Area是我们的状态存储区域,现在的CPU都是64位,它的偏移地址为FC00H。

    下面,我们来看下神秘的State Save Area,这个是32位的,我没找到64位CPU的状态存储域。

    图3,状态存储域



四,如何编程

    对于OEM BIOS工程师来讲,SMM编程并不是一件困难的事。因为SMM程序的入口点,检测SMI中断类型,根据同类型链表找到符合要求的SMI HANDLE执行等等,这些一系列的锁事,INTEL已经帮我们做了。我们所要做的,就是确定我们的功能需要哪一类型的SMI,然后调用相应的SMI注册函数,将我们的SMI HANDLE挂到SMI中断链表中。

    下面,我们看下SMM编程所用的寄存器有哪些:

     图4,电源管理寄存器


    SMI_STS寄存器一旦被置位,肯定有SMI中断产生。我们就可以根据这个寄存器判断是哪个类型的SMI。继而找出相应的SMI Handle执行。

    我们看一个实例吧,看一下是怎么注册SMI Handle的。进入支持ACPI的操作系统时,OS会进入ACPI模式。OS不管底层硬件是怎么操作的,它只负责查询FADT表,找出SMI_CMD和ACPI_ENABLE这两个字段,然后执行outportb(SMI_CMD,ACPI_ENABLE),进入ACPI模式的SMI HANDLE就会被执行,然后配置ACPI模式所需要的环境。

    图5,注册ACPI SMI HANDLE图



EnableAcpiCallback()函数体就不贴出来了。由图可知,想注册一个SMI HANDLE,我们需要做的事有:

(1)找出注册函数所在协议体对应的GUID。

(2)通过GUID,找到Handle base上的协议体。

(3)为注册函数准备参数,这些参数会被kernel解析,作为分析执行哪个SMI HANDLE的依据。

(4)注册SMI HANDLE。


附:恶人夸胜是暂时的,不敬虔人的喜乐,不过转眼之间


SoC到操作系统五层架构:嵌入式系统全栈实操指南 现代嵌入式系统并非简单的硬件+软件堆叠,而是由SoC、固件、设备驱动、内核和操作系统构成的五层协同体系。这一分层本质是对物理世界不确定性(如温漂、时序偏差、协议歧义)的逐级防御设计,每层承担特定维度的抽象与管控责任。SoC已演进为可编程硬件平台,其内部NPU、VPU、ISP等单元支持寄存器级功能重构;固件则超越启动代码角色,成为ACPI表生成、电源管理、安全服务等关键能力的提供者。理解该架构对解决真实工程问题至关重要——例如0.3%的固件时钟偏差可导致SD卡初始化失败率飙升至17%,而PCIe热插拔异常往往 阅读详情

相关推荐

InsydeH2O Tools使用指南:固件解析、刷写与平台兼容性详解

InsydeH2O 是基于 UEFI 架构的 BIOS 固件框架,其配套工具集(如 H2OTool、H2OFlash)并非通用编辑器,而是面向固件工程师的底层调试套件,依赖严格的硬件平台匹配、Windows 内核驱动权限及 Intel x86/x64 架构支持。工具核心功能涵盖固件镜像(.fd/.rom)静态解析、SMM/ME 区域提取、SPI 刷写控制等,技术价值在于实现对 Firmware Volume(FV)、FFS 文件系统及 DXE 模块的深度干预。典型应用场景包括 OEM 厂商固件定制、安全研究

weixin_29323273的博客 180

系统管理模式(System Management mode)(以下简称SMM)是Intel在80386SL之后引入x86体系结构的一种CPU的执行模式

(以下简称)是在之后引入体系结构的一种的执行模式。系统管理模式只能通过系统管理中断(System Management Interrupt, SMI)进入,并只能通过执行RSM指令退出。SMM模式对透明,换句话说,操作系统根本不知道系统何时进入SMM模式,也无法感知SMM模式曾经执行过。为了实现SMM,Intel在其CPU上新增了一个引脚SMI# Pin,当这个引脚上为高电平的时候,CPU会进入该模式。在SMM模式下一切被都屏蔽,包括所有的中断。

weixin_40191861的博客 1517

Linux 使用rm -rf /*命令后,恢复系统方法

Linux 使用rm -rf /*命令后,恢复系统方法 个人学习记录 这里实验环境采用的是radhel7.1的版本: 个人认为核心就是缺失什么组件,就从别的地方复制什么组件过来,先把系统拉起来,再慢慢恢复配置 进入救援模式 1、将/dev/sda两个分区分别挂载看看,里面的内容,有内容的就是根存在的分区 2、ifconfig eno16777777 192.168.8.2 3、从另外一台一样系统的根 。用 tar打包,一个个文件夹拷贝过来 4、到坏系统,scp另外一个系统的etc.tar.gz 5

weixin_43603476的博客 1万+

SMM 详解

SMM System Management Mode(SMM)他是CPU的一个模式,当我们触发CPU的SMI pin 的时候就会进入SMM Mode. SMM 模式下的执行程序被称作SMM处理程序,所有的SMM 处理程序只能在称作系统管理内存(System Management RAM, SRAM)的空间内运行。   1. SMM Service       SMM service 是

Helping BIOSer become Awesome! 2万+

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

STM32 FMC驱动AD7606实战:从硬件连接到时序调试全流程解析

本文详细解析了STM32 FMC驱动AD7606的全流程,包括硬件连接、FMC接口配置、驱动程序设计和时序调试。通过实战案例,展示了如何利用STM32的FMC总线实现与AD7606的高效数据传输,特别强调了电源设计、信号连接和PCB布局等关键要点,为嵌入式数据采集系统开发提供了实用指导。

aa123的博客 1000

【我所認知的BIOS】—>SMM (SYSTEM MANAGEMENT INTERRUPT )

【我所認知的BIOS】—>SMM(System management mode 学习笔记)By LightSeed2009-9-11  1、System management mode综述这篇文章里面我主要是谈谈对IA32的了解,而且也纯粹是笔记而已,没有太多的组织语言。1.1 什么是SMMSMM是一种特殊用途的运行模式,他是用来处理影响整个系统功能的模式。影响整个系统

肢解BIOS 4万+

【Unity】Spine动态换装进阶:SkeletonGraphic插槽级皮肤切换与内存优化

本文深入探讨了Unity中Spine动态换装的进阶技术,重点解析了SkeletonGraphic插槽级皮肤切换的实现原理与内存优化策略。通过代码示例展示了如何高效管理皮肤实例、避免内存泄漏,并提供了对象池、纹理合并等性能优化方案,帮助开发者提升2D角色换装系统的运行效率与稳定性。

food6的博客 189

SMM系列

from http://blog.csdn.net/huangkangying/article/details/8143641 SMM系列(1)-- SMM基本概念 SMM的定义:     SMM, System Management Mode, 即系统管理模式。在intel 386SL, intel486SL引入的一种特殊的操作模式,在这种模式下,可以执行高级电源管理,硬件控制和运

cassienj的博客 4465

无实习经验?IT应届生简历封神思路:把校园经历写成offer收割机

摘要: IT应届生无实习经历如何打造竞争力简历?本文揭秘“无实习简历封神指南”,通过四大步骤将校园经历转化为HR认可的硬核技能: 素材挖掘:课程设计、个人项目、社团活动、竞赛证书都是隐藏的“实战经验”,用STAR法则细化成果。 技能转化:匹配岗位JD关键词,用“动词+量化结果”包装经历(如“优化查询效率30%”)。 避坑指南:避免流水账、夸大技能或堆砌无关经历,聚焦技术能力与岗位需求。 核心逻辑:HR看重潜力而非经验,用校园经历证明学习能力、问题解决能力和技术落地能力。 无实习≠无竞争力,学会“翻译”经历,

通俗易懂学IT 406

在Simulink中实现基于深度强化学习的控制算法仿真建模

通过上述步骤,你可以在Simulink中实现基于深度强化学习的控制算法仿真建模。这种方法适用于许多复杂的控制问题,尤其是当传统控制方法难以找到有效解决方案时。随着经验的积累,你可以进一步探索不同的深度强化学习算法及其变种,以适应更广泛的应用场景。此外,还可以结合其他先进技术(如迁移学习、多智能体协作等),提升模型的表现能力。

amy_mhd的博客 409

【x86架构】SMM

介绍x86架构中的系统管理模式。

jiangwei0512的博客 6600

深入浅出讲解外部服务提供者 OAuth 2.0 帐户客户端创建与 ABAP 系统集成

本文详细介绍了在SAP ABAP平台配置OAuth 2.0客户端以安全调用外部Web服务的完整流程。主要内容包括:首先需要在外部服务提供者平台注册OAuth客户端,获取client ID和client secret;其次需特别注意重定向URI必须是公开可访问的地址;然后在ABAP系统中通过事务码OA2C_CONFIG配置OAuth客户端信息;最后阐述了常见的错误排查方法。文章强调了OAuth 2.0作为SAP系统与外部服务安全集成的标准协议,正确配置客户端是确保后续API调用安全可靠的关键前提。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1725

BIOS学习笔记——SMI&SMM

在EDK2/MdePkg/Include/Protocol目录下相关函数如图​本文主要用到SmmPowerButtonDispatch2 以及 SmmSwDispatch2 ,另外这部分涉及到的SupperIO部分会单独出一期讲一般调用EDK2的流程是 先找Handle再找Protocol,或者直接找Protocol本节内容并没有使用global Boot Service ,用的是gSmst,查询定义这里直接使用LocateProtocol。

2301_79743336的博客 349

YOLOv12中的A2C2f模块详解,涉及区域注意力模块(A2)和 R-ELAN 结构详解

区域注意力模块(Area Attention, A2)的设计出发点是为了解决传统注意力机制在计算复杂度和内存访问效率上的问题。传统的自注意力机制(Self-Attention)具有二次方的计算复杂度(O(n²)),尤其是在处理高分辨率图像时,计算成本非常高。此外,注意力机制的内存访问模式不如卷积神经网络高效,导致在实际应用中难以满足实时性要求。区域注意力模块通过将特征图划分为多个区域,并在每个区域内进行注意力计算,从而显著降低了计算复杂度。

Limiiiing的博客 5502

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

BIOS面试必问:从复位向量到ACPI、SMM的高频考点解析

固件开发中,系统启动流程是操作系统与硬件协同工作的基石,而BIOS/UEFI正是衔接两者的关键。理解x86复位向量为何落在0xFFFFFFF0,需要深入段机制与芯片组地址映射;掌握内存初始化则要从MRC训练、SPD读取到信号完整性层层下探。ACPI作为电源管理的核心,不仅要求熟记表结构,更需明白DSDT由操作系统侧解释器消费,调试时跨越固件与OS边界。此外,SMM作为操作系统之外的高特权模式,其SMBASE、多核独立性和内存保护机制是安全面试的高频延伸。这些知识点共同构成固件工程师从“背规范”走向“有系统感

weixin_28721917的博客 159

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UEFI固件级内存测试工具advmemtest原理与实战

内存测试是硬件可靠性验证的基础环节,其核心在于物理层访问能力与时序精度控制。传统工具运行于操作系统或Legacy BIOS环境,无法捕获UEFI初始化阶段的DRAM时序异常与ECC校验失败。advmemtest作为专为UEFI Runtime Services设计的EFI应用,绕过ACPI SMM、手动管理MTRR寄存器,并直接调用GOP协议实现帧缓冲渲染,实现了启动前内存颗粒级诊断。它支撑服务器产线老化测试、OEM整机排障及嵌入式开发断点调试等关键场景,尤其在UEFI环境下提供地址映射热力图、SPD动态解

weixin_34122810的博客 281

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VMware与Device Guard不兼容:VBS/Hyper-V冲突排查

硬件虚拟化扩展(Intel VT-x/AMD SVM)在系统启动时通常只能由一个虚拟机监控程序独占。基于虚拟化的安全(VBS)会借助Hyper-V先加载虚拟化根,Device Guard、Credential Guard和内存完整性由此获得隔离能力;而传统VMware Workstation以Type-2方式直接操作虚拟化根,于是出现VMware Workstation与Device/Credential Guard不兼容的提示,本质是Hyper-V冲突而非普通配置错误。理解这一独占原理后,技术价值在于按场

weixin_32244597的博客 276

SMM模式

System Management Mode系统管理模式 SMM是一个对所有Intel处理器都统一的标准体系结构特性。出现于Intel386 SL芯片。这个模式为OS实现平台指定的功能(比如电源管理或系统安全)提供了一种透明的机制。当外部的SMM interrupt pin(SMI#)被激活或者从APIC(Advanced Programming Interrupt Controller)收到一...

fgupupup的博客 1437

BIOS工程师需要掌握的知识

素 质 要 求 强烈的责任心和敬业精神 项目的BIOS工作,与独立的软件工作有一个重要的区别就是,BIOS工作配合硬件、电源、Layout、测试、EMI、测试等部分紧密工作,如果由于BIOS的Delay,那么可能造成这个项目的严重Delay,这样不但拖住产品上市,而且拖住整个项目的资源,造成资源的严重浪费。所以,BIOS工程师必须有十分强烈的时间观念,这种的较强的时间观念不仅仅表现在整个项目...

anqi8955的专栏 2万+

BIOS-SMI Introduction

了解SMI之前先了解一些基本的知识。 1.0  SYSTEM MANAGEMENT MODE OVERVIEW          SMM是一个特定的操作模式,用于处理系统级的功能。比如:Power management, system hardware control, special OEM designed code . 它被设计成只给system firmware 使用,不是给应用软件或

冰峰的专栏 1万+

我是BIOS工程师,我不是解Bug工程师……

近来,一直在思考这样一个问题:何为BIOS工程师?或者说BIOS工程师的工作职责和工作范围究竟如何界定?因为实际工作中,作为BIOS工程师的我们经常会发现自己会作出一些越界的事情——这些事情严格来说根本不属于BIOS工程师的工作范畴。 还记得最初做BIOS那时给我的感觉就是整天解bug,一旦发现什么bug,不论是谁发现的bug,我周围那些人都喜欢先去判断是不是BIOS问题,如果他们得出结论

wj0225的专栏 7596

BIOS工程师需要掌握的技术知识

BIOS工程师需要掌握的技术知识广泛且深入,主要包括以下几个方面: 一、硬件与体系结构 处理器架构 熟悉ARM、X86、PowerPC等一种或以上处理器体系架构与工作原理。了解处理器的指令集、缓存机制、总线接口等,这是BIOS开发的基础。 硬件接口与协议 了解并熟悉I2C、SPI、LPC、UART、USB、PCI、PCIe、Network、SAS、SATA、GPIO、VGA、Flash、DDR等设备的开发流程和技术细节。这些接口和协议在BIOS中与硬件设备进行通信和数据传输时至关重要。

m0_57850928的博客 2134

UEFI SMM

SMM 介绍 SMM (System Management Mode) 是Intel IA32/Intel64 CPU 架构的一种特殊模式。CPU 通过SMI(System Management Interrupt) 进入SMM 模式。然后,CPU 保存当前环境,跳转到 预先定义的地址,执行完后通过RSM指令返回。目前主流的的操作系统和Intel CPU 都支持SMM. BIOS...

Helping BIOSer become Awesome! 5999

BIOS知识枝桠——ACPI

ACPI在BIOS中的应用ACPI OverviewPower StateACPI Table ACPI Overview 完全解读:Advanced Configuration and Power Interface Advanced:为什么说它是advanced呢,主要是它替代了以前的APM,APM全称是 Advanced Power Management(高级电源管理),他是一种基于BIOS的系统电源管理方案,它提供CPU和外设电源管理并通过设备工作超时设定来决定何时将设备切换到低功耗模式。目前最新的

这里是为我所统率的战场 7363
上一篇: UDK BaseTools
下一篇: Bios工程师手边事—IGD VBIOS
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值