51单片机--ARM 体系架构

一、硬件存储介质

  1. 运行内存:DDR3 512MB;配套存储 EMMC
  2. EEPROM:AT24C02,容量 2048bit(256byte)
  3. Flash 两类存储
  • Nor flash:每一字节均可寻址,自带地址总线、数据总线,访问速度接近 RAM,多用于单片机
  • Nand flash:属于块设备,数据以 512byte 为单位访问,多用于电脑、SOC
  1. 片内 RAM:s3c2440 内置 iram 4KB

nor flash和nand flash区别

对比维度 Nor Flash Nand Flash
访问方式 支持随机访问,可执行代码(XIP) 按页/块顺序访问,需控制器配合
读写性能 读速度快,写/擦除速度慢 连续读写、写/擦除速度快,随机读慢
容量成本 容量小(MB~GB级),单位成本高 容量大(GB~TB级),成本低
可靠性 坏块极少,稳定性高 存在坏块,需ECC校验纠错
典型应用 Bootloader、BIOS存储 SSD、eMMC、U盘等大容量存储场景

二、总线分类

1. 按通信线路数量划分

  • 单总线:内核与外设仅一组线路完成通信
  • 双总线:内核与外设通过两组线路分开通信

2. 标准片上总线

  • AHB(Advanced High Bus 先进高速总线):挂载 USB、网口、RAM 等高速设备
  • APB(Advanced Peripheral Bus 先进外设总线):挂载 Timer、GPIO、UART 等低速外设

AHB与APB总线(AMBA总线规范)

总线类型 全称 核心特性 典型连接设备
AHB Advanced High-performance Bus 高性能、高时钟频率、支持突发传输、流水线操作、多主设备仲裁 CPU、DDR、DMA、NOR Flash等高速模块
APB Advanced Peripheral Bus 低功耗、结构简单、无突发传输、低时钟频率 UART、GPIO、定时器、I2C等低速外设

三、指令集架构分类

  1. CISC:复杂指令集架构
  2. RISC:精简指令集架构
    • ARM、RISC V 均属于精简指令架构处理器
  3. 存储架构区分
  • 冯・诺依曼架构:指令、数据共用同一块存储空间
  • 哈佛架构:指令、数据拥有独立存储空间,绝大多数计算机采用哈佛架构

RISC和CISC

  • RISC(精简指令集计算机):指令格式固定、种类少、单周期执行,采用Load/Store架构,通用寄存器多,编译优化依赖高,功耗低,典型如ARM、MIPS、RISC-V。

  • CISC(复杂指令集计算机):指令可变长、种类多、功能复杂,支持内存直接操作,寄存器较少,微码控制为主,典型如x86。

  • 核心区别:RISC追求结构简单与能效,CISC追求指令功能集成与代码密度,现代两者互相借鉴。

四、ARM 处理器系列、型号与对应指令集

1. 早期传统 ARM 内核

ARM1、ARM7、ARM8、ARM9

  • s3c2440:ARM920T,指令集 armv4te

2. Cortex 三大产品线

  1. Cortex-A(Application 高端应用 / 消费电子)
    • CortexA7、CortexA8、CortexA9、CortexA97
    • Samsung Galaxy Note:CortexA8
    • Exynos4412:Cortex-A9,指令集 armv8
    • imx6ull:Cortex-A7,指令集 armv7
  2. Cortex-R(Real-time 实时性领域专用)
  3. Cortex-M(Micro 微控制器 MCU)
    • stm32f103:Cortex-M3,厂商意法半导体

ARM处理器的7种工作模式

模式名称 类型 说明
User(用户模式) 非特权模式 普通应用程序运行模式,无法直接访问硬件资源
System(系统模式) 特权模式 操作系统内核任务运行模式,与User模式共用寄存器
Supervisor(SVC/管理模式) 特权+异常模式 复位、软中断(SWI)后进入,用于操作系统内核态
IRQ(普通中断模式) 特权+异常模式 外部普通中断触发后进入
FIQ(快速中断模式) 特权+异常模式 高速外设中断触发后进入,有独立寄存器组,响应更快
Abort(中止模式) 特权+异常模式 内存访问出错(预取中止/数据中止)时进入
Undefined(未定义模式) 特权+异常模式 执行未定义指令时进入

五、CPU 内核运算与寄存器

1. 运算单元

  • ALU:算术逻辑单元,负责数值运算 示例:R0 存 a、R1 存 b、R2 存放 a+b 运算结果

2. 通用寄存器

内核通用寄存器共 16 个,用于存放运算数据,包含 R0~R12

3. 特殊专用寄存器

  1. SP (R13):stack pointer 栈指针寄存器,管理栈区空间;栈规则先进后出(后进先出),存入数据时 sp 值减小,数据存放在 sp 指向位置
  2. LR (R14):linked register 链接寄存器,保存函数返回地址
  3. PC (R15):programmer counter 程序计数器,指针,指向当前执行指令的下一条指令
  4. CPSR:current programmer status register,当前程序状态寄存器,存放程序运行到某一步时相关的状态(溢出、进位、借位)
  5. SPSR:save programmer status register,保存程序状态寄存器,当异常发生时,保存CPSR寄存器中的值
  6. MMU:Memory Management Unit,内存管理单元,将程序中的虚拟内存空间映射到实际物理内存空间,提高物理内存利用率
