ARM架构(特别是ARMv8-A及之后的AArch64执行状态)使用Exception Levels(异常级别,简称EL)来表示处理器的特权级别(privilege level)。EL编号越大,特权越高。ARMv8-A一共定义了4个异常级别:异常级别
特权程度
典型运行的软件
主要作用与说明
是否必须实现
EL0
最低
用户态应用程序(User applications)
无特权级别,不能直接访问系统寄存器、MMU控制寄存器等。普通App、手机上的普通程序跑在这里。
必须
EL1
中等
操作系统内核(OS kernel,如Linux内核)
具有内核态特权,可控制MMU、系统寄存器、中断等。Guest OS(虚拟机内的操作系统)也跑在EL1。
必须
EL2
较高
Hypervisor / VMM(虚拟机监视器)
支持虚拟化扩展(Virtualization extensions)。KVM、Xen等Hypervisor运行在这里,能控制和虚拟化EL1和EL0。
可选
EL3
最高
Secure Monitor / Trusted Firmware
负责TrustZone安全世界的切换(Normal World Secure World),常运行Secure Monitor、BL31、OP-TEE的Monitor等。SMC指令通常会进入EL3。
可选

关键特点总结特权顺序(从小到大):EL0 < EL1 < EL2 < EL3
更高EL可以访问和控制更低EL的系统寄存器(例如EL2可以看到并修改EL1的SCTLR_EL1、TTBR_EL1等)
EL0和EL1是强制实现的,几乎所有ARMv8-A芯片都有
EL2 用于支持硬件虚拟化(Type-1 Hypervisor)
EL3 用于实现TrustZone(安全世界与普通世界的隔离与切换)
当前异常级别可以通过CurrentEL寄存器读取
从低EL到高EL的跳转通常通过异常(interrupt、exception、SVC、HVC、SMC等)实现
从高EL返回低EL使用eret指令

典型软件栈对应(以Android手机为例)普通App → EL0 (Normal World)
Android/Linux内核 → EL1 (Normal World)
KVM(如果支持虚拟机) → EL2 (Normal World)
OP-TEE / Trusted OS 的Monitor + Secure世界切换 → EL3
Trust Application (TA) → EL0 (Secure World)
Trusted OS(如QSEE、OP-TEE的内核部分) → EL1 (Secure World)

简单一句话概括:
ARM把“特权环”改叫“异常级别EL”,从EL0(用户)到EL3(最高安全监控),数字越大权限越大。有具体场景(比如想问某个EL能做什么寄存器、虚拟化怎么用EL2、TrustZone怎么用EL3等)可以继续细问。

Comments

Be the first to add a comment