ARM嵌入式系统核心知识点
2026/6/11 0:36:28 网站建设 项目流程

这里写自定义目录标题

  • ARM嵌入式系统核心知识点
    • 一、整体硬件架构
    • 二、存储系统:RAM vs ROM vs Flash
      • 1. RAM(随机存储器)
      • 2. ROM(只读存储器)
      • 3. Flash(闪存)
      • 4. 存储速度金字塔
    • 三、CPU 核心寄存器详解
    • 四、内存结构
      • 冯诺依曼结构(Von Neumann)
      • 哈佛结构(Harvard)
      • 现实中的折中:改进型哈佛
    • 五、栈(Stack)相关知识
      • 1. 栈的类型
      • 2. 流水线(Pipeline)
    • 六、两个关键硬件单元(提升 ARM 运行效率 / 实现地址管理,是中高端 ARM 的核心组件)
      • 1. Cache(缓存)
      • 2. MMU(内存管理单元)
    • 总结
  • SoC 与嵌入式系统核心知识点
    • 一、核心概念速查
    • 二、SoC 总线架构(图里最核心的部分)
      • 1. 总线分层
      • 2. 总线的三种类型
    • 三、ARM 处理器系列分类
    • 四、指令集架构:RISC vs CISC
    • **ARM工作模式的总结:**
    • 异常处理:

ARM嵌入式系统核心知识点



PC 只存“下一条指令的地址”,LR 只存“当前函数的返回地址”。
如果一个函数里面又调用了别的函数,LR 就会被新的返回地址覆盖,原来的返回地址会丢。

栈就是用来“保存旧 LR”,防止丢失栈:先进后出

SP栈指针,指向当前栈的栈顶位置

Cache 是介于 CPU 与内存之间的高速缓冲,用来存放“最近/常用”数据与指令,减少 CPU 等待内存的时间,从而提升性能。
(但并不是所有 MCU 都有 Cache)

一、整体硬件架构

这是一个典型的ARM 嵌入式系统硬件组成:

  • 核心:ARM 处理器(CPU)
  • 供电与时钟
    • 电源:给整个系统供电
    • 晶振(时钟):提供稳定的工作频率,决定 CPU 运算速度
    • 复位:让系统回到初始状态
  • 存储设备
    • 内存 (RAM):临时数据存储,掉电丢失
    • Flash (ROM):永久数据存储,掉电不丢失
  • 外设:输入 / 输出设备(比如按键、LED、串口等)

ARM 最小系统:ARM 微处理器芯片 + 电源 + 时钟 + 复位 + 存储器(+调试 / 编程接口)


二、存储系统:RAM vs ROM vs Flash

1. RAM(随机存储器)

  • 特点:访问速度快,但掉电数据丢失
  • 分类:
    • SRAM:静态 RAM,速度最快,常用于 CPU 缓存(Cache)
    • DRAM:动态 RAM,需要刷新,容量更大
    • SDRAM:同步动态 RAM,与时钟同步,效率更高
    • DDR 内存:双倍速率 SDRAM,现在电脑 / 手机主流内存

2. ROM(只读存储器)

  • 特点:掉电数据不丢失,早期只能读,现在可擦写
  • 分类:
    • PROM:可编程 ROM,只能写一次
    • EPROM:可擦除可编程 ROM,紫外线擦除
    • EEPROM:电可擦除可编程 ROM,用电擦除,更方便

3. Flash(闪存)

  • 结合了 RAM 和 ROM 的优点:访问速度快 + 掉电数据不丢失
  • 是现在嵌入式设备(比如单片机、手机)的主要存储介质

4. 存储速度金字塔

速度 / 价格从高到低:

寄存器 > Cache > RAM > ROM/Flash
  • 寄存器:CPU 内部,最快、最贵,容量最小
  • Cache:CPU 和内存之间的缓存,速度介于两者之间
  • RAM:内存,临时存数据
  • ROM/Flash:永久存程序和数据

三、CPU 核心寄存器详解

