新闻详情

新闻详情

首页 / 资讯中心 / 详情

ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用

发布时间:2026/11/1 23:20:21来源:尧图网络
ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用
作为嵌入式开发领域的经典处理器内核ARM Cortex-M3CM3凭借其高效能、低功耗和丰富特性在工业控制、物联网、消费电子等领域广泛应用。而内核寄存器是我们调试代码理解程序运行逻辑必不可少的好帮手理解汇编是通往嵌入式高手的必经之路。下面本文从技术角度解析其核心架构与核寄存器做相关讲解。一、内核介绍ARM Cortex-M3是一款面向嵌入式系统的32位RISC处理器内核采用改进型哈佛架构通过独立指令总线I-Code和数据总线D-Code实现并行访问同时维护统一编址的4GB线性存储空间。内核配备三级流水线取指、译码、执行与静态分支预测机制结合Thumb-2指令集混合16/32位编码在保持高代码密度相比纯32位指令节省约30%存储空间的同时实现单周期32位乘法等运算能力。其嵌套向量中断控制器NVIC支持240个中断源硬件自动完成优先级排序与现场保护中断响应延迟固定为12个时钟周期中断嵌套深度无软件限制。存储器保护单元MPU可划分8个独立区域实现特权模式与用户模式的访问权限隔离支持大小端数据格式动态切换。调试系统集成串行线/JTAGSWJ-DP接口支持4个硬件断点与2个数据观察点配合可选ETM指令追踪模块实现实时执行流记录。电源管理模块提供睡眠、深度睡眠和待机三种低功耗模式休眠电流最低1μA运行功耗典型值低于200μA/MHz基于90nm工艺。该内核通过AHB-Lite总线矩阵连接外设支持单周期GPIO操作与位带别名访问硬件除法器可在2-12周期内完成32位整数运算。作为首款支持非对齐内存访问的Cortex-M系列处理器其架构平衡了实时性、能效比与开发便利性适用于工控、IoT等实时嵌入式场景。二、核寄存器Cortex‐M3 处理器拥有 R0‐R15 的寄存器组。其中 R13 作为堆栈指针 SP。SP 有两个但在同一时刻只能有一个可以看到这也就是所谓的“banked”寄存器。如下图所示的R13寄存器分为主堆栈指针MSP、进程堆栈寄指针PSP。R0-R12通用寄存器R0‐R12 都是 32 位通用寄存器用于数据操作。但是注意绝大多数 16 位 Thumb 指令只能访问 R0‐R7而 32 位 Thumb‐2 指令可以访问所有寄存器。首先在程序的调用过程中R0-R3寄存器都存储着调用函数的传参值下一个函数用到了几个参数就提前将参数存储在r0-r3里面如果超出4个参数就将多余的参数Push进堆栈中在进入到调用的函数里面后在Pop出栈给其他r4-r12寄存器。下面我们举个例子函数我是用函数指针的形式写的你就把他当成调用一个函数其中ptDevicexy1都是传参。我们看下面的汇编代码将1给到r3将y给到r2将x给到r1最后将ptDevice给到r0之后执行BLX跳转指令进入到该函数中。Banked R13: 两个堆栈指针Cortex‐M3 拥有两个堆栈指针然而它们是 banked因此任一时刻只能使用其中的一个。主堆栈指针MSP复位后缺省使用的堆栈指针用于操作系统内核以及异常处理例程包括中断服务例程进程堆栈指针PSP由用户的应用程序代码使用。如下图在STM32 F103芯片中我们能看到这两个SP寄存器。之后我会单独出一章讲解MSP和PSP使用的场景这里不做细讲。堆栈指针的最低两位永远是 0这意味着堆栈总是 4 字节对齐的。在 ARM 编程领域中凡是打断程序顺序执行的事件都被称为异常(exception)。除了外部中断外当有指令执行了“非法操作”或者访问被禁的内存区间因各种错误产生的 fault以及不可屏蔽中断发生时都会打断程序的执行这些情况统称为异常。在不严格的上下文中异常与中断也可以混用。另外程序代码也可以主动请求进入异常状态的常用于系统调用。R14连接寄存器LR当呼叫一个子程序时由 R14 存储返回地址。不像大多数其它处理器ARM 为了减少访问内存的次数访问内存的操作往往要 3 个以上指令周期带 MMU和 cache 的就更加不确定了把返回地址直接存储在寄存器中。这样足以使很多只有 1 级子程序调用的代码无需访问内存堆栈内存从而提高了子程序调用的效率。如果多于 1 级则需要把前一级的 R14 值压到堆栈里。在 ARM上编程时应尽量只使用寄存器保存中间结果迫不得以时才访问内存。在 RISC 处理器中为了强调访内操作越过了处理器的界线并且带来了对性能的不利影响给它取了一个专业的术语溅出。下面我们也再看一个例子如下图所示在我们调用函数的时候会将函数执行完返回下一行指令存储在R14寄存器中当执行完该函数后就跳转回R14寄存器即该函数执行完的下一行代码。执行完该跳转指令后的下一行指令的地址是0x08001CA6此时将0x08001CA6的值存储在R14寄存器中等待函数执行完返回。由于Cortex M使用的是Thumb指令地址跳转的指令需要加1即08001CA7存储在R14寄存器中。R15程序计数寄存器–PC指向当前的程序地址。如果修改它的值就能改变程序的执行流。其实就是程序跑到了哪里R15就执行哪里如下图所示。特殊功能寄存器Cortex‐M3 还在内核水平上搭载了若干特殊功能寄存器包括程序状态字寄存器组PSRs中断屏蔽寄存器组PRIMASK, FAULTMASK, BASEPRI控制寄存器CONTROL下图我们介绍一下STM32 F103的特殊寄存器当我们执行CMPBLECBZ等等这些汇编代码时这些代码执行完都会影响状态寄存器xPSR中的值给后续汇编代码执行其他跳转、比较或者其他汇编指令的时候提供条件判断。下面我们就用一张STM32F1xx系列的Cortex M3的芯片将上面的核寄存器的图片进行总结三、总结Cortex-M3通过架构级优化哈佛总线、Thumb-2指令集与系统级增强MPU、NVIC在性能与功耗之间实现平衡。其完善的调试生态Keil MDK、IAR Embedded Workbench支持进一步降低开发门槛成为中高端嵌入式应用的经典选择。后续的Cortex-M4/M7等系列虽在DSP/浮点性能上强化但M3仍凭借性价比占据重要市场地位。后续我会分享更多有关嵌入式和ARM内核方面的知识希望大家多多关注。扩展阅读建议ARMv7-M架构手册了解指令集细节《Cortex-M3权威指南》Joseph Yiu著CMSIS标准库应用统一外设驱动接口
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/1 1:42:41

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/1 2:34:07

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/1 2:01:57

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/1 3:13:10

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/1 2:11:52

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/1 3:23:38

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