下篇文章:ARMv8 异常模型入门及渐进 2 - 通用寄存器介绍
1. ARMv8 异常模型简介
在ARM v7架构中的ARM核用PL
的方式定义执行等级。在ARMv8中ARM核的执行等级划分如下图所示。
ARM v8中一个ARM core 运行时可能具有两种状态:分别为
- secure world
- normal world。
两种状态下都有其对应的EL0
, EL1
。
而EL3
是独立的,属于secure world,EL2
是ARM core的虚拟化模式,目前大部分芯片公司都将该level放在normal world中。linux kernel运行在normal world的 EL1
, linux的 user space 运行在normal world的 EL0
.
TEE OS 运行在secure world的 EL1
,
TA 运行在secure world的 EL0
。
而ARM core 的secure world与normal world状态是通过 EL3
来实现相互切换的。EL3
只完成secure world与normal world的切换,从EL3
出来之后要么进入到 TEE OS的kernel space, 也即是secure world的 EL1
,要么进入到 normal world的 EL1
(linux kernel space)。
EL2目前使用的较少,所以可以忽略掉
在ARMv8中,运行 level 的转换只从是从低级别往高级别迁移,而且运行level的迁移都是通过出发异常来实现的,而每次异常只会产生一个运行level的迁移, 也即是EL0
只能迁移到EL1
不能直接从EL0
迁移到EL3
。 EL0
对应 userspace, EL1
对应 kernel space, EL3
对应 ARMv7 中的 moniotr(也即是运行权限)。
1.1.1 ARMv7 Trust Zone
在 ARMv7的后期引入了ARM TrustZone技术,所以在ARMv7中core的执行状态也分为两种。
Normal World:
- PL0 (UserSpace空间)
- PL1(kernel OS, 比如linux OS)
- PL2(Hyp mode)
SecureWorld:
- PL0 (UserSpace 比如TA应用)
- PL1 (Trusted OS,比如QSEE,OP-TEE)
- 无 PL2,Secure Moniter也是运行在PL1阶段的
1.1.2 ARMv7 Processor modes
在ARMv7中定义了不同的特权级别。分别是PL0, PL1, PL2(参考表1-2)。而每种特权级别依赖处理器模式Processor modes, 在ARMv7中定义了九种不同的处理器模式:
- User 模式特权级别最低,属于PL0;
- SVC 模式是进入Reset模式或者调用SVC指令,而SVC指令在ARMv7就是所谓的系统调用指令,比如当调用open 函数时,会触发系统调用,最终会通过SVC指令陷入内核的;
- Monitor 模式,只有在Secure world才可以使用,monitor是用来切换normal world和secure world;
- System 模式,一般是操作系统运作的模式;
- Hyp 模式,运行在PL2,而且只有normal world才存在。
下篇文章:ARMv8 异常模型系列 2 - 通用寄存器介绍文章来源:https://www.toymoban.com/news/detail-606268.html
推荐阅读:
https://blog.csdn.net/longwang155069/article/details/105010182
https://blog.csdn.net/longwang155069/article/details/105146014文章来源地址https://www.toymoban.com/news/detail-606268.html
到了这里,关于【ARMv8 异常模型入门及渐进 1 -- 处理器运行模式及EL3/EL2/EL1学习】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!