寄存器是 ARM 中访问速度最快的存储,直接和 CPU 交互,笔记里的寄存器是 ARM 最核心的通用 / 专用寄存器,各自有固定且唯一的作用,无特殊情况不能混用,按功能分两类:

通用寄存器:R0~R12

  • 作用:专门存储普通数据(比如程序运行中的变量、计算中间值)
  • 特点:无固定用途,程序员可自由使用,是 ARM 编程中最常用的寄存器。

ARM CPU 内部有一组寄存器,用来临时存数据和控制程序执行:

寄存器英文全称功能通俗解释
R0~R12通用寄存器用来存临时数据,比如计算时的变量
PCProgram Counter程序计数器,永远指向下一条要执行的指令地址,自动 + 4(ARM 指令长度 4 字节)
LRLink Register链接寄存器,存函数调用的返回地址,函数执行完后跳回这里
SPStack Pointer栈指针,指向当前栈的栈顶位置
CPSRCurrent Program Status Register当前程序状态寄存器,控制进位、溢出、中断、工作模式、大小端等
SPSRSaved Program Status Register保存 CPSR 的备份,用于异常 / 中断恢复
ALUArithmetic Logic Unit运算单元,真正做加减乘除、逻辑运算的硬件电路
Cache缓存分 D-Cache(数据缓存)和 I-Cache(指令缓存),把常用数据 / 指令提前从内存读到 CPU 里,加速访问
MMUMemory Management Unit内存管理单元,把虚拟地址映射成物理地址,实现内存保护和虚拟内存
协处理器-辅助 CPU 完成特定功能(比如浮点运算)

四、内存结构

冯诺依曼结构(Von Neumann)

特点:

  • 指令和数据共用一套存储器与总线
  • 取指和取数不能同时进行

优点:

  • 硬件结构简单、成本低
  • 编程和内存管理方便(统一地址空间)
  • 适合通用计算

缺点:

  • 存在“冯诺依曼瓶颈”(总线争用)
  • 吞吐量受限,难以并行取指/取数

哈佛结构(Harvard)

特点:

  • 指令和数据分开存储、分开总线
  • 同时取指和取数

优点:

  • 吞吐高,性能好
  • 更适合高速/实时处理(DSP、MCU 常见)

缺点:

  • 硬件复杂、成本高
  • 编程/内存管理相对麻烦(地址空间分离)

现实中的折中:改进型哈佛

  • 指令/数据分离的 Cache
  • 但主存地址空间常统一
  • 兼顾性能与易用性

五、栈(Stack)相关知识

栈是一种先进后出的内存结构,用来存函数调用、局部变量等。

1. 栈的类型

  • 增栈:栈顶向高地址增长

  • 减栈:栈顶向低地址增长(ARM 默认是减栈)

  • 空栈:SP 指向最后一个入栈的元素

  • 满栈:SP 指向下一个可入栈的位置

  • 满减栈:ARM 最常用的栈类型,SP 指向栈顶元素,向低地址增长

    满减栈:ARM 最常用类型,结合两维:

    满栈:SP 指向当前栈顶元素
    减栈:入栈时 SP 向低地址移动

2. 流水线(Pipeline)

ARM CPU 用流水线提高执行效率,把一条指令拆成 3 步:

  1. 取指:从内存拿指令
  2. 解码:解析指令要做什么
  3. 执行:真正运算 / 读写数据
  • 流水线让 CPU 可以同时处理多条指令,不用等上一条完全做完再开始下一条,大大提升速度

六、两个关键硬件单元(提升 ARM 运行效率 / 实现地址管理,是中高端 ARM 的核心组件)

1. Cache(缓存)

  • 位置:访问速率介于寄存器和内存(RAM)之间
  • 作用:CPU 访问内存的速度远慢于寄存器,Cache 会把 CPU频繁访问的数据 / 指令临时存起来,CPU 下次直接从 Cache 读取,不用再访问内存,大幅提高程序执行效率(相当于 CPU 和内存之间的「高速中转站」)。

