历史上的今天
返回首页

历史上的今天

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

2021年09月08日 | s3c2440学习之路-012-0 异常中断基础知识

2021-09-08 来源:eefocus

1. 异常/中断的基本知识介绍

异常/中断是ARM经常用到的处理机制,因此需要好好学习。这里总是写中断/异常是因为中断属于异常的一种,而我们经常听到中断这个词语而少听到异常这个词,所以这些特意写成中断/异常。如果CPU发生中断时,我说CPU发生了异常,你可不能说我讲错了,因此异常包含了中断。


1.1 ARM的7种工作模式

从2440的数据手册中可以看到,ARM920T(2440使用的ARM920T的核) 总共有7种工作模式

image.png?imageView2/2/w/550

在这里插入图片描述

其中的中断模式就是我们常用的中断 ,当ARM处理中断操作时,就进入此模式。


1.2 ARM的异常向量表

当ARM发生异常时,就会把PC的值设置成一个固定的值,让程序跳转到固定的地址执行程序,并进入相应的工作模式。

如:

当发生复位时,PC=0x0, 程序跳转到0地址去执行程序,并进入管理模式。

当发生中断时,PC=0x18, 程序跳转到0x18地址去执行程序,并进入中断模式。

上面的例子中,PC的值由硬件自动帮忙赋值,不需要软件来操作。


从这里可以看出来,想要进入不同的工作模式,就需要发生不同的异常。这里就找到了异常与工作模式的关系。

在这里插入图片描述

1.3 重要的寄存器CPSR

如何知道ARM当前处于什么模式呢? 可以通过查看CPSR(Current Program States Register )寄存器来知道。

CPSR寄存器的bit[0] ~ bit[4] 可以查出ARM当前工作模式。

不过CPSR这种特殊的寄存器不是一般的mov指令可以操作的, 要通过msr,和 mrs来完成对CPSR寄存器的读写。


//读取cpsr 到r0

    mrs r0, cpsr

    //清空r0的低4位

    bic r0, r0, #0xf

    //把r0赋值给cpsr

    msr cpsr, r0

在这里插入图片描述
在这里插入图片描述

1.4 异常/中断的处理过程

在处理异常/中断时,即有硬件的处理也有软件的处理,主要的流程如下:


某种条件发引起异常


发生异常时硬件的处理,即进入异常

2.1将返回地址保存在LR(R14)寄存器

2.2将CPSR复制到SPSR(SPSR 就是专门弄来备份CPSR的)

2.3设置CPSR的模式位(设置CPSR的bit0~bit4)

2.4设置PC值为对应的中断/异常向量表(跳到固定地址)


发生异常时软件的处理,即处理异常然后回到异常发生时的位置继续处理

3.1 设置SP(因为需要通过压栈来保存寄存器和代码跳转)

3.2 保存现场(将通用的寄存器保存起来)

3.3 将SPSR赋值给CPSR

3.4 清除中断标志位(针对中断)

3.5 恢复现场(将通用的寄存器恢复回去)

3.6 将LR减去对应的值,再赋值给PC


3.6 将LR减去对应的值,在赋值给PC, 在2440手册中有表格说明LR的值,不过每种模式下LR的值是如何计算的并没有找到说明。

在这里插入图片描述

1.5 不同工作模式下的私有寄存器

ARM 通用的寄存器有R0-R15,不过在不同的工作模式下会有一些自己的私有寄存器。

如:

在FIQ模式下,会用到R0-R15,但是R8_fiq-R14_fiq虽然也是叫R8-R14,不过这是FIQ模式下的私有寄存器,不会影响到通用的R8-R14

在Supervisor模式下,会用到R0-R15,但是R13_svc-r14_srv虽然也叫R13-R14, 不过这是Supervisor模式下的私有寄存器,不会影响到通用的R13-R14


综上,用2句话来总结一下


他们是在不同模式下才有的私有寄存器

因为他们的功能时相同的,所以取名也相同,实际上是不同的物理寄存器

在这里插入图片描述

1.6 总结

看完后需要对以下的几个问题有些基本的了解才行。


ARM总共有几种工作模式

ARM有多少种异常

异常与工作模式之间有什么关系

在执行完异常后,如何计算LR的返回地址

推荐阅读

史海拾趣

厦门法拉(faratronic)公司的发展小趣事

随着电子技术的飞速发展,FMI公司紧跟时代步伐,不断研发新技术和新产品。在1992年,FMI成功将频率管理扩展到OEM市场,进一步拓宽了其业务范围。这一举措不仅增强了公司的市场竞争力,还为公司带来了更多的商业机会。通过为计算机外设、工业仪器、局域网/广域网等多个领域提供定制化的频率控制解决方案,FMI逐渐成为了行业内的佼佼者。

Conxall公司的发展小趣事

随着科技的飞速发展,物联网成为了新的热点。Conxall公司敏锐地捕捉到了这一机遇,投入大量资源进行物联网技术的研发。经过数年的努力,公司成功推出了一款具有高度集成和智能化特点的物联网模块,广泛应用于智能家居、智慧城市等领域,为公司的快速发展奠定了坚实的基础。

