ARM 中断发生时 PC,LR,SPSR,CPSR寄存器相关问题总结

发布者:Enchanted2021最新更新时间:2021-10-13 来源: eefocus关键字:ARM  中断  PC  SPSR  CPSR寄存器 手机看文章 扫描二维码
随时随地手机看文章

问:ARM在从SVC模式,进入IRQ中断时,现场是如何保存的?

答:在保存现场时,处于svc模式下时,cpsr寄存器是写入irq模式下的spsr_irq寄存器,而不是svc模式下的spsr_svc,这样,在中断模式下恢复的话,将spsr_irq寄存器里的内容写入cpsr,就能恢复到svc模式了,因为,spsr_irq寄存器里的内容就是svc模式下的状态。


另外 ,PC指针地址,在中断发生时会向LR寄存器赋值,但是赋值对象也不是LR_svc寄存器,而是在IRQ模式下的LR_irq寄存器。


因此,在进入中断IRQ模式以后,一定要第一时间把SPSR和LR寄存器给压入栈中,在需要返回的时候再弹出。


问:LR寄存器在什么时候会被赋值?

答:两种情况,一种是在发生中断异常时,会将LR赋值。如上述情况;另一种就是在发生函数调用的时候,使用BLX和BL指令,这样就会发生LR寄存器被赋予返回地址的情况。


问:通过手动更改CPSR寄存器末几位来切换模式时,会不会发生硬件赋值的情况?

答:不会,手动切换模式后,对应的如LR,spsr寄存器的映射地址就会变掉,访问的就不是同一个位置的寄存器,但是不会发生任何的硬件的赋值。模式切换不影响代码,代码还是继续该怎么在那儿跑,就在那儿跑。


问:程序返回时,为什么只需要赋值PC地址就行?为什么没有将SPSR赋值给CPSR的指令发生?

答:关于恢复CPSR原值问题:

如果指令带有S后缀(除了比较指令以外),同时又以PC为目标寄存器进行操作,

在异常模式下:则操作的同时从SPSR恢复CPSR。比如:

movs pc, #0xff /* cpsr = spsr; pc = 0xff /

adds pc, r1, #0xffffff00

/ cpsr = spsr; pc = r1 + 0xffffff00 /

ands pc, r1, r2 / cpsr = spsr; pc = r1 & r2; */

在user或者system模式:会产生不可预料的结果,因为在这两种模式下没有SPSR。


通俗解释:这是为了实现模式间的切换,因为,如果要从其他的模式转到用户模式,必须通过一条指令实现,不能通过一条指令实现就会出现问题,如:先将spsr复制到cpsr,这条指令一结束,模式就会切换,这时的LR存的就不是要跳转的目标地址了,因为模式变了,LR的映射就变了,同理,如果先将LR拷贝到PC,则下一个时钟节拍一到,CPU会执行PC指向的内容,恢复SPSR的程序也就无法执行了。

关键字:ARM  中断  PC  SPSR  CPSR寄存器 引用地址:ARM 中断发生时 PC,LR,SPSR,CPSR寄存器相关问题总结

上一篇:ARM体系中的CPSR与SPSR
下一篇:ARM(包括ARMv7 工作模式介绍)寄存器、工作模式和指令集

推荐阅读最新更新时间:2024-11-11 18:36

ARM IMPORT Image$$RO$$Limit 的含义
ARM IMPORT Image$$RO$$Limit 的含义 IMPORT |Image$$RO$$Base| ; Base of ROM code IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data) IMPORT |Image$$RW$$Base| ; Base of RAM to initialise IMPORT |Image$$ZI$$Base| ; Base and limit of area IMPORT |Image$$ZI$$Limit| ; to zero initialise IMPORT MMU_SetAsyncBusMode
[单片机]
遭三星/ARM/英伟达围剿,英特尔这位PC霸主已成“明日黄花”
  “Wintel”让微软和 英特尔 成为 PC 时代霸主,但在面对移动市场冲击下,均未能抓住这一波机遇,微软同样在移动互联网时代表现疲软,不被外界看好。下面就随网络通信小编一起来了解一下相关内容吧。     但萨提亚·纳德拉接棒微软CEO一职后,昔日微软帝国正在崛起,且富得流油,尤其在这个印度人纳德拉带领下,微软市值将有望破万亿美元,然而,作为昔日霸主的 英特尔 显然没有那么幸运,在移动芯片可以用衰败来形容,在遭遇阵痛的 英特尔 , 能否抓住物联网这一波机遇?   遭遇转型阵痛 错失移动互联   高销量和高利润的 PC 时代一去不复返,英特尔在移动领域没有复制 PC 市场的辉煌,伴随移动互联的发展,PC行业的似乎更像一潭死
