历史上的今天
返回首页

历史上的今天

今天是:2024年09月28日(星期六)

2021年09月28日 | ARM 中断发生时 PC,LR,SPSR,CPSR寄存器相关问题总结

2021-09-28 来源:eefocus

问: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的程序也就无法执行了。

推荐阅读

史海拾趣

Herley New York公司的发展小趣事

Hengstler GmbH在电子行业中的五个发展故事

故事一:从钟表工坊到工业计数器的先驱

Hengstler GmbH的故事始于1846年,当时创始人Johannes Hengstler在德国西南部的奥尔丁根镇开设了一家钟表工坊,专注于生产钟表弹簧。随着时间的推移,Hengstler逐渐扩展其业务领域。1926年,公司收购了Efunda公司的计数装置业务,这标志着Hengstler正式进入工业计数和控制元件领域。此后,Hengstler不断推出创新产品,如20世纪50年代发布的革命性“计数系统400”,这是一种带有插件系统的塑料计数系统,不仅功能强大,而且价格实惠,极大地推动了公司在市场上的地位。

故事二:技术革新与全球化布局

进入20世纪后半叶,Hengstler继续加大技术研发投入,并在全球范围内扩展其业务。1962年,公司在英国成立了第一家海外子公司,随后几年内,在法国、比利时、加拿大、意大利和日本等地也相继设立了分支机构。这些举措不仅增强了Hengstler的国际影响力,还使其能够更好地服务全球客户。同时,公司还引入了先进的生产设备和技术,如塑料注塑成型机,实现了塑料部件的大批量生产,进一步提升了产品质量和生产效率。

故事三:编码器技术的突破

在编码器技术方面,Hengstler也取得了显著成就。公司不断推出新型编码器产品,如光电增量型编码器RI58-O/RI58-T,其分辨率高达10,000脉冲和40,000步,防护等级达到IP67,广泛应用于各种工业场合。此外,公司还开发了重载磁性绝对值型编码器AR62/63,该编码器具有极高的抗冲击和抗振动能力,适用于恶劣环境下的使用。这些产品的推出不仅丰富了Hengstler的产品线,还进一步巩固了其在编码器领域的领先地位。

故事四:被丹纳赫收购后的新发展

1995年,Hengstler被美国丹纳赫公司收购,成为其旗下的一员。这一收购为Hengstler带来了更多的资源和支持,推动了公司的进一步发展。在丹纳赫的支持下,Hengstler加大了对新技术和新产品的研发力度,不断推出具有创新性和竞争力的产品。同时,公司还加强了与国际市场的联系和合作,进一步提升了其国际竞争力。

故事五:持续创新与客户服务

多年来,Hengstler始终坚持创新和服务至上的理念。公司不断投入研发资金,引进先进技术和设备,提升产品质量和生产效率。同时,公司还注重客户服务,建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。这些努力不仅赢得了客户的信任和好评,还使Hengstler在电子行业中保持了良好的声誉和地位。如今,Hengstler已成为全球领先的工业计数和控制元件制造商之一,其产品广泛应用于自动化技术、风力发电机、商用车辆、售票机和医疗等领域。

Heidenhain Corp公司的发展小趣事

随着电子行业的快速发展,对高精度电子元件的需求日益增长。海德汉公司凭借其iTNC系列数控系统的高精度控制能力,成为众多电子元件制造商的首选合作伙伴。某知名电子元件生产商在引入海德汉iTNC 530数控系统后,成功实现了微型电子元件的精密加工,将加工精度提升至微米级,大大提高了产品的质量和市场竞争力。这一合作不仅巩固了海德汉在高精度加工领域的领先地位,也推动了电子行业向更高精度、更高质量方向发展。

Engelking Elektronik GmbH公司的发展小趣事

作为一家有社会责任感的企业,Engelking Elektronik始终关注环保和可持续发展问题。公司积极采用环保材料和清洁能源,减少生产过程中的污染排放和资源浪费。此外,Engelking Elektronik还积极参与公益活动和慈善捐赠,回馈社会。公司坚信只有关注社会责任和可持续发展才能实现企业的长期繁荣和稳定。

