当前位置: 首页 > news >正文

一、ARM异常等级及切换

目录

  • 1 ARM异常
    • 1.1 异常等级总览
      • 1.1.1 EL3
      • 1.1.2 EL2
      • 1.1.3 EL1
      • 1.1.4 EL0
    • 1.2 异常等级的切换
      • 1.2.1 上去(到更高的EL)
      • 1.2.1 下来(到更低的EL)
    • 1.3 异常
      • 1.3.1 同步异常
      • 1.3.2 异步异常

1 ARM异常

1.1 异常等级总览

在 Arm A-profile 的 AArch64 执行状态下,CPU 权限被划分为四个异常等级(EL0~EL3),数字越大权限越高。EL0 面向应用程序,EL1 面向操作系统内核,EL2面向虚拟化管理器(Hypervisor),EL3面向安全监控器与早期固件。不同 EL 拥有各自的寄存器集和异常向量表(VBAR_ELx),通过硬件强制的边界实现权限隔离和控制转移,是整个系统安全与稳定的“层级骨架”。

1.1.1 EL3

EL3 是最高特权层,主要承担世界切换(Secure/Non-secure)的仲裁与策略落地,并为下层提供安全服务(如 PSCI 电源管理接口、SMC 调用分发等)。常见的 BL1/BootROM 和 TF-A 的 BL31 就运行在 EL3:它们在启动早期初始化关键寄存器(如 SCR_EL3、SCTLR_EL3),验证并移交控制权给下一阶段镜像,运行期则作为“安全门卫”处理来自低 EL 的安全监控调用(SMC),再通过 ERET 将控制权返回到目标 EL/世界。

1.1.2 EL2

EL2 负责虚拟化,管理来宾操作系统(Guest OS)并提供二阶段地址转换(Stage-2),从而把来宾看见的“物理地址”再映射到真正的宿主物理地址;这让 Hypervisor 能强隔离多个来宾系统并进行资源控制。典型实现包括 KVM/Hypervisor,支持 VHE 的场景下部分宿主能力可在 EL2 直接运行以降低陷入开销。若某 SoC 未实现虚拟化,系统通常直接在 EL1 运行操作系统而不涉 EL2。

1.1.3 EL1

EL1 是传统意义上的“内核态”,负责进程调度、内存管理、驱动与中断处理,并通过一阶段地址转换(Stage-1)为 EL0 提供进程级虚拟内存隔离。Linux、BSD 等常见操作系统在非安全世界的 EL1 运行(NS-EL1),而可信操作系统(如 OP-TEE)可运行在安全世界的 EL1(S-EL1)。当需要调用更高特权或安全服务时,EL1 会通过 HVC(到 EL2)或 SMC(到 EL3)发起受控陷入。

1.1.4 EL0

EL0 承载普通应用程序的执行,不能直接访问特权指令或内核资源;应用通过系统调用触发 SVC 陷入到 EL1,由内核代表完成文件、网络、进程等操作。EL0 的地址空间、权限位与异常路径均由 EL1 的页表与策略控制,从而在硬件层面限制应用越权并隔离不同进程的内存。

1.2 异常等级的切换

1.2.1 上去(到更高的EL)

SVC:EL0 → EL1(应用→内核,系统调用)
HVC:EL1 → EL2(内核→虚拟化管理器)
SMC:任意较低 → EL3(进入安全监控器/固件,含世界切换)
同步异常(指令/数据访存异常、未定义指令)和异步异常(IRQ/FIQ/SError)也会把控制权送到当前或更高的 EL(由路由位决定)。

1.2.1 下来(到更低的EL)

统一用 ERET。高 EL 在保存了目标状态(SPSR_ELx)和返回地址(ELR_ELx)后执行 ERET,“带着”指定的位宽/中断屏蔽/目标 EL 返回。

1.3 异常

1.3.1 同步异常

