ARMv8-A编程指导之ARMv8基础(1)

2022/2/2 9:42:33

本文主要是介绍ARMv8-A编程指导之ARMv8基础(1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

        在ARMv8中,执行发生在四个异常级别的其中一个。在AArch64中,异常级别决定特权级别,这些特权级别以相同方式被定义在ARMv7中。异常级别决定特权级别,因此执行在ELn相对应于特权PLn。类似的,有更大值n的异常级别高于其他的有更高的异常界别。一个小于其他的异常级别被描述为一个低异常级别。

        异常级别提供了应用于跨ARMv8架构的所有操作状态的软件执行的逻辑分离。它类似于支持概念,在计算科学中的分级保护域。

        下列为软件运行在每个异常级别的典型例子:

EL0: 通常为用户应用

EL1: 操作系统内核,通常被描述为特权级别

EL2: hypervisor

EL3: 底层firmware,包括安全monitor

        通常,一组软件,如应用,操作系统内核,或hypervisor,占一个异常级别。一个异常级别为在内核中的hypervisor,如KVM,它可同时执行在EL2和EL1。

        ARMv8-A提供两个安全状态,安全和非安全。非安全状态也为normal world。它使能OS可并行执行一个trusted OS运行在相同的硬件上,并提供应对某些软件攻击和硬件攻击的保护。ARM trustzone技术使系统在normal和secure world之间被分区。对于ARMv7-A架构,安全monitor行为如一个网关在normal和secure world之间移动。

        ARMv8-A也提供虚拟化的支持,虽然仅在normal world。这意味着hypervisor或虚拟机管理器VMM代码可运行在系统和host*guest操作系统上。基本上guest操作系统运行在虚拟机上。每个OS没有意识到它在系统中是与其他guest操作系统来共享时间。

        Normal Wolrd(对应于非安全状态)具有如下特权部分:

(1)Guest OS kernel

        该内核包含运行在非安全EL1的Linux和Windows。当运行在hypervisor之下时,OS内核可以作为guest或host,这依赖于hypervisor模式。

(2)Hypervisor

        运行在EL2,通常为非安全状态。当hypervisor使能或存在时,hypervisor为OS内核提供虚拟化服务。

        secure world具有如下特权部分:

(1)secure firmware

        在应用处理器上,firmware必须时运行在启动时的第一件事。它提供几个服务,包括platform初始化,trusted OS的安装,和secure monitor调用的路由。

(2)Trusted OS

        Trusted OS提供对normal world的安全服务和提供执行在安全或trusted应用的实时环境。

        在ARMv8-A架构中的secure monitor在更高的异常级别并高于其他级别。它提供了软件特权的逻辑模式。

        上图显示了EL2的安全版本时不能用的。

3.1 执行状态

        ARMv8架构定义了两种执行状态:AArch64和AArch32。每个状态用于描述使用64位宽通用寄存器或32位宽通用寄存器的执行。当ARMv8 AArch32保留ARMv7定义的特权,在AArch64中,特权级别由异常级别决定。因此,执行在ELn于特权PLn相关。

        当在AArch64状态,处理器执行在A64指令集。当在AArch32状态,处理器能执行在A32(称为ARM早期的架构版本)指令集。

        下列图显示在AArch64和AArch32的异常级别的组织。

        在AArch64:

        在AArch32:

        在AArch32状态,Trusted OS执行在安全EL3,在AArch64状态它主要执行在安全EL1。



这篇关于ARMv8-A编程指导之ARMv8基础(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程