寄存器 全称 核心作用
PC Program Counter(R15) 存放下一条待取指指令的地址,修改PC可实现程序跳转
LR Link Register(R14) 保存函数调用的返回地址/异常发生后的返回地址
SP Stack Pointer(R13) 指向当前模式栈顶,用于函数调用、局部变量存储、现场保护
CPSR Current Program Status Register 记录条件标志位(N/Z/C/V)、中断屏蔽位、处理器工作模式、ARM/Thumb状态
SPSR Saved Program Status Register 异常发生时自动保存CPSR的值,异常返回时用其恢复CPSR(用户/系统模式无SPSR)

4. 流水线执行

译码、执行阶段可同一时刻并发执行

六、Cache 高速缓存

作用:提升 CPU 访问数据的速度

  1. ICACHE:instruction cache 指令缓存,缓存程序指令
  2. DCACHE:data cache 数据缓存,缓存运算数据 配置示例:可打开 ICACHE,关闭 DCACHE

MMU、Cache作用

  • MMU(内存管理单元):负责虚拟地址到物理地址的转换(页表映射),实现内存权限保护、隔离(多进程)、虚拟内存管理等,是运行Linux等OS的基础。

  • Cache(高速缓存):位于CPU与主存之间,依据局部性原理缓存近期访问的指令/数据(L1/L2等),解决CPU与内存速度不匹配,提升访问效率。

七、移位运算规则

  1. 逻辑右移 LSR:无符号数移位,最高位补 0 例:1011 0010 LSR 1 → 0101 1001
  2. 算术右移 ASR:有符号数移位,最高位补符号位 例:1011 0010 ASR 1 → 1101 1001
  3. 循环右移 ROR:最低位移出,补到最高位 例:1011 0010 ROR 1 → 0101 1001 拼接 1010 1100

八、大小端存储模式

  1. 大端存储:内存低地址存放数据高位,内存高地址存放数据低位
  2. 小端存储:内存低地址存放数据低位,内存高地址存放数据高位;SOC 普遍使用小端模式

九、中断与异常体系

1. 中断相关

  • 中断向量:中断标号,依靠向量索引查找中断服务函数
  • 中断向量表:函数指针数组,数组内存储各个中断服务函数入口地址 示例代码:void (*p[5])(void) = {fn1, fn2, fn3, fn4, fn5};

2. 异常相关

  • 异常向量:跳转至异常服务函数指令对应的地址
  • 异常向量表:数组,内部存放跳转到对应异常服务函数的指令
  • 向量表固定偏移: 0x00:b reset_handler(复位异常跳转指令) 0x04:b undefine_handler(未定义指令异常跳转指令)
  • 对应异常处理函数: reset_handler (void) 复位异常函数 undefine_handler (void) 未定义指令异常函数

ARM异常处理流程

异常发生时,硬件自动执行以下步骤:

  1. 保存CPSR​ 到对应异常模式的SPSR。

  2. 设置CPSR​ 模式位,切换到对应异常模式,禁止相应中断(IRQ/FIQ)。

  3. 保存返回地址​ 到对应模式的LR(通常是PC+偏移)。

  4. 设置PC​ 为异常向量表中对应异常的入口地址,跳转到异常处理程序。

  5. 软件在异常处理程序中保存现场(压栈等),处理异常,恢复现场,通过恢复SPSR到CPSR、LR到PC 实现异常返回(如MOVS PC, LR)。

异常向量与异常向量表

  • 异常向量:每种异常类型对应的固定内存入口地址,处理器发生异常时会自动跳转到该地址执行代码

  • 异常向量表:一段连续的存储空间,按固定顺序排列所有异常向量,每个向量通常占4字节(存放跳转指令或入口地址)

  • 向量表基址可通过VBAR(向量基地址寄存器)配置,常见异常包括:复位、未定义指令、SVC、预取中止、数据中止、IRQ、FIQ

相关推荐
橙臣程2 小时前
集群、分布式与微服务介绍
分布式·微服务·架构
Niuguangshuo2 小时前
TTS 架构的六代演进(六):第 6 代 · 端侧轻量化
架构
Sirius Wu2 小时前
OpenClaw Observability 并发安全(Per-Request Hook)完整详解
服务器·网络·人工智能·安全·ai·架构·aigc
2601_954706492 小时前
云虚拟化移动端架构深度解析:API 自动化集群管控实战与商用选型方案
运维·架构·自动化
盛夏绽放2 小时前
Hermes Agent 全栈安装、配置与Web端架构深度解析(官方命令版·最终优化)
前端·架构·hermes
zlinear数据采集卡3 小时前
从万用表的6步调零到硅片级微秒自校准:硬核拆解LHAMP188的宽压轨到轨与零漂移实战
arm开发·stm32·单片机·嵌入式硬件·fpga开发
allnlei3 小时前
React + FastAPI 前后端分离架构下的 Nginx 配置实践
react.js·架构·fastapi
Dovis(誓平步青云)3 小时前
《 AI直连数据库落地实践:基于MCP协议打通开发工具与数据库全链路运维分析》
大数据·linux·运维·数据库·人工智能·架构
2601_956743683 小时前
上海AI Agent智能体开发选型:从工程架构看落地路径解析
大数据·人工智能·ai·架构·开发经验·上海
用户239526180104 小时前
一文读懂LangChain模型:AI应用的“大脑”是如何工作的
架构