嵌入式学习day44-硬件—ARM体系架构

一、ARM处理器概述

ARM处理器特点

  • RISC架构:精简指令集计算机
  • 低功耗设计:适合移动设备和嵌入式系统
  • 高性能:优化的流水线设计
  • 可扩展性:支持多种配置和扩展

二、ARM处理器核心组件

1. 处理器核心 (Core)

  • ALU (算术逻辑单元)

    • 执行算术运算
    • 执行逻辑运算
    • 数据处理的核心部件
  • 寄存器组 (Register File)

    • 通用寄存器:R0-R15
    • 特殊寄存器:SP(堆栈指针)、LR(链接寄存器)、PC(程序计数器)
    • 状态寄存器:CPSR(当前程序状态寄存器)

2. 存储系统层次结构

缓存系统 (Cache)
  • L1 Cache (一级缓存)

    • 指令缓存 (I-Cache)
    • 数据缓存 (D-Cache)
    • 容量小但速度最快
  • L2 Cache (二级缓存)

    • 统一缓存设计
    • 容量较大,速度中等
    • 减少对主存的访问
存储器管理单元 (MMU)
  • 地址转换:虚拟地址到物理地址
  • 存储保护:访问权限控制
  • 缓存管理:缓存一致性维护

3. 总线系统

AHB (Advanced High-performance Bus)
  • 高性能总线
  • 连接处理器核心与高速外设
  • 支持突发传输和流水线操作
APB (Advanced Peripheral Bus)
  • 外设总线
  • 连接低速外设
  • 功耗优化设计

三、ARM指令集架构

1. 指令类型分类

  • 数据处理指令

    • 算术运算:ADD、SUB、MUL等
    • 逻辑运算:AND、OR、XOR等
    • 比较指令:CMP、TST等
  • 数据传输指令

    • 加载指令:LDR、LDRB、LDRH
    • 存储指令:STR、STRB、STRH
    • 多数据传输:LDM、STM
  • 分支指令

    • 无条件分支:B
    • 条件分支:BEQ、BNE、BGT等
    • 子程序调用:BL、BLX

2. 寻址模式

  • 立即寻址:操作数直接在指令中
  • 寄存器寻址:操作数在寄存器中
  • 间接寻址:通过地址访问操作数
  • 相对寻址:基于PC的偏移寻址

四、ARM处理器工作模式

1. 处理器模式

  • 用户模式 (User):普通程序运行模式
  • 系统模式 (System):特权模式,与用户模式共享寄存器
  • 监管模式 (Supervisor):软中断和复位后的模式
  • 中断模式 (IRQ):外部中断处理模式
  • 快速中断模式 (FIQ):快速中断处理模式
  • 中止模式 (Abort):数据/指令预取中止模式
  • 未定义模式 (Undefined):未定义指令异常模式

2. 状态寄存器 (CPSR)

  • 条件标志位
    • N:负数标志
    • Z:零标志
    • C:进位标志
    • V:溢出标志
  • 控制位
    • I:IRQ中断禁止位
    • F:FIQ中断禁止位
    • T:Thumb状态位
    • M:模式位

五、ARM流水线技术

1. 三级流水线

  • 取指 (Fetch):从存储器取指令
  • 译码 (Decode):解析指令操作
  • 执行 (Execute):执行指令操作

2. 流水线优化

  • 分支预测:减少分支跳转延迟
  • 指令预取:提前取指提高效率
  • 数据前递:解决数据相关问题

六、存储器系统

1. 存储器映射

  • 代码区:存放程序代码
  • 数据区:存放全局变量和静态变量
  • 堆区:动态内存分配
  • 栈区:局部变量和函数调用

2. 存储器保护

  • 访问权限控制:读、写、执行权限
  • 域访问控制:不同域的访问策略
  • 虚拟存储管理:地址空间隔离

七、中断和异常处理

1. 中断类型

  • IRQ:普通中断请求
  • FIQ:快速中断请求
  • 软中断:SWI指令触发

2. 异常处理流程

  1. 保存当前程序状态
  2. 切换到相应的异常模式
  3. 跳转到异常向量表
  4. 执行异常处理程序
  5. 恢复原程序状态并返回

八、Thumb指令集

1. Thumb特点

  • 16位指令格式:节省代码空间
  • 与ARM指令兼容:可混合使用
  • 高代码密度:适合存储空间受限的应用

2. Thumb-2技术

  • 混合16位和32位指令
  • 保持高代码密度
  • 提供更丰富的指令功能

九、协处理器接口

1. 协处理器作用

  • 浮点运算协处理器:执行浮点运算
  • 存储管理协处理器:CP15,系统控制
  • 用户定义协处理器:扩展特定功能

2. 协处理器指令

  • CDP:协处理器数据处理
  • LDC/STC:协处理器数据传输
  • MCR/MRC:ARM核心与协处理器间数据传输

十、调试和测试支持

1. JTAG接口

  • 边界扫描测试
  • 在线调试支持
  • 芯片测试功能

2. 跟踪支持

  • ETM (Embedded Trace Macrocell):指令跟踪
  • 实时调试:不停机调试
  • 性能分析:程序执行分析

学习要点总结

  1. 掌握ARM的RISC特点:理解精简指令集的优势
  2. 熟悉寄存器组织:重点掌握特殊寄存器的作用
  3. 理解存储系统层次:缓存、MMU的工作原理
  4. 掌握指令集分类:数据处理、传输、分支指令
  5. 了解处理器模式:各模式的特点和切换机制
  6. 理解流水线技术:提高处理器性能的关键技术
  7. 掌握中断异常处理:系统可靠性的重要保障
相关推荐
西岸行者7 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意7 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码7 天前
嵌入式学习路线
学习
毛小茛7 天前
计算机系统概论——校验码
学习
babe小鑫7 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms7 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下7 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。7 天前
2026.2.25监控学习
学习
im_AMBER7 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J7 天前
从“Hello World“ 开始 C++
c语言·c++·学习