基于ARM Cortex-M3微控制器(STM32系列)基础知识(二)——ARM内核体系结构

本文详细介绍了Cortex-M3处理器的内部结构,包括工作模式如usr、sys、fiq等,以及处理器状态和特权模式。重点阐述了CPSR和SPSR寄存器的作用,如条件标志位、控制位和Q标志位,并探讨了Thumb和ARM状态下的寄存器组织。此外,还提及了数据类型的存储格式,如字节、半字和字,并讨论了非对齐存储访问的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习要求

在这里插入图片描述

cortex-M3内部结构

在这里插入图片描述

Cortex-M3处理器结构框图

在这里插入图片描述

ARM处理器包含三种工作状态

在这里插入图片描述
在这里插入图片描述

ARM处理器工作模式和工作状态

处理器工作模式(usr、sys、fiq快中断、irq外部中断、svc、abt、und)

在这里插入图片描述

特权模式

在这里插入图片描述

异常模式

在这里插入图片描述

用户和系统模式

在这里插入图片描述

ARM寄存器

在这里插入图片描述

ARM状态各模式下的寄存器

在这里插入图片描述

通用寄存器

(1)未分组寄存器

在这里插入图片描述

(2) 分组寄存器(SP和LR)

在这里插入图片描述

SP和LR

R13通常用作堆栈指针SP
R14用作子程序链接寄存器LR(Link Register)

在这里插入图片描述

(3) 程序计数器R15(PC)

在这里插入图片描述

程序状态寄存器

在这里插入图片描述

当前程序状态寄存器(Current Program Status Register,CPSR)

CPSR可以在任何处理器模式下被访问,它包含下列内容:

  • ① ALU(Arithmetic Logic Unit)状态标志的备份
  • ② 当前的处理器模式
  • ③ 中断使能标志
  • ④ 设置处理器的状态(只在4T架构)
(1)标志位

N(Negative)、Z(zero)、C(Carry)和V(oVerflow)通称为条件标志位。这些条件标志位会根据程序中的算术或逻辑指令的执行结果而修改。而且这些条件标志位可由大多数指令检测以决定指令是否执行。
在这里插入图片描述
N:本位设置成当前指令运行结果的bit[31]的值;当两个补码表示的有符号整数运算时,N=1,表示运算的结果为负数;N=0,表示结果为正数或零

Z:Z=1,表示运算的结果为零;Z=0,表示运算的结果不为零。
对于CMP指令,Z=1表示进行比较的两个数相等。

C:分下面4种情况讨论C的设置方法
在这里插入图片描述
V:溢出标志。V=1表示符号位溢出,V=0表示符号位无溢出

小例子

在这里插入图片描述

(2)Q标志位

在带DSP指令扩展的ARM v5及其更高的版本中,bit[27]被指定用于指示增强的DAP指令是否发生了溢出,因此也就被称为Q标志位。同样,在SPSR中bit[27]也被称为Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位。

在ARM v5以前的版本及ARM v5的非E系列处理器中,Q标志位没有被定义,属于待扩展的位。

(3)控制位

CPSR的低8位(I、F、T及M[4:0])统称为控制位。当异常发生时,这些位值将发生相应的变化。另外,如果在特权模式下,也可以通过软件编程来修改这些位的值。

① 中断禁止位
在这里插入图片描述
② 状态控制位
在这里插入图片描述
③ 模式控制位
在这里插入图片描述

(3)CPSR中的保留位

在这里插入图片描述

备份程序状态寄存器(SavedProgram Status Register,SPSR)

每一种处理器模式下都有一个专用的物理寄存器作为备份程序状态寄存器(SavedProgram Status Register,SPSR)。当特定的异常中断发生时,这个物理寄存器负责存放当前程序状态寄存器CPSR的内容。当异常处理程序返回时,再将其内容恢复到当前程序状态寄存器。
在这里插入图片描述

例题

在这里插入图片描述

Thumb状态与ARM状态下的寄存器组织的关系

在这里插入图片描述

Cortex-M3工作模式

在这里插入图片描述

Cortex-M3寄存器

在这里插入图片描述
在这里插入图片描述

R14 --连接寄存器(LR)

在这里插入图片描述

状态寄存器组 xPSR (PSRs) (包括3个 )

在这里插入图片描述

控制寄存器CONTROL

在这里插入图片描述
在这里插入图片描述

Cortex-M3寄存器Thumb/Thumb-2 状态下的寄存器组织

在这里插入图片描述

数据类型与存储器格式

(1)地址空间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)数据类型(字节、半字、字)

在这里插入图片描述
在这里插入图片描述

(3)存储格式(大端方式and小端方式)

在这里插入图片描述
从左到右看,最左边的就是高字节,最右边的就是低字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为0x是表示十六进制,所以0x12H用二进制表示其实占8位
在这里插入图片描述

例题

在这里插入图片描述

非对齐的存储器访问

非对齐的存储访问含义

  • ARM状态,访问地址的低二位不为00;
  • Thumb状态,访问地址的最低位不为0
    在这里插入图片描述

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值