N6 ARM
ARM最小系统 指令 和 数据 放在同一片存储器里共用同一套总线取指令的时候,就不能同时取数据代表:电脑 CPU、早期 51 单片机指令存储器、数据存储器 → 完全分开有两套独立总线可以同时取指令 + 取数据速度更快代表:ARM、DSP、STM32、现代单片机RISC:精简指令集CISC: 复杂指令集
一、ARM的CPU介绍
ARM (Advanced RISC Machine) 是目前全球使用最广的 32/64 位 RISC 处理器架构,也是 i.MX6ULL 开发板的核心。
- ARM 是一种 CPU 架构(指令集)
- 单片机 = 把 CPU + Flash + RAM + 外设集成在一块芯片里
- STM32 = ARM Cortex-M 内核的单片机
- IMX6ULL = ARM Cortex-A 内核的应用处理器
它们都是 ARM,只是定位完全不同。
ARM最小系统

RAM:随机存储,访问效率高(快)。
RAM : SRAM DRAM SDRAM DDR内存
静态 动态 同步
ROM:只读存储 ,掉电数据不丢失。
ROM: PROM EPROM EEPROM
可编程 可擦除 电
flash:闪存,掉电数据不丢失,访问效率高(快)

ALU:运算单元,实现运算的硬件电路。
RO~R12:通用寄存器,一般用来存储数据。
PC:程序计数器,一般指向正在运行的下下条指令(默认自加运算),复位值为0。
代码中写的code32(32位4字节),每执行一条指令,pc会加4。
LR:链接寄存器存储函数的返回地址。
SP:栈指针寄存器指向栈顶。
CPSR:当前程序状态寄存器,进借位、溢出、中断使能、工作模式、大小端控制。
SPSR:保存程序状态寄存器,是CPSR的备份。
Cache:缓存,访问速率介于寄存器和内存之间,提高程序执行的效率。
MMU:内存管理单元,用于虚拟地址到物理地址的映射。
冯・诺依曼结构(数据和指令一起存放)
-
指令 和 数据 放在同一片存储器里
-
共用同一套总线
-
取指令的时候,就不能同时取数据
-
代表:电脑 CPU、早期 51 单片机
哈佛结构(数据和指令单独存放)
-
指令存储器、数据存储器 → 完全分开
-
有两套独立总线
-
可以同时取指令 + 取数据
-
速度更快
-
代表:ARM、DSP、STM32、现代单片机
增栈(Ascending):栈向高地址生长
减栈(Descending):栈向低地址生长
满栈(Full Stack):SP 永远指向最后入栈的有效数据
空栈(Empty Stack):SP 永远指向下一个将要存放的空位置
常用满减栈
二、ARM系统(不涉及中断嵌套
| 东西 | 定位 | 擅长 | 例子 |
|---|---|---|---|
| ARM Cortex‑M | 高性能、偏控制 | 简单任务、外设、低功耗 | STM32、单片机 |
| ARM Cortex‑R | 实时控制 | 硬实时、高可靠、低延迟 | 汽车 ECU、工业控制 |
| ARM Cortex‑A | 运算系统 | 跑 Linux、界面、多任务 | 手机 CPU、平板 |
| DSP | 数字信号处理 | 数学、滤波、FFT | 音频、雷达、基站 |
| FPGA | 硬件可编程 | 高速并行、自定义电路 | 通信、AI 加速 |
| 异构多核 | 组合架构 | 又控制、又算、又快 | 手机 SoC、智能驾驶芯片 |
AHB:高速总线。
APB:外设(低速)总线。
地址总线:传输地址(单向);
数据总线:传输数据(双向);
控制总线:读写/忙控制信号。

CPU:中央处理单元
SOC:片上系统(在一个芯片里集成了一切:CPU + GPU + NPU + 音频 + 视频 + 接口……)
MCU:微控制器(把 CPU + RAM + Flash + 各种外设全部集成在一个芯片里,STM32、
ESP32、51 单片机)
MPU:微处理器(带强大 CPU,但不带内存 / Flash ,带 MMU的芯片,必须外接硬件。)
RISC:精简指令集
CISC: 复杂指令集
ARM采用的是32位架构
ARM约定:
Byte :8 bits
Halfword :16 bits (2 byte)
Word :32 bits (4 byte)
Doubleword 64-bits (8byte)(Cortex-A处理器)
大部分ARM core提供: ARM指令集(32-bit); Thumb指令集(16-bit)(紧急)



- CPSR(Current Program Status Register):当前程序状态寄存器,记录 CPU 当前的模式、状态、中断使能、标志位等。
- SPSR_<mode>(Saved Program Status Register):对应异常模式的备份寄存器,专门用来保存异常发生前的 CPSR,异常返回时恢复。
- LR_<mode>(Link Register):对应异常模式的链接寄存器,保存异常发生时的返回地址,异常返回时恢复 PC。
异常产生时,ARM 内核自动做的 7 件事:
| 步骤 | 操作 | 通俗解释 | 对应图中标注 |
|---|---|---|---|
| 1 | 拷贝 CPSR 到 SPSR_<mode> | 把当前程序状态寄存器(CPSR)的值,保存到对应异常模式的 SPSR(备份程序状态寄存器),用于异常返回时恢复现场 | 「拷贝 CPSR 到 IRQ 的 SPSR 中」 |
| 2 | 设置 CPSR 位,进入 ARM 态 | 强制切换到 ARM 指令集(32 位),异常处理只能执行 ARM 指令,不支持 Thumb 指令 | 「异常处理一定只能执行 ARM 指令」 |
| 3 | 切换到对应异常模式 | 修改 CPSR 的模式位,进入该异常专属的工作模式(如 IRQ 中断 → 进入 IRQ 模式),每个模式有独立的 LR、SPSR 寄存器 | 「进入 IRQ 工作模式」 |
| 4 | 设置中断禁止位 | 禁止同级 / 嵌套中断(可配置),防止异常处理过程中被打断 | - |
| 5 | 保存返回地址到 LR_<mode> | 把异常发生时的下一条指令地址(PC),保存到对应异常模式的 LR(链接寄存器),用于异常返回 | 「保存返回地址到 IRQ 的 LR」 |
| 6 | 设置 PC 为对应异常向量 | 强制把 PC 跳转到异常向量表中该异常的固定入口地址,执行异常处理程序 | 「PC = 0x18(IRQ 入口)」 |
| 7 | 异常返回时恢复 | 从 SPSR 恢复 CPSR(恢复原模式 / 状态),从 LR 恢复 PC(回到异常前的代码继续执行) | 「恢复工作模式、恢复 PC」 |
ARM 架构规定:PC = 当前取指阶段的指令地址 = 当前正在执行的指令地址 + 8(32 位 ARM 指令,每条 4 字节)
Thumb 指令集(16 位)下,偏移是 +4(2×2=4),但用的 Cortex-A7 默认是 ARM 32 位指令,所以是 +8。
每个异常模式有独立的 SPSR 和 LR,和用户模式的寄存器不共用,防止异常破坏现场。
流水线:取指 解码 执行。(PC指向读取的指令,而不是正在执行的指令)。
| 流水线阶段 | 作用 | 通俗解释 |
|---|---|---|
| 取指(Fetch) | 从内存中读取下一条指令到 CPU 内部 | 「去仓库拿指令」 |
| 解码(Decode) | 解析指令的操作码、操作数,准备寄存器 | 「看懂指令要做什么」 |
| 执行(Execute) | 执行指令、读写内存、运算、写回结果 | 「真正干活执行」 |
lr的值由流水线决定- 异常返回地址的计算由流水线决定
- 跳转指令的性能损耗由流水线决定
三、拓展信息
区分二极管的正负极:
引脚长短:长的为正,短的为负
内部结构:小的为正,大的是负

三极管导通:
- 找箭头
- 箭头向外 → NPN
- 箭头向内 → PNP
- 想导通:
- NPN:B 电压 > E
- PNP:E 电压 > B

更多推荐



所有评论(0)