2. MMU(内存管理单元)

  • 核心作用:实现虚拟地址到物理地址的映射
  • 通俗理解:程序运行时使用的是「虚拟地址」(程序员看到的地址),而芯片实际的内存是「物理地址」(硬件真实的地址),MMU 负责把虚拟地址转换成物理地址,让程序不用关心硬件的真实内存布局,同时还能实现内存分区、权限管理、内存扩容等功能,是操作系统运行的核心硬件基础。

总结

  1. 存储速度 / 成本排序:寄存器 > Cache > RAM > ROM / 闪存;掉电不丢数据的是:ROM、闪存
  2. ARM 主流架构:哈佛结构(数据 / 指令分开存,速度快)
  3. ARM 主流栈类型:满减栈(满栈 + 减栈)
  4. 专用寄存器核心考点:PC 指向下下条指令、LR 存函数返回地址、SP 指向栈顶、SPSR 是 CPSR 的备份
  5. Cache 提效率、MMU 做虚拟 / 物理地址映射

整个系统就是:电源 + 时钟让 ARM 跑起来,CPU 用寄存器和 Cache 快速算数据,RAM 存临时数据,Flash 存永久程序,外设和外界交互;程序靠 PC/LR 跳转,用栈存函数调用,靠流水线跑更快

SoC 与嵌入式系统核心知识点

一、核心概念速查

名词全称 / 通俗解释核心特点
CPU中央处理单元整个系统的 “大脑”,负责运算和控制
SoC片上系统(System on Chip)把 CPU、总线、外设、存储控制器等都集成在一块芯片上,就是你图里的整个蓝色方块
MCU微控制器(Microcontroller)俗称 “单片机”,把 CPU、内存、外设都打包在一起,适合控制类场景(比如家电、玩具)
MPU微处理器(Microprocessor)只包含 CPU 核心,需要外接内存、外设才能工作(比如电脑的 CPU)
DSP数字信号处理器擅长做音频 / 视频、信号滤波等数学运算,处理速度比普通 CPU 快
FPGA现场可编程门阵列硬件级可编程芯片,可以自定义电路结构,灵活性极高
多核异构一个芯片里放多种不同架构的核心比如手机里既有 ARM 大核(负责性能),又有小核(负责省电),还有 DSP/NPU(负责 AI)

二、SoC 总线架构(图里最核心的部分)

图里展示了典型的AMBA 总线架构,是 ARM 芯片的标准总线设计:

1. 总线分层

  • AHB(高速总线)
    • 连接高速设备:CPU、存储控制器(管内存 / Flash)、LCD 控制器(管屏幕)
    • 特点:速度快、带宽高,适合需要大量数据传输的模块
  • APB(外设总线)
    • 连接低速外设:GPIO(通用 IO 口)、UART(串口)、ADC(模数转换)、定时器
    • 特点:速度慢、结构简单,适合不需要高速传输的外设
  • 总线桥:图里 AHB 和 APB 之间有连接,实现高速和低速设备之间的数据交互

2. 总线的三种类型

任何总线都由这三类线组成:

  • 地址总线:单向传输,告诉设备 “我要和谁通信”(指定设备地址)
  • 数据总线:双向传输,真正传递要读写的数据
  • 控制总线:传递控制信号(比如 “读 / 写”、“忙 / 就绪”),协调设备之间的操作

三、ARM 处理器系列分类

ARM 是目前嵌入式领域最主流的处理器架构,按应用场景分三大系列:

系列定位典型应用
Cortex-A高性能、低功耗手机、平板、智能音箱等消费电子(需要跑系统、玩 APP)
Cortex-R强实时性汽车电子、工业控制(要求指令在固定时间内完成,不能延迟)
Cortex-M高能效、偏控制单片机、物联网设备、传感器(比如智能灯、手环,主打控制和低功耗)

四、指令集架构:RISC vs CISC