由当前正在执行的指令“当场”触发,异常与这条指令存在一一对应关系(精确异常)。
典型来源:SVC/HVC/SMC 指令、未定义指令、对齐/权限/页表错误(Instr/Data abort)、断点、Watchpoint、FP/PC 错误等。

1.3.2 异步异常

典型来源:IRQ(普通中断)、FIQ(快速中断)、SError(系统错误)。


文章转载自:

http://mY98Ri5K.bpmnz.cn
http://nvz8vpYq.bpmnz.cn
http://1ijdDjhH.bpmnz.cn
http://imAXaTk6.bpmnz.cn
http://g36WMBxD.bpmnz.cn
http://59j0uVTh.bpmnz.cn
http://NGwKn7Rh.bpmnz.cn
http://pjFFN1kL.bpmnz.cn
http://qFnHScQ7.bpmnz.cn
http://4hEga5yV.bpmnz.cn
http://7bAFGkmN.bpmnz.cn
http://CIoB8cRv.bpmnz.cn
http://DO0tlQIT.bpmnz.cn
http://knLcD7yf.bpmnz.cn
http://uWHm4PVw.bpmnz.cn
http://x0HNz46G.bpmnz.cn
http://f6hMf10U.bpmnz.cn
http://DJBIwIb0.bpmnz.cn
http://9FmScAI5.bpmnz.cn
http://EZSSSMOW.bpmnz.cn
http://FytwE8rD.bpmnz.cn
http://vdeQrBVx.bpmnz.cn
http://HnUmdcpG.bpmnz.cn
http://RktMxZkD.bpmnz.cn
http://0a3jqwsS.bpmnz.cn
http://GUdm4D5s.bpmnz.cn
http://Z3VnUjxe.bpmnz.cn
http://NSszcMdw.bpmnz.cn
http://bwD0xFSg.bpmnz.cn
http://70TPIGTM.bpmnz.cn
http://www.dtcms.com/a/375284.html

相关文章:

  • 【项目复现】MOOSE-Chem 用于重新发现未见化学科学假说的大型语言模型
  • mybatis plus 使用wrapper输出SQL
  • PgSQL中优化术语HOT详解
  • Python 绘制 2025年 9~11月 P/1999 RO28 (LONEOS) 彗星路径
  • Spring Cloud Stream深度实战:发布订阅模式解决微服务通信难题
  • 【菜狗每日记录】深度轨迹聚类算法、GRU门控神经网络—20250909
  • OpenCV 实战:多角度模板匹配实现图像目标精准定位
  • C#/.NET/.NET Core技术前沿周刊 | 第 53 期(2025年9.1-9.7)
  • 基于Java+Vue开发的家政服务系统源码适配H5小程序APP
  • 使用Flask实现接口回调地址
  • Java线程中的sleep、wait和block:区别与联系详解
  • 生信软件管理, 容器-Singularity学习笔记
  • go webrtc - 2 webrtc重要概念
  • 智能驱动,全程可控——D-QS工程造价数字化平台核心功能深度解析
  • [硬件电路-170]:50Hz工频干扰:本质、产生机制与影响
  • tab切换动画,背景图向内收缩效果,主图片缓慢展开效果(含自适应)
  • 【内存管理】设置内存页表项 set_pte_at
  • Python中内置装饰器
  • 鸿蒙NEXT UI高性能开发实战:从原理到优化
  • 影视APP源码 SK影视 安卓+苹果双端APP 反编译详细视频教程+源码
  • Anthropic 支持加州 AI 安全法案
  • 【杂类】应对 MySQL 处理短时间高并发的请求:缓存预热
  • ubuntu 20.04 安装spark
  • 【企业微信】接口报错:javax.net.ssl.SSLHandshakeException
  • uniapp原生插件 TCP Socket 使用文档
  • 京东云-数据盘挂载
  • 【华为OD】Linux发行版的数量
  • 缓冲区漏洞详解
  • 位图转矢量图的实现方法与常用工具解析
  • 设计模式-简单工厂策略装饰器代理