Good-Ark公司的发展小趣事
检查放大器、滤波器等元件是否正常工作,是否存在短路、断路等问题。
德力西(DELIXI)公司的发展小趣事

进入新世纪后,德力西开始全国化布局和多元化发展。1998年,在上海注册成立了上海德力西集团有限公司,与西安高压电器研究所联合生产高压电器和成套设备。此外,德力西还积极参与国企改革,整体并购了杭州西子(集团)公司,并进入环保领域,建设垃圾处理及水处理项目。这些举措使德力西在电子行业的地位更加稳固。

AIM公司的发展小趣事

随着公司业务的不断发展和产品线的丰富,AIM开始积极拓展市场,寻求更广阔的发展空间。公司积极参与国际电子展会和交流活动,与全球各地的客户和合作伙伴建立了紧密的合作关系。通过与国际知名企业的合作,AIM的产品和技术得以在全球范围内推广和应用,进一步提升了公司的知名度和影响力。

问答坊 | AI 解惑

整理的proteus的教程和视频

今天很多朋友问我,如何应用proteus,今天我整理了相关的教程和一个flash教程, 大家一起学习吧!…

查看全部问答>

ARMSD卡文件系统的实现

ARMSD卡文件系统的实现…

查看全部问答>

中颖全系列单片机机选型表

深圳驰泰代理中颖全系列单片机,附件为选型表,欢迎大家下载。 CHIPTECH SEMICONDUCTOR CO.,LTD 深圳市驰泰电子有限公司 hidy/王芳 QQ:313030919 MSN:wfhidy@hotmail.com Tel:86-755-33340867 Fax:86-755-33340839 Mob:13590192992 E-ma ...…

查看全部问答>

WINCE下如何截取屏幕上某个RECT区域上的图片?急

我现在有480*800的一个窗口 上面有背景图和其他一些图。。都贴在上面。 当我点击任意一点。如何才能把点击后规定的区域下的图片拿出来可以用?…

查看全部问答>

请教高手:micro C/os-ii 移植的问题

请高手帮帮忙: 最近想把「micro C/os-ii The Real-Time Kernel 」书中的 chapter 1 之example 1-4 移植 至 s3c2440 开发板子中,却觉得不容易上手,请高手不吝多多指教,谢谢! …

查看全部问答>

ads和linux交差编译环境的区别

这两个不都是最终都是生成arm的识别的文件,有什么区别吗,生成的格式不一样?这两个环境各生成什么格式文件,如何下载或者说用什么软件下载?有人说ads一般用于裸机编程,是这回事吗? 我是菜鸟,不要喷我,感谢啦…

查看全部问答>

圆点博士微型四轴飞行器电路原理图

圆点博士微型四轴飞行器电路原理图 …

查看全部问答>

正月十五闹花灯!几个简单的LM317频率可调的闪光灯电路图

LM317常用作电压稳压器中的调整元件,这里给大家介绍一个不寻常的应用,只要配上不多的外部元件,可以使一个12V的小灯泡闪烁发光。 如图,采用所给的元件参数值和信号,当电路接通以后,小灯泡将以4Hz的频率闪烁,当然,若改变元件参数(R2或C ...…

查看全部问答>

FLASH历程的疑问

TI给的关于FLASH历程 void main(void) {   unsigned long * Flash_ptrD;               // Initialize Flash pointer Seg D   unsigned long value;   WDTC ...…

查看全部问答>

职场法则故事映射上下级相处法

  每个上司都有自己的个性,但是你知道吗,从某种程度上讲,人们的性格是可以被稍微调整的。就拿处于热恋中的人来说,就算平时最懦弱的男人,也一定会在心爱的女人面前表现出英雄气概。   就算不是恋爱,碰到了一个楚楚可怜的女孩子,很多男 ...…

查看全部问答>