嵌入式Linux之ARM A7处理器架构

ARM A7处理器架构

1.运行模式:

User、 FIQ、 IRQ、 Supervisor(SVC)、 Abort、 Undef和 System,其中 User 是非特权模式,其余 6 中都是特权模式。

2.寄存器结构

ARM 架构提供了 16 个 32 位的通用寄存器(R0~R15)供软件使用,前 15 个(R0~R14)可以用作通用的数据存储,R13(SP)是堆栈指针,R14(LR)是链接寄存器, R15 是程序计数器 PC,用来保存将要执行的指令。 ARM 还提供了一个当前程序状态寄存器 CPSR 和一个备份程序状态寄存器 SPSR, SPSR 寄存器就是 CPSR 寄存器的备份。

嵌入式Linux之ARM A7处理器架构

CortexA 内核寄存器组成如下:

①、 34 个通用寄存器,包括 R15 程序计数器(PC),这些寄存器都是 32 位的。
②、 8 个状态寄存器,包括 CPSR 和 SPSR。
③、 Hyp 模式下独有一个 ELR_Hyp 寄存器
R0~R15 就是通用寄存器,通用寄存器可以分为以下三类:
①、 未备份寄存器,即 R0~R7。
②、 备份寄存器,即 R8~R14。
③、 程序计数器 PC,即 R15。

未备份寄存器

所有的处理器模式下这 R0~R7这8 个寄存器都是同一个物理寄存器

备份寄存器

备份寄存器的部分寄存器在不同模式下对应不同的物理寄存器,便于保存和保护现场。通过压栈和出栈来保护现场。

程序计数器R15

程序计数器 R15 也叫做 PC, R15 保存着当前执行的指令地址值加 8 个字节,这是因为 ARM
的流水线机制导致的。 ARM 处理器 3 级流水线:取指->译码->执行。
R15 (PC)值 = 当前执行的程序位置 + 8 个字节。

程序状态寄存器

所有的处理器模式都共用一个 CPSR 物理寄存器,因此 CPSR 可以在任何模式下被访问。
CPSR 是当前程序状态寄存器,该寄存器包含了条件标志位、中断禁止位、当前处理器模式标志
等一些状态位以及一些控制位。