[网络通信]
简易中断计时器
#include config.h #define uint unsigned int #define uchar unsigned char #define ulong unsigned long int num; // 显示数字值 int xms = 0; // 毫秒计数变量 void timer0() interrupt 1 // 数字1为中断号,每种中断对应一个中断号 { TH0 = 0xfc; // 重要!!第一次计数满后会从0开始计数,应该在中断程序中重设计数初值 TL0 = 0x65; xms++; if(xms
[单片机]
全球PC产业遭遇20年最大滑坡:销量下滑14%
    2013第一季度全球PC制造厂商出货量及市场份额   新浪科技讯 北京时间4月11日早间消息,市场研究公司IDC周三公布的最新数据显示,今年前3个月全球PC销售同比下降了14%,创下20年来最严重的滑坡记录。平板电脑销量仍在增长,但消费者似乎并不青睐采用Windows 8产品。   今年第一季度,全球PC销量的同比降幅创下自1994年IDC发布PC销量报告以来的最大记录。这再次证明,PC的时代正在过去,而计算机行业正在向平板电脑和智能手机等移动设备发展。IDC报告称,第一季度,全球PC销量为7630万台,同比下降14%,降幅高于IDC此前预测的7.7%。这已是全球PC销量连续第4个季度滑坡。   而根据另一家市场研究公司G
[手机便携]
DSP与PC机串行通信接口设计及应用
tms320f24x 是美国 ti 公司tms320系列定点数字信号处理器(dsp)之一,tms320f240是f24x系列面向数字控制芯片的典型代表。由于tms320f240并不具备人机界面,在实际使用过程中,需要为它提供一个人机接口或上层控制接口,以便于观察控制效果或传递必要的控制信息。因此,实现tms320f240与pc之间串行通信接口的设计方法,具有较高的实用价值。 串行通信接口的硬件设计 f240芯片内部集成了一个串行通信接口(sci)模块,该模块是一个标准的通用异步接收/发送(uart)通信接口,通信接口有scitxd(sci发送输出引脚)和scirxd(sci接收输入引脚)两个外部引脚,引脚的信号电平为ttl类型。
[嵌入式]
DSP与<font color='red'>PC</font>机串行通信接口设计及应用
全球PC首季出货同比降8%,苹果Mac降幅最大!
据外媒报道,自新冠肺炎疫情爆发以来,全球对个人电脑(PC)的需求在2020年第一季度激增,但市场调研机构Canalys指出,尽管如此,因新冠病毒扩散导致的供应链问题使得PC出货量实际上同比下降8%,其中苹果公司跌幅更是达到21%。 Canalys报告指出,在2020年第一季度, PC出货总数为5370万台,较去年同期下跌8%,为2016年以来新低(12%)。Canalys的研究总监Rushabh Doshi表示,尽管在第一季度PC产品十分畅销,但受限于诸多因素,PC制造商无法满足市场需求。 Rushabh Doshi进一步指出,英特尔挤牙膏式的10nm制程研发进度,致使英特尔处理器供应放缓,中国春节期间工厂延迟复工使这一情况
[手机便携]
全球<font color='red'>PC</font>首季出货同比降8%,苹果Mac降幅最大!
Arm中国控制权之争再升级,三名“接替者”被起诉
据彭博社报道,Arm中国(安谋中国)的控制权之争正在升级。现在,Arm中国发起了一场新的诉讼,旨在将Arm中国控制权保留在现任CEO吴雄昂手中。新发起的诉讼案件同时也会让软银集团将Arm业务出售给英伟达的交易变得更加复杂。 Arm中国控制权之争 Arm中国控制权之争最早于2020年6月被报道,当时,Arm中国董事会投票决定以利益冲突为由免职Arm中国CEO吴雄昂,但是吴雄昂拒绝离开并解雇了由Arm中国董事会指定来取代吴雄昂的三位高管,包括联合CEO Phil Tang。 随后,这三名高管被董事会恢复了职务。据有关人士透露,在新的诉讼中,Arm 中国正在起诉这三人,要求他们归还公司财产。 业内人
[半导体设计/制造]
揭开arm处理器架构内部的神秘面纱
ARM架构是当今世界上最受欢迎的处理器架构之一,每年出货数十亿个基于ARM的设备。共有三个体系结构配置:A、R和M。 通常,一个终端设备使用多个ARM处理器,并且这些处理器实现不同的体系结构配置文件。例如,下图显示了在现代智能手机中可能会找到的内容: ARM推出新款ARMv8架构的Cortex-A50处理器系列产品,以此来扩大ARM在高性能与低功耗领域的领先地位,进一步抢占移动终端市场份额。Cortex-A50是继Cortex-A15之后的又一重量级产品,将会直接影响到主流PC市场的占有率。围绕该话题,我们今天不妨总结一下近几年来手机端较为主流的ARM处理器。 Armv8-A是Arm的一个重要里程碑。
[嵌入式]
揭开<font color='red'>arm</font>处理器架构内部的神秘面纱