这是 CPU 设计的两种核心思路,ARM 属于前者:

  • RISC(精简指令集)
    • 指令数量少、格式统一、每条指令执行时间短
    • 硬件设计简单、功耗低、执行效率高
    • 代表:ARM、RISC-V、MIPS
  • CISC(复杂指令集)
    • 指令数量多、功能强大,一条指令能做很多事
    • 硬件设计复杂,但编程更方便
    • 代表:x86(电脑 CPU)

ARM 体系架构下总共有9 种工作模式(7 种基本模式 + 2 种 Cortex-A 架构特有扩展模式)。

User(用户模式)是唯一的非特权模式,权限最低。系统正常运行时,绝大多数应用程序(APP、普通任务)都在这里执行

特权模式(共 8 个)所有特权模式都能访问系统所有资源(外设、内存、系统配置),核心用于处理异常、系统初始化、安全监控

再细分为两类:

  • 异常模式(6 个):触发特定异常 / 中断时,CPU 自动切换进入。
  • Cortex-A 特有特权模式(2 个):Cortex-A 架构(消费电子级,如手机)为安全扩展的模式。

ARM工作模式的总结:

  1. 模式数量总结(9 种)
  • 非特权模式:1 个(User)
  • 特权模式:8 个(6 个基本异常模式 + 2 个 Cortex-A 特有模式)
  1. 中断模式优先级

FIQ(快中断) > IRQ(普通中断)

  • FIQ 优先级更高,可打断 IRQ;
  • IRQ 不能打断 FIQ,只能等 FIQ 处理完。
  1. 异常触发的通用规则

任何异常 / 中断发生,CPU 都会自动切换到对应的特权模式(不会停留在 User 模式),这是 ARM 的核心机制!

  • 复位→SVC;高优中断→FIQ;低优中断→IRQ;非法指令→Undef;内存错误→Abort;
  1. System 模式的特殊性
  • 它是特权模式,但不对应任何异常,只能手动切换;
  • 寄存器和 User 完全共享,这是它和其他特权模式最大的区别(其他特权模式都有独立寄存器)。
  1. Monitor 模式的专属场景

只有 Cortex-A 架构(手机、智能设备)才有,传统单片机(Cortex-M)、实时控制设备(Cortex-R)一般不支持,记 “手机 / 消费电子专属安全模式”。

这张图讲的是ARM 程序状态寄存器(CPSR)的内部结构。CPSR 是 ARM 核心寄存器中最重要的一个,它控制着 CPU 的运行状态、运算结果标志和中断权限

E 位 (Endianness) - 大小端控制位

  • 功能:决定 CPU 存储数据的字节顺序。
    • E=0:小端模式(Little-endian)——低字节存低地址(ARM 芯片默认,如 STM32)。
    • E=1:大端模式(Big-endian)——高字节存低地址(网络协议、部分单片机常用)。

在用户模式(User)下,无法通过直接修改 Mode 位跳转到其他模式,只能是条件达到才能跳转。

异常处理:

在 ARM 中,异常(Exception)就是系统的 “紧急事件”。当异常发生时,CPU 必须立刻停止当前正在做的事,转去处理这个事件。

常见的异常类型(右边表格里都有):

  • Reset(复位):开机 / 重启(最高优先级)。
  • Undefined Instruction(未定义指令):CPU 看不懂你写的指令。
  • Software Interrupt(软中断 / SWI):程序主动请求系统服务。
  • Prefetch Abort(预取中止):取指令时内存出错(比如指令区非法)。
  • Data Abort(数据中止):读 / 写数据时内存出错(比如数组越界)。
  • IRQ(外部中断):外设请求(比如按键、串口收到数据)。
  • FIQ(快速中断):高优先级外设请求(比如高速数据传输)。

当异常发生时,CPU 会像 “交警” 一样,立刻自动执行一系列操作,不需要我们写代码干预,这是硬件级的自动响应:

步骤 1:备份现场 —— 拷贝 CPSR 到 SPSR

  • 操作CPSR -> SPSR_<mode>
  • 大白话:把当前的 “工作状态”(比如运算结果标志位 N/Z/C/V、中断是否禁止、当前模式)备份到对应异常模式的SPSR寄存器里。
  • 例子:如果是 IRQ 异常,就把 CPSR 备份到SPSR_IRQ中。
  • 为什么:等下处理完异常要回到原来的工作,不备份就回不去了!

