STM32八股【2】-----ARM架构

1、架构包含哪几部分内容

  • 寄存器
  • 处理模式
  • 流水线
  • MMU
  • 指令集
  • 中断
  • FPU
  • 总线架构

2、以STM32为例进行介绍

2.1 寄存器

寄存器 名称 作用
R0-R3 通用寄存器 用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。
R4-R12 通用寄存器 用于存储局部变量,减少频繁的内存访问。
R13 栈指针 (SP) 指向当前栈顶,负责管理栈操作。分为主栈指针 (MSP)进程栈指针 (PSP):系统中断处理和普通任务可以使用不同的栈。栈指针用于管理栈的操作,包括函数调用时保存现场和中断处理时保存寄存器状态。
R14 链接寄存器 (LR) 保存函数调用返回的地址,函数返回时恢复程序执行。
R15 程序计数器 (PC) 指向当前执行的指令地址,控制程序执行的流程。
xPSR 程序状态寄存器 包含条件标志 (N, Z, C, V) 以及处理器状态 (T 位用于 Thumb 指令集)。
CONTROL 控制寄存器 控制处理器工作模式,如栈指针选择 (MSP/PSP) 和权限级别 (特权级/用户级)。
PRIMASK 中断屏蔽寄存器 屏蔽所有可屏蔽中断,保证关键代码段不被中断打断。
BASEPRI 基础优先级寄存器 设置中断优先级屏蔽阈值,低于该阈值的中断会被屏蔽。
FAULTMASK 故障屏蔽寄存器 屏蔽所有异常,包括硬件故障,通常用于系统恢复或严重故障时。

分类记忆:
通用寄存器 :R0-R12

R0-R3:用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。

R4-R12:用于存储局部变量,减少频繁的内存访问。
特殊功能寄存器

R13(栈指针 SP):指向当前栈顶,管理栈操作。

R14(链接寄存器 LR):保存函数调用返回地址。

R15(程序计数器 PC):指向当前执行的指令地址,控制程序流程。
状态和控制寄存器

xPSR(程序状态寄存器):包含条件标志和处理器状态。

CONTROL(控制寄存器):控制处理器工作模式。

PRIMASK、BASEPRI、FAULTMASK:用于中断和故障管理。

2.2 处理模式

stm32默认普通程序和中断程序都工作在特权级。

  • 处理者模式
    • 始终运行在特权级
  • 线程模式
    • 可以运行在特权级和非特权级,通过CONTROL寄存器控制。

2.3 流水线

  • 概念

    MCU的流水线,指的是在指令执行过程中将一条指令的不同阶段拆分成多个步骤 ,让这些步骤可以并行执行,从而提高指令吞吐量。

  • 一个典型的 ARM 处理器指令流水线包括以下阶段:

    • 取指(Fetch):从内存中获取指令。
    • 译码(Decode):将指令翻译成处理器可以理解的操作。
    • 执行(Execute):执行指令,如加法、乘法、位移等操作。
    • 存储(Memory Access):如果需要,进行内存访问,读取或写入数据。
  • ARM 处理器的流水线可以有多个阶段,常见的有 3 级、5 级或 7 级流水线,甚至更深的流水线设计。

2.4 MMU

2.5 指令集

2.6 中断

2.7 FPU

2.8 总线架构

回顾

  • stm32有哪些通用寄存器
  • stm32有哪些特殊功能寄存器
  • stm32有哪些状态和控制寄存器
  • 讲一下stm32的两种处理模式
相关推荐
硬匠的博客1 小时前
05STM32定时器-01定时器概述
stm32·单片机·嵌入式硬件
BT-BOX2 小时前
基于STM32电子钟闹钟数码管显示设计(Proteus仿真+程序+设计报告+原理图PCB+讲解视频)
stm32·proteus·音视频
LN花开富贵3 小时前
【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用
笔记·stm32·单片机·嵌入式硬件·学习
委婉待续3 小时前
在linux上启动微服务
微服务·云原生·架构
小小工匠3 小时前
架构思维:如何设计一个支持海量数据存储的高扩展性架构
架构·哈希算法·raft·gossip·一致性哈希·paxos·range分片
风亦辰7396 小时前
前后端开发概述:架构、技术栈与未来趋势
spring boot·架构·前端框架
长安er8 小时前
异步编程与流水线架构:从理论到高并发
数学建模·架构·gui·多线程·异步·流水线·全息
硬匠的博客8 小时前
01STM32时钟树
stm32·单片机·嵌入式硬件
Chiyamin8 小时前
字符与编码基础知识再研究
c++·架构
机巧咸鱼不会受伤8 小时前
UMI app.tsx 作用及使用场景
前端·架构