跳转至

2.2 ARM体系结构

🔴 超高频考点,大量选择题和填空题

ARM工作状态

ARM处理器有两种工作状态:

状态 指令宽度 特点
ARM状态 32位指令 性能更强
Thumb/Thumb-2状态 16位(Thumb)或16/32位混合(Thumb-2) 代码密度更高,占存储空间小

还有一种: - 调试状态(某些核有)

选择题

错误说法:"ARM状态既支持16位指令宽度也支持32位指令宽度" → 错误! ARM状态只有32位指令,Thumb状态才是16位

正确说法: - ARM处理器复位后总处于ARM状态 ← 这个是正确的 - Thumb状态代码密度大于ARM状态,占存储空间 ← 正确

官方样题第12题:哪个说法错误?答:B(ARM状态支持16位指令是错的)

ARM 7种工作模式

ARM处理器有7种工作模式,对应不同的权限和场景:

模式 英文 触发方式
用户模式 User 正常应用程序运行
快速中断模式 FIQ 快速中断发生时
外部中断模式 IRQ 外部中断发生时
管理模式 Supervisor 复位/软件中断SWI后进入
数据访问中止 Abort 内存访问失败
未定义指令 Undefined 执行未知指令
系统模式 System 特权级用户模式

CPSR寄存器

CPSR(Current Program Status Register)= 当前程序状态寄存器

这个寄存器非常重要,它记录了: - 当前工作状态(ARM/Thumb) - 当前工作模式(User/FIQ/IRQ等) - 是否允许 IRQ 中断 - 是否允许 FIQ 中断 - 条件标志位(N/Z/C/V)

选择题

:要设置ARM处理器工作在外部中断模式,允许IRQ,禁止FIQ,使用Thumb状态,需要设置哪个寄存器?

答:C)CPSR

PSP和MSP是Cortex-M的栈指针寄存器,SPSR是保存的程序状态寄存器(中断时保存CPSR)。 设置当前工作状态和模式 → 修改 CPSR

ARM寄存器组织

ARM处理器内部有很多寄存器:

  • 通用寄存器:R0~R12(共13个)
  • 栈指针:R13(SP)
  • 链接寄存器:R14(LR)— 存放子程序返回地址
  • 程序计数器:R15(PC)— 存放下一条指令地址

重要

调用子程序时: - BL label → 跳转并把返回地址存入 LR(R14) - MOV PC, LR → 把LR的值放回PC,实现返回

ARM 7种异常

填空题必考,必须背下来!

7种异常(按优先级从高到低):

1. 复位(Reset)          ← 优先级最高
2. 快速中断请求(FIQ)
3. 外部中断请求(IRQ)
4. 指令预取中止(PABT)
5. 数据访问中止(DABT)
6. 软件中断(SWI)
7. 未定义指令(UND)      ← 优先级最低

填空题: - 7种异常包括:复位RESET、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ及__,其中优先级最高的异常是____。 - 答:快速中断(FIQ)复位(RESET)

大端模式与小端模式

这是高频选择题,需要会手算。

通俗解释: - 大端(Big-Endian):高位字节存在低地址(像写书一样,从前往后) - 小端(Little-Endian):低位字节存在低地址(ARM默认是小端,但支持大端)

计算题(必须会做)

题目:内存中: - 0x80000000 → 0x33 - 0x80000001 → 0x31 - 0x80000002 → 0x30 - 0x80000003 → 0x35

问:ARM在大端模式下,地址0x80000000所指示的一个字(4字节)是?

大端模式解析:最低地址存最高字节 - 最高字节(byte3)在地址0x80000000 = 0x33 - byte2在0x80000001 = 0x31 - byte1在0x80000002 = 0x30 - 最低字节(byte0)在0x80000003 = 0x35

所以这个字 = 0x33313035

答:D)0x33313035

(小端模式的话,最低地址存最低字节,结果就是反过来)

数据类型

ARM支持的数据类型: - 字节(Byte):8位 - 半字(Half-Word):16位 - 字(Word):32位

记住后缀: - B = Byte(字节) - H = Half-word(半字) - 无后缀 = Word(字,32位)


真题演练

以下是NCRE三级嵌入式真题中与本节相关的典型考题:

1. 关于ARM处理器的工作模式,以下说法错误的是( )。

  • A)用户模式是程序正常执行的模式
  • B)快速中断模式处理高速中断,用于高速数据传输或通道处理
  • C)管理模式用于操作系统的保护模式,处理软中断
  • D)系统模式用于处理未定义的指令陷阱
答案解析

答:D 系统模式是运行具有特权的操作系统任务,而非处理未定义指令。处理未定义指令的是未定义指令模式(UND)。ARM的7种工作模式要准确区分各自用途。


2. 以下关于ARM处理器CPSR寄存器说法错误的是( )。

  • A)CPSR记录ARM的工作状态
  • B)CPSR决定ARM工作模式
  • C)CPSR可设定是否允许外部中断和快速中断
  • D)CPSR是ARM的控制寄存器
答案解析

答:D CPSR的全称是当前程序状态寄存器(Current Program Status Register),不是控制寄存器。它包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。A、B、C三项描述均正确。


3. ARM处理器如果R1=0x98001200,已知在小端模式下,内存0x98001204中存放数据0x35,0x98001205中存放数据0x36,0x98001206中存放数据0x37,0x98001207中存放数据0x38,在指令LDR R0,[R1,#4]执行后,R0中的值为( )。

  • A)0x35363738
  • B)0x36353837
  • C)0x38373635
  • D)0x37383536
答案解析

答:C 首先,LDR R0,[R1,#4]从地址R1+4=0x98001204处加载一个字。在小端模式下,低地址存低字节:0x98001204存的0x35是最低字节(byte0),0x98001207存的0x38是最高字节(byte3)。因此读出的字为0x38373635。


4. 【填空题】经典ARM处理器有7种异常:主要包括复位RESET、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ以及_,其中优先级最高的异常是_。

答案

答:快速中断FIQ;复位RESET ARM的7种异常按优先级从高到低:复位 > 快速中断FIQ > 外部中断IRQ > 指令预取中止 > 数据访问中止 > 软件中断 > 未定义指令。


5. 【填空题】在ARM处理器中,R0~R15是通用寄存器,其中作为堆栈指针SP使用的寄存器是_,作为程序链接寄存器LR使用的是_。

答案

答:R13;R14 ARM通用寄存器中,R13用作堆栈指针(SP),R14用作程序链接寄存器(LR,存放子程序返回地址),R15用作程序计数器(PC)。