新闻详情

新闻详情

首页 / 资讯中心 / 详情

【嵌入式学习笔记】ARM的处理模式和寄存器

发布时间:2026/9/29 16:00:12来源:尧图网络
【嵌入式学习笔记】ARM的处理模式和寄存器
ARM的工作状态ARM7ARM状态32位ARM状态下执行字对准的32位ARM指令Thumb状态16位Thumb状态下执行半字对准的16位Thumb指令。在程序执行的过程中处理器可以在两种状态下切换需要强调的是ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容ARM处理器开始执行代码是时只能处于ARM状态ARM 处理器在复位上电或重启后硬件默认从 ARM 状态开始执行第一条指令而不是从 Thumb 状态开始Cortex以AM64x/AM243x为例Cortex-A53基于 ARMv8-A 架构有两种执行状态AArch64 状态/AArch32 状态。AArch64 状态支持64位指令集AArch32 状态可在 ARMA32和 ThumbT32之间切换Cortex-R5F基于 ARMv7-R 架构实际开发中通常以 Thumb-2 为主但也可以使用 ARM 指令Cortex-M4F基于 ARMv7E-M 架构只支持 Thumb/Thumb-2 指令集不支持 ARM 指令集Thumb-232位和16位让 Thumb 状态同时拥有 16 位和 32 位指令。CPU 在执行时依然处于 Thumb 状态。核心与架构ARM7是处理器核心ARMv7是体系结构版本如ARM7核心是ARMv3架构Cortex核心是ARMv7架构。ARM的处理模式CPSR【40】处理模式用途可访问的寄存器10000User程序正常的执行模式PCR14~R0CPSR10001FIQ用于高速数据传输和通道处理PCR14_fiq~R8_fiqR7~R0CPSRSPSR_fiq10010IRQ用于普通的外部中断请求处理PCR14_irq~R13_irqR12~R0CPSRSPSR_irq10011SVC供操作系统使用的保护模式PCR14_svc~R13_svcR12~R0CPSRSPSR_svc10111Abort用于虚拟存储和存储保护PCR14_abt~R13_abtR12~R0CPSRSPSR_abt11011Undefined用于支持硬件协处理器软件仿真PCR14_und~R13_undR12~R0CPSRSPSR_abt11111System用于运行特权级的操作系统任务PCR14~R0CPSR寄存器R13SP栈指针。管“临时数据往哪放”。它始终指向当前栈顶。函数调用时返回地址、局部变量、寄存器现场都压到 SP 指向的位置。函数返回时再从 SP 弹回去。寄存器R14LR链接寄存器。管“函数从哪来回哪去”——存返回地址。寄存器R15PC程序计数器。管“下一条指令在哪”。它保存当前正在执行指令的下一条指令的地址。CPU 每执行完一条PC 就指向下一条流水线才能连续不断地取指。寄存器CPSRCurrent Program Status Register32位记录 CPU 当前运行状态的寄存器。寄存器SPSRSaved Program Status RegisterCPSR 的“备份副本”。当异常中断、系统调用等发生时CPU 硬件会自动把当前的 CPSR 内容复制到对应异常模式的 SPSR 里保存起来。等异常处理完返回时再从 SPSR 恢复到 CPSR这样就能准确回到异常发生前的状态。分组寄存器ARM 架构里的分组寄存器主要包括 SP、LR、SPSR以及 FIQ 模式下专属的 R8_fiq ~ R12_fiq。SP (R13)每个特权模式都有独立的副本SP_irq, SP_fiq, SP_svc, SP_abt, SP_undLR (R14)每个特权模式都有独立副本LR_irq, LR_fiq, LR_svc, LR_abt, LR_undSPSR每个异常模式对应一个SPSR_irq, SPSR_fiq, SPSR_svc, SPSR_abt, SPSR_undR8~R12只有 FIQ 模式有专属副本R8_fiq ~ R12_fiq其他模式共用当User模式切换到IRQ模式时寄存器进入 IRQ 时ISR 执行中返回 User 后R0-R7不变用户值手动压栈保存后可用恢复为用户值R8-R12不变用户值手动压栈保存后可用恢复为用户值SP (R13)切到 SP_irqSP_irq切回 SP_usrLR (R14)切到 LR_irq存返回地址LR_irq可能被覆盖已压栈切回 LR_usrPC (R15)跳到向量表执行 ISR回到被中断处CPSR存入SPSR_irq自身切模式IRQ 模式从 SPSR_irq 恢复SPSR_irq硬件写入只读不再使用在AM64x/AM243x中Cortex-A53除了经典的 USR、FIQ、IRQ、SVC、ABT、UND、SYS 外它还额外增加了 HYP虚拟化 和 MON安全监控 模式以支持 Linux、虚拟化和 TrustZone 安全隔离。Cortex-R5F保留了经典 7 种模式USR、FIQ、IRQ、SVC、ABT、UND、SYS专门为硬实时任务优化。Cortex-M4F模式被极致简化只有 Thread线程和 Handler处理两种模式。它没有 USR/SVC 等复杂区分中断发生时硬件自动切到 Handler 并保存现场非常适合极简的低功耗控制。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