推荐帖子

光纤通信基本知识
光纤通信基本知识包括光纤传输系统的构成通信原理以及涉及到的光器件的介绍光纤通信基本知识回复:光纤通信基本知识谢谢,收了回复:光纤通信基本知识好东西正需要呢呵呵谢谢!!!好东西啊!正需要的!!!!11谢谢收了~光纤通信基本知识
mdreamj RF/无线
关于单片机控制蜂鸣器演奏音乐的一些资料
分享一些我之前学习单片机控制蜂鸣器演奏音乐的一些资料,还有将网上STC89系列播放音乐程序,修改成1T的stc15f2k60s2单片机的程序。关于单片机控制蜂鸣器演奏音乐的一些资料
五四青春 51单片机
初学者请教一个语法问题
请问这两种写法有什么不同:and#2u1(q,a,b)与and#(2)u1(q,a,b)?\0\0\0eeworldpostqq初学者请教一个语法问题非常棒,讲的太高了,价值非常高,收获很多啊
瓷娃娃 FPGA/CPLD
串口通信中的问题(接收数据不对)
我在用串口通信的时候,我想让他实现的是:在输入口中输入abck+12,在回显中显示+12。我的思路是:在串口中断中将输入的字符赋值到数组中去,当检测到数组中有'k'这个字符的时候,再次将检测的字符赋值到一个新的数组中去,最后在主函数中让他显示新数组中的字符。现在的现象是:会显得字符为kkk(三个字符k)。求大神帮我看看代码。#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbit
胡豆豆的春天 51单片机
可以直接通过nboot来引导NK.nb0吗?
请问是否可以直接修改NBOOT源码,将NK.nb0搬移到内存中运行?以达到跳过eboot的目的,请朋友们指教。可以直接通过nboot来引导NK.nb0吗?按照理论上来讲应该是可以实现的。可以的之所以要用eboot,主要的问题就是nboot有空间的限制,必须在4K以内。如果能实现nboot+eboot的基本功能并能将nboot的空间限制在4K内,就可以实现。其实NBOOT里无非就是初始化一下基本设置,然后从nandflash读取TOC结构,然后按照TOC结构里的信息,copy一段代码到
eeworld_tw 嵌入式系统
突发!两大电池巨头“干上了”
先把新闻内容给大家放上了10月18日,中创新航披露,已向宁德时代及相关公司侵犯其专利权提起四项诉讼,索赔金额合计10.07亿元。其中,索赔额最高的一项涉及液冷板式电池模组专利,该诉讼针对宁德时代与特斯拉汽车销售服务(武汉)有限公司。中创新航称两家公司侵犯了其专利权,要求停止侵权行为,并停止制造、销售侵权产品。中创新航同时要求宁德时代赔偿其经济损失5.6亿元及200万元维权支出。另外三项专利诉讼中,被告方除宁德时代外,还包括宁德时代控股子公司四川时代以及汽车制
okhxyyo 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved