ARM 可以指 Advanced RISC Machines,它是一种处理器架构,ARM 架构是一种精简指令集计算机(RISC)架构。

一,计算机系统与嵌入式处理器体系总结

(1)计算机系统的基本组成

计算机系统是硬件与软件的有机结合,二者缺一不可:

  1. 硬件系统(物理基础)
    由五大核心部件组成,遵循冯・诺依曼体系结构:

    • 运算器:执行算术(加减乘除)和逻辑运算(与或非),核心是 ALU(算术逻辑单元)。
    • 控制器:指挥硬件协调工作,包含指令寄存器、程序计数器(PC)等,是系统的 “指挥中心”。
    • 存储器:存储数据和程序,分内存(RAM/ROM,速度快但容量小)和外存(硬盘 / Flash,容量大但速度慢)。
    • 输入设备:将外部信息传入计算机(如键盘、传感器、摄像头)。
    • 输出设备:将处理结果反馈到外部(如显示器、打印机、电机)。
  2. 软件系统(功能实现)

    • 系统软件:管理硬件和支持应用的基础软件,包括操作系统(如 Windows、Linux)、编译器、驱动程序等。
    • 应用软件:为特定需求开发的软件(如办公软件、嵌入式控制程序)。
(2)处理器核心概念与分类

处理器是硬件系统的 “大脑”,按功能和场景分为多种类型:

类型 全称 核心特点与应用场景

CPU

(center Processing Unit)

中央处理单元 通用型处理器,集成运算器 + 控制器,负责系统整体调度(如电脑、服务器的 X86/ARM 处理器)。

GPU

(Grapics Processing Unit)

图形处理单元 擅长并行计算,专注图形渲染和大规模数据处理(如显卡、AI 加速)。

FPU

(float Processing Unit)

浮点处理单元 专门处理浮点运算(如科学计算、3D 建模),常集成在 CPU 中。

嵌入式领域:

MPU

(mirco Processing Unit)

微处理器 面向通用计算,需外接内存和外设(如嵌入式 Linux 系统的 ARM Cortex-A 系列)。

MCU

(Mirco Contral Unit)

微控制器 集成 CPU + 内存 + 外设(GPIO、UART 等),适合控制场景(如 STM32、51 单片机)。

DSP

(digital signal Processing)

数字信号处理器 优化高频数学运算,用于音频 / 视频处理、雷达信号分析等(如 TI 的 TMS320 系列)。
SoC(system on chip) 片上系统 集成 MPU/MCU+DSP+GPU + 外设(如 WiFi、蓝牙),一站式解决复杂场景(如手机芯片、智能汽车)。

SOC(system on chip):片上系统   

                是一种集成和设计的理念,像一个蓝图,将市政府(MPU),警察局(MCU),研究所(DSP)和机场(调制解调器),将这些东西放在同一片土地上(芯片),然后就组成了一个功能完善的城市(芯片)

二,内核框架:

1.冯・诺依曼架构

  • 存储器:程序指令和数据存放在同一块内存
  • 总线:通常只有一套地址总线和数据总线
  • 工作方式:CPU 每次取指令或取数据都要访问同一块内存
  • 优点:结构简单、成本低、编程灵活
  • 缺点:CPU 同一时刻只能取指令或取数据,有 **“冯・诺依曼瓶颈”**,限制了速度
  • 应用:大多数通用计算机(PC、服务器、手机 CPU 等)

2.哈佛架构

  • 存储器:程序指令和数据存放在两块独立的内存
  • 总线:有两套独立的总线(指令总线和数据总线)
  • 工作方式:可以同时取指令和取数据,并行处理
  • 优点:速度快、并行性好,特别适合实时信号处理
  • 缺点:结构复杂、成本高、编程相对受限
  • 应用:DSP(数字信号处理器)、部分单片机、早期计算机

核心区别总结

特性 冯・诺依曼架构 哈佛架构
存储器 统一内存 分离内存
总线 一套总线 两套总线
并行性 取指 / 取数不能同时进行 可同时进行
适用场景 通用计算 实时信号处理

ARM内核存储结构上偏向哈佛架构的特征

1.缓存分离:多数 ARM 内核采用了分离的指令缓存(I-Cache)和数据缓存(D-Cache)。 以 Cortex-A 系列为例,指令和数据分别存储在不同的缓存中,CPU 可以同时从

  • I-Cache 中读取指令,
  • 从 D-Cache 中读写数据提高了系统的并行处理能力,类似于哈佛架构中指令和数据分开存储的设计理念。

2.独立总线(部分情况):一些 ARM 内核具备独立的

  • 指令总线,
  • 数据总线支持同时进行指令读取和数据访问,进一步体现了哈佛架构的特性。

三、处理器架构:CISC 与 RISC

架构决定了处理器的指令集设计和工作方式:

  1. CISC(complex instruction set computer)(复杂指令集计算机)

    • 特点:指令多(数百条)、功能复杂,支持单指令完成复杂操作(如 X86 架构)。
    • 优势:编程直观,适合通用计算机(兼容性强)。
    • 劣势:结构复杂、功耗较高。
  2. RISC(reduce instruction set computer)(精简指令集计算机)

    • 特点:指令少(几十条)、功能简单,通过多条指令组合完成复杂操作(如 ARM、RISC-V 架构)。
    • 优势:结构简单、功耗低、执行效率高。
    • 劣势:编程需更多指令组合,适合嵌入式设备(手机、单片机)

ARM 属于 RISC 架构,RISC 架构的设计理念使得 ARM 内核在低功耗、低成本和高性能方面具有优势,广泛应用于移动设备、物联网设备等嵌入式领域

ARM 的 Cortex-A、Cortex-R 和 Cortex-M 系列是针对不同应用场景设计的内核,核心区别体现在性能、功能和适用领域上,简要概括如下:

系列 核心定位 性能与功能特点 典型应用场景
Cortex-A 高性能通用计算(MPU) 支持复杂操作系统(Linux/Android),带 MMU(内存管理单元),注重多任务和高性能,采用超标量流水线。 智能手机、平板、服务器、汽车智能座舱等。
Cortex-R 实时安全关键型控制(real-time) 强实时性(低延迟),带 MPU(内存保护单元),支持容错和安全特性,适合高可靠性要求场景。 汽车刹车系统、工业控制、医疗设备等。
Cortex-M 低功耗微控制器(MCU) 结构精简,低成本低功耗,支持 RTOS(如 FreeRTOS),无 MMU(部分有 MPU),注重易用性和实时控制。 物联网传感器、家电控制、嵌入式小设备等

ARM 内核主要由以下核心部分构成:

  1. 指令处理单元:包括取指单元(获取指令)、译码单元(解析指令)。
  2. 执行单元算术逻辑单元(ALU)为核心,负责运算和数据处理,含乘法器等专用电路。
  3. 寄存器组通用寄存器(R0-R15)及状态寄存器(CPSR/SPSR),用于快速存储数据和状态。
  4. 存储管理相关:部分内核含内存管理单元(MMU)和分离的指令 / 数据缓存(I-Cache/D-Cache)。
  5. 总线接口:连接外部的总线接口单元,负责与外设、内存通信。(地址总线,数据总线,控制总线)
  6. 中断处理单元:响应和处理中断请求,保障实时性。

3.寄存器组:通用寄存器(R0-R15)及状态寄存器(CPSR/SPSR),用于快速存储数据和状态。