步骤 2:强制进入 ARM 状态

  • 操作:修改 CPSR 的T 位0
  • 大白话:强制 CPU 切换到ARM 指令集状态执行异常处理函数。
  • 笔记重点异常处理一定只能执行 ARM 指令(因为 Thumb 指令是 16 位,不够存复杂的跳转和保护现场逻辑)。

步骤 3:切换工作模式

  • 操作:修改 CPSR 的M [4:0] 位,进入对应的特权模式
  • 大白话:从普通的 User 模式,切到有权限的系统模式(比如 IRQ -> IRQ 模式,SVC -> SVC 模式)。
  • 例子:进入 IRQ 异常时,CPU 自动把模式改成IRQ 工作模式

步骤 4:禁止对应中断(防止干扰)

  • 操作:设置 CPSR 的I 位 / F 位1

  • 大白话:

    • IRQ 异常:置位I=1,禁止普通中断,防止被更低优先级的中断打断。
    • FIQ 异常:置位F=1,禁止快速中断。
  • 目的:保证当前这个紧急异常能被处理完,不被其他中断插队。

步骤 5:保存返回地址 —— 设置 LR

  • 操作:把返回地址保存到LR_(链接寄存器)。

  • 大白话:

    • 异常发生时,PC 指向下一条要执行的指令。
    • CPU 把这个 “下一条指令的地址” 保存到 LR 里。
    • 例子:进入 IRQ 时,保存地址到LR_IRQ
  • 关键:等异常处理完,我们要从 LR 里拿回这个地址,回到原来的地方继续执行!

步骤 6:跳转到异常处理入口 —— 设置 PC

  • 操作PC = 异常向量地址
  • 大白话:CPU 强制 PC 跳转到一个固定的地址(向量表),那里写着 “异常处理函数” 的入口。
  • 例子:进入 IRQ 时,PC 被强制赋值为0x00000018(对应右边表格的偏移量)。

异常处理完了,CPU 要回到原来的工作状态,这时候要做2 个反向操作

  1. 恢复工作状态:从 SPSR 恢复 CPSR
  • 操作SPSR_<mode> -> CPSR
  • 大白话:把步骤 1 备份在 SPSR 里的 “现场”,还原回 CPSR。
  • 效果:CPU 恢复到原来的模式(User)、原来的中断禁止状态、原来的运算标志。
  1. 恢复程序执行:从 LR 恢复 PC
  • 操作LR_<mode> -> PC
  • 大白话:把 LR 里保存的 “返回地址” 赋值给 PC。
  • 效果:CPU 回到异常发生前的下一条指令,继续干活。

⚠️ 关键笔记

Note: 这些操作(恢复 CPSR 和 PC)只能在 ARM 态执行。

异常发生时:

备份 CPSR 到 SPSR -> 切 ARM 态 -> 切特权模式 -> 禁对应中断 -> 存地址到 LR -> 跳向量表 -> 处理异常

异常返回时:

恢复 CPSR 从 SPSR -> 恢复 PC 从 LR
原回 CPSR。

  • 效果:CPU 恢复到原来的模式(User)、原来的中断禁止状态、原来的运算标志。
  1. 恢复程序执行:从 LR 恢复 PC
  • 操作LR_<mode> -> PC
  • 大白话:把 LR 里保存的 “返回地址” 赋值给 PC。
  • 效果:CPU 回到异常发生前的下一条指令,继续干活。

⚠️ 关键笔记

Note: 这些操作(恢复 CPSR 和 PC)只能在 ARM 态执行。

异常发生时:

备份 CPSR 到 SPSR -> 切 ARM 态 -> 切特权模式 -> 禁对应中断 -> 存地址到 LR -> 跳向量表 -> 处理异常

异常返回时:

恢复 CPSR 从 SPSR -> 恢复 PC 从 LR

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询