ARM:从裸机到操作系统02 —— ARM处理器模式

ARM Cortex-A7处理器及运行模式介绍

ARM 体系结构的相关基础知识

网上已经有很多相关资料,此处仅涉及后续开发会用到的的知识点,不再过多叙述。


ARM处理器是主流的嵌入式处理器,作为嵌入式应用系统的关键组成部分,广泛应用于移动终端等日常便携式消费电子设备。

本篇主要介绍 ARMv7-A 体系架构的Cortex-A7内核以及其运行模式。

一、ARM 简介

ARM是 Advanced RISC Machines 的缩写,它是微处理器领域的全球知名企业,专注于设计基于‌精简指令集计算机(RISC)‌的处理器架构。人们也用 ARM 代指 ARM公司设计的32位RISC处理器内核及其体系架构。

ARM公司专门从事芯片IP(Intellectual Property,知识产权)设计与授权业务,它不生产具体芯片,而是将其设计的内核授权给其他公司生产。

从最早的ARM 处理器开始,ARM 体系结构不断完善和发展。ARM体系结构与常见ARM内核的对应关系如下所示。

体系结构典型处理器内核
ARMv4ARM7TDMI / ARM920T
ARMv5ARM926EJ-S / ARM1020E
ARMv6ARM1136J-S / Cortex-M0/M1
ARMv7Cortex-M3/M4 / Conex-R4/R5/R7 / Cortex-A7/A8/A9/A15
ARMv8Cortex-A53/A57/A72
ARMv9Cortex-X2

Cortex系列根据不同的应用场景分为:
􀂉 A (Application)系列:面向性能密集型系统的应用处理器内核。
􀂉 R (Real time)系列:面向实时应用的高性能内核。
􀂉 M (Microcontroller)系列:面向各类嵌入式应用的微控制器内核。


二、ARM 处理器

参考资料:
ARM® Architecture Reference Manual
ARM® Cortex™-A Series Programmer’s Guide
Cortex™-A7 MPCore™ Technical Reference Manual Revision: r0p5

2.1 Cortex-A7处理器

ARM Cortex-A7 处理器是 ARM 开发的最节能的应用处理器,它扩展了 ARM 在入门级智能手机、平板电脑和其他高级移动设备中的低功耗领导地位。

Cortex-A7 处理器:
在这里插入图片描述

  • 32 位 RISC 内核,具有 16个32 位可见寄存器,具有基于模式的寄存器组。
  • 改进 Harvard 架构(单独、并发访问指令和数据)。
  • 加载/存储架构。
  • 标准 Thumb-2 技术。
  • 紧密耦合的低延迟 2 级缓存(高达 4MB)。
  • 浮点单元。
  • 用于多媒体和 SIMD 处理的 NEON 技术。
  • 向后兼容来自以前 ARM 处理器的代码。
  • 4GB 的虚拟地址空间和至少 4GB 的物理地址空间。
  • 用于虚拟地址到物理地址转换的硬件转换表遍历。
  • 虚拟页面大小为 4KB、64KB、1MB 和 16MB。可缓存性属性和访问权限可以按页设置。
  • Big-endian 和 little-endian 数据访问支持。
  • 对基本加载/存储指令的非对齐访问支持。
  • MPCore 变体(即 Cortex-A 系列处理器的多核版本)上的对称多处理 (SMP) 支持,在 L1 缓存级别具有完全的数据一致性。自动高速缓存和转换旁路缓冲区(TLB)维护传播提供了高效的 SMP 操作。
  • 物理索引、物理标记 (PIPT) 数据缓存。

2.2 ARM 处理器模式

ARM 体系结构是一种模式体系结构。在安全扩展(Security Extensions)引入之前,它有七种处理器模式,如下表所示。其中有六种特权模式(privileged modes)和一种非特权用户模式(non-privileged user mode)。特权是指执行用户(非特权,Unprivileged)模式无法完成的某些任务的能力。在用户模式下,影响整个系统配置的操作会受到限制,例如 MMU 配置和高速缓存操作。模式与异常事件相关联。

ARMv6 之前的 ARM 处理器模式

模式功能特权
User (USR)用户模式,用户程序的运行模式Unprivileged
System(SYS)系统模式,运行特权级的操作系统任务Privileged
FIQ快速中断模式,用于高优先级中断,FIQ中断异常时进入Privileged
IRQ一般中断模式,在 IRQ 中断异常时进入Privileged
Supervisor (SVC)管理模式,在重置时或执行 Supervisor Call 指令 (SVC) 时进入Privileged
Abort (ABT)中止模式,在内存访问异常时进入Privileged
Undef (UND)在执行未定义指令时进入Privileged

