一、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

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