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

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

本文介绍了SMM(系统管理模式)的概念及其在Intel x86架构中的作用。SMM是一种特殊的CPU执行模式,不依赖于操作系统,由固件控制。文章详细阐述了SMM的工作原理、SMI中断触发机制、SMRAM的使用以及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。


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


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

相关推荐

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

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

weixin_29323273的博客 183

系统管理模式(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的博客 1521

OpenHarmony x86引导程序:从通电到桌面的可信启动栈

x86架构上的操作系统启动,本质是实模式→保护模式→内核移交的多阶段可信链构建过程。OpenHarmony作为面向全场景的分布式操作系统,其x86适配核心难点不在内核编译,而在于缺失符合UEFI/BIOS双模规范、支持Secure Boot绕过与硬件探针的专用引导程序。该引导栈通过重写boot.S硬件初始化、loader.c双模加载器及startup.c ABI上下文构造,实现对PAE内存、VESA帧缓冲、PCI总线等x86关键特性的原生支持,填补了OpenHarmony在国产工控机、瘦客户机及教育开发板等

weixin_42593549的博客 260

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万+

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7605

【浅读论文-红外和可见光图像融合-CNN】Infrared and Visible Image Fusion using a Deep Learning Framework

1.这篇是2018年ICPR会议上发表的一篇文章1。博主个人觉得这算比较早期在VIF(红外光和可见光图像融合)中加入了深度学习这一模型的论文。2.这篇文章并不是完全使用深度学习的模型,模型主体在图像分解和融合仍然采用传统的方法,只有其中一个分支在特征提取和重建方面用到了VGG网络。3.论文地址4.代码地址本文提出了基于深度学习框架的一种新算法。本文提出使用下述论文中Image fusion with guided filtering2中的分解方法将源图像分解为基本部分和细节内容。

一枚博鼠的博客 1708

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

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

肢解BIOS 4万+

交换芯片数据通路四大核心微架构深度解析

数据通路是交换芯片性能的物理根基,决定着低延迟、高吞吐与突发承载能力。其本质是在硅片约束下对带宽、时序、功耗与统计复用的系统性权衡。Crossbar提供确定性低延迟但受RC延迟与功耗制约;VOQ通过虚拟队列隔离输出争抢,却引入仲裁复杂度与内存开销;Shared Buffer依托统计复用提升缓存利用率,但面临碎片化与管理策略挑战;Cell Fabric以固定长度cell重构交换粒度,在AI与金融等小包敏感场景实现尾延迟稳定。这些架构并非替代关系,而是面向不同网络不确定性(如流量不对称性、突发强度、包长分布)的

weixin_32667955的博客 189

SMM系列

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

cassienj的博客 4474

【ROS2】从yaml文件中读取参数配置

ROS2:从yaml中读取参数,到节点;使用C++演示参数的增、删、改、查、遍历、监听变化

郭老二 1284

yolov5运行detect.py之后卡住了?没后续,没结果,没报错,怎么办?如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1105

【x86架构】SMM

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

jiangwei0512的博客 6601

UNet 改进(22):结合Transformer结构

保留了UNet的经典编码器-解码器结构在瓶颈层使用Transformer替代传统的卷积层采用跳跃连接保持空间细节信息使用双卷积块(DoubleConv)作为基础构建模块。

2401_82355416的博客 774

BIOS学习笔记——SMI&SMM

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

2301_79743336的博客 353

引文:当SVM转角遇上Copy-on-Write (COW)

本文分析了Linux内核中fork系统调用的Copy-on-Write(COW)机制实现原理。重点阐述了fork时父子进程共享物理页面、标记页表项为只读并在写操作时触发COW的流程,以及在SVM环境中通过MMU Notifier机制保持CPU和GPU页表同步的解决方案。文章详细描述了COW的三个阶段:初始共享、写入触发和页面复制,并说明了MMU Notifier的回调注册和处理流程,确保异构计算环境下内存一致性。

图形/计算GPU的驱动与虚拟化技术分享园地 2673

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器&配置版本-v5.2.3-beta+charts图表

详细介绍了在Ubuntu 23.04系统上部署Blockscout浏览器的步骤,以及过程中遇到的问题进行一一解决。

鄙人kunzhi96,感恩遇见! 2万+

SoC到操作系统五层架构:嵌入式系统全栈实操指南

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

weixin_30627341的博客 389

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SMM模式

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

fgupupup的博客 1437

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

BIOS工程师需要掌握的知识

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

anqi8955的专栏 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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的专栏 7599

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

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

m0_57850928的博客 2136

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! 6001

BIOS知识枝桠——ACPI

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

这里是为我所统率的战场 7370

SMM 系统管理模式

SMI#(System Management Interrupt系统管理中断)为一由ICH输出至CPU的讯号。当CPU侦测到SMI#为LOW时,即进入SMM模式(系统管理模式)并到SMRAM(System Management RAM)中读取SMI#处理程序,当CPU在SMM模式时NMI、INTR及SMI#中断讯号都被遮蔽掉,必需等到CPU执行RSM(RESUME)指令后SMI#、NMI及INTR

小卢的专栏 3480
上一篇: UDK BaseTools
下一篇: Bios工程师手边事—IGD VBIOS
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值