AutoLabelImg实战:自动预标注到YOLO训练,效率提升指南 2026/9/29 16:52:08

AutoLabelImg实战:自动预标注到YOLO训练,效率提升指南

简介:这是一款面向深度学习图像识别场景的自动标注工具 AutoLabelImg,支持 YOLOv8/YOLOv9/YOLOv10 与 RT-DETR 等主流检测模型,适合需要快速构建训练数据集的算法工程师与科研人员。资源包共 532 个文件,压缩后约 83MB&#xff0c…

阅读更多 →
WX1860AL4千兆网卡iperf3性能不达标?五大根因排查实战 2026/9/29 16:51:55

WX1860AL4千兆网卡iperf3性能不达标?五大根因排查实战

上周刚把一张网讯WX1860AL4四口千兆网卡装进服务器,兴冲冲地拿iperf3打流,结果傻眼了:服务端到客户端怎么跑都只有480Mbps左右,离千兆Line Rate差了整整一半。第一反应是网卡有问题,退换货申请都写到一半了。但在折腾了…

阅读更多 →
从零构建AI工程能力:模型部署、推理优化与监控实战 2026/9/29 16:51:55

从零构建AI工程能力:模型部署、推理优化与监控实战

从零构建AI工程能力这件事,我前前后后折腾了差不多两年。最开始的时候,我和大多数人一样,觉得搞AI就是调包、跑模型、看准确率,直到真正要把一个模型塞进生产环境,才发现自己连最基本的工程化思维都没有。模型在notebo…

阅读更多 →
模块化的思想内核:超越文件拆分的边界思维 2026/9/29 16:51:55

模块化的思想内核:超越文件拆分的边界思维

先讲一件真事儿。前两年我参与过一个中后台项目,接手时正好赶上团队做“模块化重构”,把原来几个动辄上千行的巨型JS文件按功能拆分成了50多个小文件,每个文件平均不到100行,目录层级也从两层直接拉到了五层。重构完成那天大家挺高…

阅读更多 →
Agent记忆管理实战:从hindsight机制到MCP与Docker落地 2026/9/29 16:51:54

Agent记忆管理实战:从hindsight机制到MCP与Docker落地

1. 从“hindsight”这个词说起:为什么它值得单独拿出来聊 第一次看到“hindsight”作为项目名,我脑子里蹦出来的不是词典释义,而是一个很具体的开发场景:Agent 在跑完一轮任务之后,回头翻自己的记忆,发现“…

阅读更多 →
基于Docker与MCP构建LLM Agent记忆系统:hindsight架构实战 2026/9/29 16:51:54

基于Docker与MCP构建LLM Agent记忆系统:hindsight架构实战

1. 从“hindsight”说起:为什么我们需要给Agent装上“后视镜”第一次看到“hindsight”这个词,我脑子里蹦出来的不是词典释义,而是自己踩过的一个坑。去年做一套基于LLM的客服工单自动分类系统,模型在单轮对话里表现堪称完美&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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