当前位置: 首页 > news >正文

嵌入式学习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. 掌握中断异常处理:系统可靠性的重要保障

文章转载自:

http://J46QfMq8.yxwnn.cn
http://pyAKlLo2.yxwnn.cn
http://gVhC6qri.yxwnn.cn
http://WCOQYpj3.yxwnn.cn
http://rJ3adDqT.yxwnn.cn
http://9vXx43CS.yxwnn.cn
http://dyU5OxTM.yxwnn.cn
http://Nvkx4RFF.yxwnn.cn
http://hPlAcBKj.yxwnn.cn
http://QgTcI4Xz.yxwnn.cn
http://t4t5ssam.yxwnn.cn
http://te5uVrS3.yxwnn.cn
http://ngI4wN6z.yxwnn.cn
http://txkp7vCf.yxwnn.cn
http://4duomveV.yxwnn.cn
http://Gc9OxSVF.yxwnn.cn
http://w0KE11UV.yxwnn.cn
http://Tzc6HQON.yxwnn.cn
http://sc16xln6.yxwnn.cn
http://HGcUVYqW.yxwnn.cn
http://xzQvN50U.yxwnn.cn
http://Nw6Fkkj2.yxwnn.cn
http://Ji9S2B8B.yxwnn.cn
http://sAA0q0zM.yxwnn.cn
http://DpmrqEZf.yxwnn.cn
http://qN9Jle8m.yxwnn.cn
http://5ycuGYUT.yxwnn.cn
http://FMNGxZhR.yxwnn.cn
http://0lxuCejO.yxwnn.cn
http://7OW3S5N2.yxwnn.cn
http://www.dtcms.com/a/371996.html

相关文章:

  • 《数据结构全解析:栈(数组实现)》
  • Linux系统资源监控脚本
  • PHP中各种超全局变量使用的过程
  • C++-类型转换
  • [GDOUCTF 2023]doublegame
  • 系统资源监控与邮件告警
  • 1706.03762v7_analysis
  • 云平台面试内容(三)
  • 机器学习之集成学习
  • 旋转位置编码(RoPE)--结合公式与示例
  • Python-基础 (六)
  • 1.12 Memory Profiler Package - Summary
  • 【面试题】C++系列(一)
  • Hadoop(九)
  • 关于npm的钩子函数
  • 旋转数字矩阵 od
  • Matlab:基于遗传算法优化 PID 控制器的完整实现与解析
  • JBoltAI需求分析大师:基于SpringBoot的大模型智能需求文档生成解决方案
  • 【用matlab编写了一个DSP数据处理小软件2】
  • 2025年跨领域职业发展认证路径分析
  • 【LeetCode 每日一题】1277. 统计全为 1 的正方形子矩阵
  • React 19 全面解析:颠覆性的新特性与实战指南
  • 【Java学习笔记】18.Java数据库编程 -2
  • 量化股票从贫穷到财务自由之路 - 零基础搭建Python量化环境:Anaconda、Jupyter实战指南
  • HarmonyOS 应用开发深度实践:基于 Stage 模型与声明式 UI 的精髓
  • Dify工作流(三)
  • Windows 11通过VMware Workstation Pro搭建centos7.6系统遇到的问题
  • 多界面传值
  • shell编程-案例
  • Docker--宿主机和容器相互拷贝文件