除用户模式外,其他模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许特权模式下访问,特权模式可以任意访问系统资源并自由切换处理器模式,而用户模式不能直接切换到其他模式。

特权模式中除系统模式以外的其他 5 种模式又统称为异常模式。它们除了可以在特权模式下的程序切换进入,还可以由特定的异常进入。管理模式也称为超级用户模式,是为操作系统提供软件中断的特有模式,通过软件中断,用户程序才可以通过系统调用切换到管理模式。

  • (1) 用户模式: 用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式下,要想访问硬件资源或切换到其他模式只能通过软件中断或产生异常。
  • (2) 系统模式。 系统模式是特权模式,不受用户模式的限制。 用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便地访问用户模式的寄存器,而且操作系统的权任务可以使用这个模式访问一些受控的资源。
  • (3) 一般中断模式: 一般中断模式也称普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进人该模式,该模式为特权模式,可以自由访问系统硬件资源。
  • (4) 快速中断模式: 快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
  • (5) 管理模式: 管理模式是 CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时通过软件中断进入该模式。
  • (6) 中止模式: 中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进人该模式,Linux下编程时经常出现的 segment fault 通常都是在该模式下抛出返回的。
  • (7) 未定义模式:未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。

新的 Cortex-A 架构引入 TrustZone 安全扩展,新增了 Monitor 模式;ARMv7-A架构的虚拟化扩展‌在现有特权模式基础上新增了‌Hypervisor模式(Hyp)
因此,Cortex-A7 处理器有 9 种处理模式
特定处理器模式和状态的存在取决于处理器是否实现了相关的架构扩展:
在这里插入图片描述

对于支持TrustZone的处理器,系统安全通过将设备的所有硬件和软件资源划分为两类实现:‌

  • 安全世界(Secure World)‌:专用于安全子系统(如加密模块、可信执行环境)。‌
  • 普通世界(Non-secure World)‌:运行常规操作系统与应用。

当处理器处于‌普通世界状态‌时,‌无法访问分配给安全状态的内存资源‌。此时,‌安全监视器(Secure Monitor)‌负责协调两种状态间的切换。
若系统实现了安全扩展,则运行于‌Monitor模式的软件‌将控制处理器在安全与非安全状态之间的切换。
在这里插入图片描述

虚拟化扩展‌允许在单一硬件平台上‌同时运行多个操作系统‌。通过虚拟化扩展,不同操作系统可共存并共享同一系统资源,实现更高效的平台资源利用率。

若系统实现虚拟化扩展(Virtualization Extensions),其特权模型(privilege model)将与早期架构不同。在‌非安全状态(Non-secure state)‌下,系统支持三个特权等级:‌PL0‌、‌PL1‌和‌PL2‌。

  • PL0(特权等级0)‌
    ‌对应模式‌:用户模式(User mode)。
    功能特性‌:属于应用程序软件的运行等级,执行于用户模式。
    在此模式下运行的软件称为‌非特权软件(unprivileged software)‌,无法访问架构的某些关键功 能(如修改配置参数)。
    仅支持‌非特权内存访问(unprivileged memory accesses)‌。

  • PL1(特权等级1)‌
    ‌对应模式‌:除用户模式(User mode)和Hypervisor模式(Hyp mode)外的‌所有其他模式‌。
    ‌功能特性‌:通常为操作系统(OS)的运行等级。
    操作系统代码在PL1等级的所有模式中执行,而其应用程序则在PL0等级(用户模式)运行。

  • PL2(特权等级2)‌
    ‌对应模式‌:Hypervisor模式(Hyp mode)。
    ‌功能特性‌:通常由‌虚拟机监控程序(hypervisor)‌使用,用于管理和切换运行于PL1等级的‌客户操作系统(Guest OS)‌。
    通过PL2等级的Hypervisor,可在同一处理器系统中实现多个操作系统的共存与并行执行。

在这里插入图片描述
上述特权等级(PL0/PL1/PL2)与TrustZone的‌安全状态(Secure/Non-secure)‌设置是分开的。安全状态决定资源的访问权限(如安全内存隔离),而特权等级控制软件的执行权限。两者共同构建系统的安全与隔离机制。

通用操作系统(如 Linux)及其应用程序应在非安全状态下运行。安全状态预计由特定供应商的固件或安全敏感软件占据。在某些情况下,在安全状态下运行的软件甚至比在非安全状态下运行的软件权限更高。

当前处理器模式和执行状态包含在当前程序状态寄存器(CPSR)中。改变处理器状态和模式既可以通过特权软件明确实现,也可以通过与相关部分的异常链接来实现。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uoscn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值