GradConn Ltd公司的发展小趣事

GradConn始终将技术创新作为公司发展的核心驱动力。公司拥有一支专业的研发团队,致力于开发新型连接器和电缆组件,以满足不断变化的市场需求。同时,GradConn的所有工厂均通过了ISO 9001:2015和ISO 14001:2015等国际质量管理体系认证,确保了产品的高质量和环境友好性。这些认证不仅提升了GradConn的品牌形象,还为其在全球市场上赢得了更多客户的信任和支持。

Circuit Technology Inc公司的发展小趣事

面对电子行业的快速变化和技术更新,CTI始终保持敏锐的洞察力。公司不断加大研发投入,引进高端人才,建立研发团队,致力于开发具有自主知识产权的新技术、新产品。通过不断创新,CTI成功推出了一系列具有竞争力的新产品,不仅满足了市场需求,也提升了公司的核心竞争力。

D3 Semiconductor公司的发展小趣事

在不断发展壮大的过程中,D3 Semiconductor逐渐将业务拓展至电机控制领域。公司开发的功率MOSFET产品,在电机控制应用和电源中表现出色,提供了更高的效率、集成和性能。这一领域的拓展不仅丰富了D3 Semiconductor的产品线,也进一步巩固了公司在电子行业中的地位。

DMS Electronic Components, Inc公司的发展小趣事

DMS非常重视人才的培养和引进。公司建立了完善的人才选拔和激励机制,吸引了一批高素质的专业人才加入。这些人才在技术研发、市场营销、生产管理等方面发挥了重要作用,为公司的快速发展提供了有力保障。同时,DMS还注重员工的培训和发展,为员工提供了广阔的职业发展空间。

问答坊 | AI 解惑

内置FM 好还是拉缸天线好

手机FM天线,到底是内置的好还是拉杆好? 其实各有他的有点,内置的体积小,拉杆的信号好。 就是不完美啊了。为了这个完美的,本公司花了数年研究这个问题,终于解决了,一种新的材料制作的内置FM天线,效果好且体积小,真是神一般的,呵呵 ,有 ...…

查看全部问答>

ov9650如何在竖屏正常显示

9650输出640*480,在横屏下可以不失真显示。可是我在竖屏下如果想要全屏显示图像会失真(就是图像变长了),因为竖屏分辨率为240*320。不知有没有高手知道怎么样才能不失真显示图像。…

查看全部问答>

如何通过蓝牙手机拨号上网

我想实现,Wince设备通过蓝牙模块连接蓝牙手机拨号上网,目前一个同事已经实现设备与蓝牙手机连接,获取电话本,接拨电话的功能,我想在其基础上实现拨号上网的功能,现在还没有什么头绪,请有经验的大虾讲讲思路。…

查看全部问答>

怎么判断一个键被长按?

手机键盘中,挂机键和电源键是同一个键,有一个问题就是:GPIO设为高电平时候可以作为挂机键不能作为电源键,GPIO设为低电平时候可以作为电源键却不能作为挂机键,现在需要解决这个问题。 想到可以做个后台程序检测手机的状态,当处于通话状态时候 ...…

查看全部问答>

MeeGo移植到SEED-DIM3517

MeeGo移植到SEED-DIM3517请注意,尚未测试通过0. 开发平台操 作 系 统:Ubuntu10.10交叉编译工具:arm-2009q1(光盘里带的)MeeGo 版本:1.1.90.1.20110201.11. 开发环境搭建1.1 安装MeeGo开发工具MeeGo开发工具的安装步骤还是很多,这里就不写了。 ...…

查看全部问答>

51单片机protues 仿真100例

51单片机protues 仿真100例,非常好的教程…

查看全部问答>

28335的I2C通信问题

各位大侠,我现在用28335的I2C模块与EEPROM  AT24C08进行通信,程序没有错误,但是用示波器不能测出SDA和SCL信号。例程里的从机地址是0x50,因为我这里用的是AT24C08,所以从机地址应该是0xA9,是不是只需要修改这个地址就可以了?希望各 ...…

查看全部问答>

还是关于USART printf

最近刚开始32位单片机的学习,呵呵,有点小不适应,固件库的确不错,但是需要适应时间,一个本来很简单的usart,却让我debug了两天。问题很简单,X-CUT接受不到USART发送的字符,我用的是神州IV,F107。目前我怀疑是时钟频率的问题,USART2 设置好后 ...…

查看全部问答>

ADI连续第三年入选全球最具创新力企业

中国,北京 (2013年10月29日) - Analog Devices, Inc.(ADI: NASDAQ)今天宣布,公司入选汤森路透2013全球最具创新力企业100强SM项目全球百家创新企业。该汤森路透奖项基于专有数据和分析工具,选出那些在创新方面居于全球领先地位的企业和组织。这是 ...…

查看全部问答>

lm5022升压模块out引脚不能输出pwm波形.......

本帖最后由 paulhyde 于 2014-9-15 03:17 编辑 电路如图,Rsns用一段0.1欧的导线代替,M1用的是IFRF024N。    …

查看全部问答>