Cortex-M4架构

本文参考资料来自《ARM Cortex-M3与Cortex-M4 权威指南》

Cortex-M4 处理器基于ARMv7-M架构,发布时,架构中又额外增加了新的指令和特性,改进后的架构也被称为ARMv7E-M

编程模型

操作模式和状态

操作状态:
- 调试状态:当处理器被暂停后(触发断点等),进入调试状态并停止指令执行
- Thumb状态:处理器执行代码则处于此状态(由于Cortex-M处理器不支持ARM指令集,所以ARM状态不存在)

操作模式:
- 处理模式:执行中断服务程序(ISR)等异常处理。在处理模式下处理器总是具有特权访问等级。
- 线程模式:执行普通的应用程序代码时,处理器可处于特权访问等级,也可以处于非特权访问等级

操作模式和状态:

这里写图片描述

寄存器

Cortex-m4处理器的寄存器组中有16个寄存器,其中13个为32位通用目的寄存器,其他3个有特殊用途
- R0~R12:通用寄存器,初始值未定义; R0~R7被称作低寄存器(16位指令只能访问低寄存器); R8~R12被称作高寄存器
- R13,栈指针(SP):通过PUSH和POP操作存储的访问;物理上存在两个栈指针:主栈指针(MSP,默认栈指针)和进程栈指针(PSP,只用于线程模式);对于一般程序,两个寄存器只会有一个可见
- R14,链接寄存器(LR):用于函数或子程序调用时返回地址的保存;函数或子程序结束时,程序控制可以通过将LR的数值加载到PC中返回调用程序并继续执行
- R15,程序计数器(PC):可读可写的寄存器,读操作返回当前指令地址加4(三级流水线),写操作会引起跳转;PC永远下一条要取指的指令地址

特殊寄存器

通过MSR和MRS等特殊寄存器访问指令来操作特殊寄存器

MRS<reg>, <special_reg>   ; 将特殊寄存器读入寄存器
MSR<special_reg>, <reg>   ; 写入特殊寄存器

1. 程序状态寄存器:

程序状态寄存器包括:应用PSR(APSR); 执行PSR(EPSR); 中断PSR(IPSR)

MRS r0, PSR         ; 读组合程序状态字
MSR PSR, r0         ; 写组合程序状态字
MRS r0, APSR        ; 将标志状态读入R0
MRS r0, IPSR        ; 读取异常/中断状态
MSR APSR, r0        ; 写标志状态

image

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值