赞
踩
ARM架构(Advanced RISC Machines)是目前最为广泛使用的微处理器架构之一,广泛应用于移动设备、嵌入式系统、物联网设备等领域。
1. ARM架构的基本特点
RISC(精简指令集计算机)架构
寄存器数量多
负载/存储架构
条件执行
低功耗设计
ARM架构的主要版本
ARMv4
ARMv5
ARMv6
ARMv7
ARMv8
ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),其指令集设计比较简单,具有以下特点:
对内存只有读、写指令:
对数据的运算是在CPU内部实现:
使用RISC指令的CPU复杂度小,易于设计:
为了更好地理解ARM处理器的工作过程,我们来看一个简单的加法运算:a = a + b
。这个运算需要经过以下4个步骤才能实现:
读取 a 的值:读指令从内存中读取变量 a
的值,并将其存储到CPU的寄存器中。
读取 b 的值:读指令从内存中读取变量 b
的值,并将其存储到CPU的另一个寄存器中。
执行加法运算:CPU执行加法指令,将寄存器中存储的 a
和 b
的值相加,并将结果存储到另一个寄存器中。
写入结果:写指令将加法运算的结果从寄存器写回内存中,存储在变量 a
的位置。
继续深入分析ARM处理器的操作过程。
内部寄存器和ALU
假设我们有两个变量 a
和 b
,它们的初始值分别为 0x12
和 0x34
。我们需要将这两个值相加,并将结果存储回变量 a
中。
指令执行步骤
对应的ARM汇编指令如下:
a
的值到寄存器 R0
b
的值到寄存器 R1
R0
和 R1
中的值相加,结果存储在 R0
R0
中的结果存储回内存中的变量 a
STM32单片机是基于ARM Cortex-M系列内核的微控制器,广泛应用于嵌入式系统中。以下是对STM32单片机基础知识的详细介绍,包括运行模式、寄存器组等。
ARM Cortex-M内核支持多种运行模式,这些模式用于处理不同的操作需求。主要包括:
1.1 Thread Mode(线程模式)
BX LR
)也可以进入线程模式。1.2 Handler Mode(处理模式)
ARM Cortex-M内核包含一组通用寄存器和专用寄存器,用于数据存储和控制操作。
2.1 通用寄存器
2.2 特殊功能寄存器
STM32单片机内部结构包含多个功能模块,每个模块通过总线互连,实现复杂的嵌入式应用。
3.1 内核(Core)
3.2 存储器(Memory)
3.3 外设(Peripherals)
4.1 运行模式(Run Mode)
4.2 睡眠模式(Sleep Mode)
4.3 停止模式(Stop Mode)
4.4 待机模式(Standby Mode)
在STM32单片机中,ARM Cortex-M内核的寄存器组主要包括通用寄存器、专用寄存器、程序状态寄存器等。以下是对这些寄存器的详细介绍:
未备份寄存器指的是在所有运行模式下都共享的寄存器。这些寄存器包括 R0
到 R7
,它们在不同的模式下没有独立的备份,因此在模式切换时其数据可能会被破坏。
备份寄存器在不同的模式下有独立的物理寄存器,确保在模式切换时数据不会被破坏。STM32单片机中常见的备份寄存器包括:
例如,在FIQ模式下,R8_fiq
到 R12_fiq
是独立的,其他模式下则共享相应的寄存器。
**程序计数器(PC, Program Counter, R15)**保存着当前执行指令的地址值。Cortex-M内核是三级流水线设计,取指令、译码、执行,循环执行。
**程序状态寄存器(PSR)**包括当前程序状态寄存器(CPSR)和备份程序状态寄存器(SPSR)。
所有运行模式都共用一个CPSR物理寄存器,因此在模式切换时,需要通过SPSR来保存和恢复状态。
在STM32单片机中,ARM Cortex-M内核的程序状态寄存器(PSR)包含当前程序状态寄存器(CPSR)和备份程序状态寄存器(SPSR)。以下是对这些寄存器的详细解释。
1. CPSR和SPSR寄存器结构
CPSR(Current Program Status Register)寄存器保存了当前的程序状态,包括条件标志、中断屏蔽位、当前执行模式等。SPSR(Saved Program Status Register)寄存器用于在发生异常时保存CPSR的值,以便在异常返回时恢复。
CPSR和SPSR寄存器的结构如下:
位 | 标志位 | 描述 |
---|---|---|
31 | N | 负数标志,结果为负时置1 |
30 | Z | 零标志,结果为零时置1 |
29 | C | 进位标志,加法操作中结果产生进位时置1,减法操作中结果产生借位时置0 |
28 | V | 溢出标志,带符号数运算结果溢出时置1 |
27 | Q | 只有在ARM v5TE架构支持,累积/饱和标志 |
26-25 | IT[1:0] | 与IT[7:2]一起组成IT[7:0],作为IF-THEN指令执行状态标志位 |
24 | J | 控制指令执行状态,表明本指令是ARM指令还是Thumb指令(Jazelle模式) |
23-20 | Reserved | 保留位 |
19-16 | GE[3:0] | SIMD指令有效,大于或等于 |
15-10 | Reserved | 保留位 |
9 | E | 大小端控制位,E=1/0表示大/小端模式 |
8 | A | 禁止异步中断位,A=1表示禁止异步中断 |
7 | I | 禁止IRQ中断位,I=1表示禁止IRQ中断 |
6 | F | 禁止FIQ中断位,F=1表示禁止FIQ中断 |
5 | T | 控制指令执行状态,表明本指令是ARM指令还是Thumb指令 |
4-0 | M[4:0] | 运行模式控制位,表示当前处理器的运行模式 |
J(bit 24)和T(bit 5):控制指令执行状态
J | T | 描述 |
---|---|---|
0 | 0 | ARM |
0 | 1 | Thumb |
1 | 1 | ThumbEE |
1 | 0 | Jazelle |
M[4:0](bit 4-0):运行模式控制位
M[4:0] | 运行模式 |
---|---|
10000 | User 模式 |
10001 | FIQ 模式 |
10010 | IRQ 模式 |
10011 | Supervisor (SVC) 模式 |
10110 | Monitor (MON) 模式 |
10111 | Abort (ABT) 模式 |
11010 | Hyp (HYP) 模式 |
11011 | Undef (UND) 模式 |
11111 | System (SYS) 模式 |
CPSR和SPSR寄存器在ARM Cortex-M内核中扮演重要角色,用于保存和恢复程序状态。理解这些寄存器的结构和作用,可以更好地控制STM32单片机的运行模式和中断处理。通过详细掌握CPSR寄存器中的标志位和控制位,可以提高系统的可靠性和运行效率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。