【Arm】访问陷阱简介

1、 问题场景

访问陷阱(Trapping)是Arm架构中实现权限控制的核心机制,当低异常等级(EL)尝试执行受限操作时,系统自动将其重定向至高EL处理。

当访问陷阱发生时,处理器会停止执行当前的指令流,并跳转到一个预设的处理程序,这个处理程序被称为陷阱处理程序(Trap Handler)。

处理器会保存当前的执行状态,以便陷阱处理程序可以正确地处理异常情况。

2、软硬件环境

1)、软件版本:无

2)、电脑环境:Window 10

3)、外设硬件:无

3、访问陷阱

1) 访问陷阱的核心机制

  • 触发条件

    • 特权操作:低EL访问高EL专属寄存器(如系统控制寄存器)。

    • 内存权限违规:未对齐访问(SCTLR_ELx.A=1时)或越权访问内存区域。

    • 调试事件:断点、观察点触发时。

    • 配置错误:如访问未实现的PMU计数器(PMEVCNTR/PMEVTYPER)。

  • 陷阱流向规则

    • EL0 → EL1:用户态访问内核特权资源(如PMU寄存器)。

    • EL1 → EL2:Guest OS尝试访问虚拟化控制寄存器。

    • EL1/EL2 → EL3:安全状态切换请求(如调用Secure Monitor)。

2)关键控制寄存器

  • SCTLR_ELx:

.A位=1时,未对齐访问触发对齐错误陷阱。

  • PMUSERENR_EL0:

控制EL0是否可访问PMU寄存器(需.ER和.EN同时为1)。

  • MDCR_EL2:

.HPMN定义EL1可访问的PMU计数器数量,超限访问触发EL2陷阱。

3)典型陷阱场景示例

示例1:EL0非法访问PMU寄存器

场景:

EL0应用尝试写入PMEVTYPER_EL0(性能监控事件类型寄存器)。

陷阱流程:

若PMUSERENR_EL0.EN=0,访问被阻断。

系统生成数据异常(Data Abort),陷阱至EL1处理。

EL1通过ESR_EL1解析错误原因(如STATUS=0x21表示权限错误)。

示例2:EL1未对齐内存访问

场景:

EL1内核执行非对齐64位存储指令(如STR X0, X1,X1地址未对齐)。

陷阱流程:

若SCTLR_EL1.A=1,触发对齐错误。

生成同步异常(Synchronous Abort),陷阱至EL1自身处理。

若EL2启用且配置拦截(如HCR_EL2.TGE=1),则转由EL2处理。

示例3:EL2虚拟化资源拦截

场景:

EL1虚拟机尝试访问CNTVCT_EL0(虚拟计数器)。

陷阱流程:

EL2设置HCR_EL2.TVM=1(虚拟计时器陷阱使能)。

访问触发陷阱至EL2,由Hypervisor模拟该寄存器.

4)陷阱 访问的意义

  1. 安全性:防止用户程序越权操作硬件资源。

  2. 虚拟化:Hypervisor透明截获Guest OS敏感操作。

  3. 错误隔离:如未对齐访问可能引发TLB冲突或外部中止,陷阱确保系统稳定性。

相关推荐
LCG米2 小时前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
La Pulga6 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡9 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
硅基手札11 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
NamoAmitabha12811 小时前
ARM Cortex-A9 核心架构(演化后的“缝合怪”)--deepseek
arm开发·zynq--ps
何粥学13 小时前
Vivado 2024.2 开发记录(AC820 Zynq-7020)——软件使用,点亮led灯
单片机·嵌入式硬件·zynq
Sakura_j_h_14 小时前
51 单片机驱动四位数码管:动态扫描、限流电阻与消影的取舍
单片机·嵌入式硬件·51单片机·嵌入式·数码管·动态扫描·限流电阻
AllData公司负责人14 小时前
AllData 可定义数据中台完成信创适配|银河麒麟 + 海光X86 CPU / 华为鲲鹏ARM CPU+ OceanBase / 人大金仓国产化环境部署落地
大数据·arm开发·数据库·人工智能·oceanbase·kingbase
蹊黎1 天前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
无敌贵点大王1 天前
从寄存器层面重学STM32(6)——串口USART实战部分
stm32·单片机·嵌入式硬件