通用寄存器

  • 位于 CPU 核心内部,是处理器的一部分
  • 没有内存地址,只能通过 CPU 指令直接访问(如MOV R0, R1
  • 包括 R0-R12 等通用寄存器和 PC(程序计数器)、LR(链接寄存器)等特殊寄存器
  • 访问速度最快,与 CPU 主频同步

在 ARM 架构中,通用寄存器和特殊功能寄存器分工明确,其中 R0-R12 是通用寄存器(主要用于数据操作),而 R13-R15 则是具有特殊功能的寄存器(与程序运行流程密切相关)。下面详细解释这些寄存器的作用:

(1)通用寄存器(R0-R12)

通用寄存器主要用于临时存储数据、地址或运算结果,在汇编指令中直接参与数据处理,没有固定功能限制(可自由使用)。

寄存器 特点与用途
R0-R7 低组通用寄存器:所有模式下共用一组,没有备份。
常用于传递函数参数、保存临时变量(如 MOV R0, #10 表示将 10 存入 R0)。
R8-R12 高组通用寄存器:在特权模式(如中断模式、管理模式)下有备份寄存器(R8_fiq-R12_fiq 等)。
减少模式切换时的数据保存开销,适合复杂运算或嵌套调用。

(2)特殊功能寄存器(R13-R15)

这三个寄存器有固定功能,直接影响程序的执行流程:

1. R13:栈指针(SP,Stack Pointer)
  • 作用:指向当前栈的顶部,用于管理函数调用、中断时的现场保护。
  • 工作原理
    • 栈是内存中的一块区域,遵循 “先进后出” 原则。
    • 函数调用时,通过 PUSH {R0-R3} 将寄存器数据压入栈(SP 自动减小);
    • 函数返回时,通过 POP {R0-R3} 将数据从栈中恢复(SP 自动增大)。
  • 特点
    • 不同模式下有独立的 SP 备份(如 SP_irq、SP_svc),避免模式切换时栈数据冲突。
    • 必须初始化(如程序启动时设置 MOV SP, #0x20000000 定义栈的起始地址)。
2. R14:链接寄存器(LR,Link Register)
  • 作用:保存函数调用或异常发生时的 “返回地址”,用于执行完成后回到原程序。
  • 工作原理
    • 当执行 BL 函数名(带返回的跳转)时,CPU 会自动将下一条指令的地址存入 LR,然后跳转到函数入口;
    • 函数结束时,通过 MOV PC, LR 将 LR 中的地址送回程序计数器(PC),实现返回。
3. R15:程序计数器(PC,Program Counter)
  • 作用:始终指向下一条要执行的指令地址,控制程序的执行顺序。
  • 工作原理
    • CPU 每执行一条指令,PC 会自动增加(增加的值取决于指令长度,ARM 指令为 4 字节,Thumb 指令为 2 字节);
    • 跳转指令(如 B 标签BL 函数)会直接修改 PC 的值,实现程序流程跳转。

(3)特殊状态寄存器(扩展补充)

除了 R13-R15,ARM 还有一个关键寄存器与程序状态相关:

  • CPSR(Current Program Status Register,当前程序状态寄存器)是 ARM 处理器中最核心的寄存器之一,用于存储当前 CPU 的状态信息,包括模式、中断使能、运算标志等关键信息。它是一个 32 位寄存器,每一位(或位段)都有特定含义

  • SPSR(保存程序状态寄存器)
    仅在异常模式下存在,用于保存进入异常前的 CPSR 值,退出异常时恢复(MOVS PC, LR 会自动恢复 SPSR 到 CPSR)。

总结

  • R0-R12:通用数据寄存器,灵活存储运算数据和地址,是汇编编程的 “临时变量”。
  • R13(SP)管理栈空间,负责函数调用和异常时的现场保护,是程序运行的 “内存管家”。
  • R14(LR)记录返回地址,确保函数或异常处理完成后能回到原流程,是程序的 “导航仪”。
  • R15(PC)控制指令执行顺序,是程序流程的 “方向盘”。

这些寄存器协同工作,确保 CPU 能正确执行指令、处理函数调用和异常,是理解 ARM 汇编和底层运行机制的核心。

外设寄存器

  • 属于外部设备(GPIO、UART、ADC 等)的一部分
  • 通过 "内存映射" 方式分配了固定的地址(如 GPIO 通常在 0x40020000 附近)
  • 必须通过内存访问指令操作(如LDR R0, [R1]读取地址中的值)
  • 访问需要通过系统总线,速度比通用寄存器慢

内存映射机制
ARM 系统将外设寄存器、RAM、Flash 等都映射到同一个地址空间,CPU 通过不同的地址来区分访问的是哪种资源。这就是为什么操作外设寄存器时,看起来像在操作普通内存地址。

通用寄存器和外设寄存器的区别:

对比项 通用寄存器 外设寄存器
位置 CPU 内部 外设内部(内存映射)
访问速度 极快(CPU 内部总线) 较慢(系统总线访问)
用途 临时数据 / 地址存储 控制外设、读取状态
数量 很少(固定) 较多(随外设而定)
地址 无固定内存地址(CPU 内部) 有固定内存映射地址
掉电数据 丢失 部分有硬件保持(如状态寄存器)

5.总线接口:连接外部的总线接口单元,负责与外设、内存通信。

  • 地址总线:单向传输,用来指定内存或外设的地址,位数决定最大寻址空间。
  • 数据总线:双向传输,负责在各部件间传输实际数据,宽度影响传输效率。
  • 控制总线:多向传输,传递控制和状态信号,协调各部件有序工作。

字长:数据总线和地址总线的数量


四, ARM 处理器的工作模式

ARM 有 7 个基本工作模式,分别是:

  • User(用户模式):非特权模式,大部分常规任务在该模式下执行。
  • FIQ(快速中断模式):当高优先级(快速)中断产生时进入,用于快速响应紧急中断。
  • IRQ(外部中断模式):低优先级(普通)中断产生时进入,处理一般的外部中断。
  • Supervisor(管理模式):复位或软中断指令执行时进入,用于系统管理等操作。
  • Abort(数据访问终止模式):存取异常时进入,处理内存访问错误等情况。
  • Undef(未定义指令模式):执行未定义指令时进入,对不被识别的指令进行处理。
  • System(系统模式):使用与 User 模式相同寄存器集的特权模式,可执行特权操作。

此外,Cortex - A 系列还有特有模式Monitor(监控模式),是为安全扩展的、用于执行安全监控代码的特权。

CPSR 的位结构:

关键位段详解

1. 条件标志位(N、Z、C、V)

这 4 位是 CPSR 中最常用的位,由 ALU 运算自动更新,用于条件跳转、条件执行等逻辑控制:

  • 例如:adds r0, r1, r2 中,s后缀表示更新 CPSR 的 N/Z/C/V 位;
  • 条件跳转指令(如bnebcs)会根据这些标志位决定是否执行跳转。
2. 中断禁止位(I、F)

用于全局控制中断响应,是嵌入式开发中控制中断的核心手段:

  • 关闭 IRQ 中断cpsid i(本质是设置 CPSR 的 I=1);
  • 开启 IRQ 中断cpsie i(本质是设置 CPSR 的 I=0);
  • FIQ 中断的开关逻辑与 IRQ 类似(通过 F 位),且 FIQ 优先级高于 IRQ,关闭时需同时考虑 I 和 F 位。
3. 指令集状态位(T)

控制 CPU 执行的指令集类型:

  • ARM 状态(T=0):执行 32 位 ARM 指令,功能完整;
  • Thumb 状态(T=1):执行 16 位 Thumb 指令,代码更紧凑;
  • 指令bx(带状态切换的跳转)会根据目标地址的最低位自动更新 T 位(0→ARM,1→Thumb)。
4. 模式位(M [4:0])

5 位组合定义 CPU 的 7 种工作模式(见下表),决定了 CPU 的权限和可用资源:

M [4:0](二进制) 十六进制 工作模式 特权级 说明
10000 0x10 用户模式(User) 非特权 普通程序运行,权限最低
10011 0x13 超级用户模式(SVC) 特权 复位 / 软件中断时进入,系统服务核心模式
10010 0x12 外部中断模式(IRQ) 特权 处理普通外部中断
10001 0x11 快速中断模式(FIQ) 特权 处理高速紧急中断
10111 0x1B 未定义指令模式 特权 处理未识别的指令
10110 0x1A 数据访问中止模式 特权 处理内存数据访问错误
11111 0x1F 系统模式(System) 特权 操作系统内核运行,共享用户模式寄存器

CPSR 的操作指令

  • 读取 CPSRmrs r0, cpsr(将 CPSR 的值读到 r0,仅特权模式可用);
  • 修改 CPSRmsr cpsr, r0(将 r0 的值写入 CPSR,仅特权模式可用);
  • 快速修改中断位cpsid i(关 IRQ)、cpsie i(开 IRQ)等cps指令。

总结

CPSR 是 ARM 处理器的 “状态中枢”,通过以下核心功能支撑 CPU 运行:

  1. 记录运算状态(N/Z/C/V),支持条件执行;
  2. 控制中断响应(I/F 位),管理异常处理;
  3. 切换指令集(T 位),平衡代码效率与兼容性;
  4. 定义工作模式(M [4:0]),实现权限隔离与资源管理。

模式切换

二、主动切换模式(通过指令修改 CPSR)

在特权模式下(如 SVC、System),可通过指令直接修改 CPSR 的模式位,主动切换到其他模式。常用方法有两种:

1. 使用 cps 指令(简单直接)

cps 是专门用于切换模式的指令,格式:

cps #模式编码  ; 模式编码为上述 M[4:0] 的十六进制值

示例:

cps #0x12  ; 切换到 IRQ 模式(0x12 = 0b10010)
cps #0x1F  ; 切换到 System 模式(0x1F = 0b11111)
cps #0x13  ; 切换到 SVC 模式(0x13 = 0b10011)
2. 通过读写 CPSR 寄存器(灵活控制)

先读取 CPSR 到通用寄存器,修改模式位后写回,格式:

mrs r0, cpsr        ; 读取 CPSR 到 r0
bic r0, r0, #0x1F   ; 清除原有模式位(低 5 位)
orr r0, r0, #模式编码  ; 设置新的模式位
msr cpsr, r0        ; 写回 CPSR,完成模式切换

示例(切换到 IRQ 模式):

mrs r0, cpsr        ; 读取当前 CPSR
bic r0, r0, #0x1F   ; 清除低 5 位(模式位)
orr r0, r0, #0x12   ; 设置 IRQ 模式(0x12)
msr cpsr, r0        ; 应用修改,切换模式

三、异常触发时自动切换模式

当异常(如中断、复位、未定义指令)发生时,CPU 会自动切换到对应模式进行处理中断并保存当前状态:

  • 复位 → 进入 SVC 模式
  • IRQ 中断 → 进入 IRQ 模式
  • FIQ 中断 → 进入 FIQ 模式
  • 未定义指令 → 进入未定义指令模式

自动切换的同时,CPU 会做两件关键事:

  1. 将异常发生前的 CPSR 保存到对应模式的 SPSR(备份程序状态寄存器)。
  2. 将返回地址存入 lr(链接寄存器),便于异常处理后返回。

四、核心用途

  1. 权限隔离:通过 User 模式(非特权)限制普通程序访问硬件,需通过 SVC 等特权模式实现系统调用。
  2. 异常处理:每种异常对应专属模式(如 IRQ 模式处理外部中断),确保处理过程与正常程序隔离。
  3. 资源独立:除 User 和 System 模式共享寄存器外,其他模式有独立的栈指针(sp)和 SPSR,避免冲突。

五、关键注意事项

  • 特权限制:仅特权模式可主动切换模式,User 模式(非特权)无此权限。
  • 栈初始化:切换到新模式后,需重新设置栈指针(sp),避免栈溢出或冲突。
  • 状态恢复:异常处理结束后,需从 SPSR 恢复原 CPSR,并通过 lr 返回原程序(如 bx lr)。
Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