历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2020年04月23日 | ARM异常和中断

2020-04-23 来源:eefocus

异常和中断

异常就是在程序运行过程中(USER mode),出现了一些异常情况,而中断是异常的一种情况.


模式和异常的对应关系


需要特别注意的就是,如果在程序执行过程中需要进行系统调用(程序正常运行在USER模式,而内核运行在SVC模式,user模式无法直接运行SVC模式的指令,因此需要通过异常的方式进入到特权模式. 故这里就通过SWI实现.),即 SWI软中断–>SVC.


异常处理

异常向量表

存储在内存固定区域,表中每一个表项都对应一个异常类型,存了一个跳转指令:LDR PC, handle(将需要调用的函数地址放到PC中,即可跳转到指定的地址执行)


异常优先级

RESET

Data Abort(数据异常)

FIQ

IRQ

Prefetch Abort(指令预取异常)

SWI(软件中断)

Undefined Instruction(未定义指令)

异常处理流程

CPU(进入异常)

拷贝 进入异常前的模式的CPSR —-> SPSR_< mode>(对应的异常模式的SPSR,用以退出异常时恢复到当前现场);

在异常处理中,再重新设置异常模式的CPSR:

改变处理器状态进入ARM状态;

改变处理器模式进入相应的异常模式;

设置中断禁止,禁止相应中断;

(以上操作后,进入到SVC模式)

保存当前模式(user)的返回地址到异常模式中的LR_< mode>(LR_SWI);

返回地址: 这个返回地址指的是,异常到达时,正在执行的指令的下一条指令的地址;

这里cpu进入异常处理时,默认操作为:lr= pc-4(结合三级流水线)

因此,针对不同的异常在恢复pc时操作是不一样的:

SWI/Undef: 直接取回lr中的指令地址即可, 即 mov pc,lr

IRQ/FIQ/Prefetch Abort: 在取回时,还需手动-4, 即 subs pc, lr,#4

Data Abort: 重新执行当前指令,因此手动-8, 即 subs pc, lr ,#8

设置PC为相应的异常向量;

程序员(退出异常,恢复)

从SPSR_< mode> 恢复 CPSR;(切换会原来的状态)

从LR_< mode> 恢复 PC;(让PC指向LR_SWI)

note:

这些操作只能在arm态下才能执行.


中断处理

ARM有两级中断FIQ,IRQ.

FIQ之所以快的原因:


优先级非常高

FIQ禁止产生IRQ

设计时,将FIQ放在异常向量表的末尾,因此可以直接将FIQ的异常处理函数紧跟放在其后,无需跳转;


独有的私有寄存器,因此无需在中断前保护其他寄存器状态.

推荐阅读

史海拾趣

GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:随着市场需求的不断增长,Galaxy Microelectronics意识到需要不断迭代技术和扩大产能。

发展:2010年,公司成功研发出3D V-NAND技术,这一技术革命性地提高了存储密度和性能,降低了功耗。同时,公司开始在全球范围内建设新的生产基地,以满足日益增长的市场需求。通过技术迭代和产能扩张,Galaxy Microelectronics逐渐成为了全球闪存市场的领军企业之一。

Emmoco公司的发展小趣事

Emmoco公司成立于XXXX年,由一群富有远见和创新精神的电子工程师创立。公司自创立之初就明确了以技术创新为核心的发展道路,专注于研发高性能的电子元器件和模块。经过初期的不懈努力,Emmoco成功推出了一系列具有竞争力的产品,为公司的后续发展奠定了坚实的基础。

BEI Sensors公司的发展小趣事

自2001年正式进入中国市场以来,Beckhoff在中国的业务得到了迅速发展。公司先后在北京、上海、广州、成都等地设立了分支机构,并在多个城市设立了办事处。随着中国市场的不断扩大和需求的不断增长,Beckhoff不断推出适应中国市场的新产品和技术,为中国客户提供更加便捷、高效的服务。

Hendon Semiconductors公司的发展小趣事

Hendon Semiconductors的起源可以追溯到上世纪90年代,当时它是Philips半导体在澳大利亚的一个分支机构。1997年,随着业务重组和战略调整,该分支机构转变为独立运营的公司,并更名为Integrated Electronic Solutions Pty. Ltd。这一转变标志着Hendon Semiconductors在电子设计与制造领域迈出了重要一步。通过继承Philips半导体的技术遗产和市场资源,Hendon Semiconductors迅速在行业内站稳脚跟,并开始了其自主发展的道路。

Aavid Niagra公司的发展小趣事

在快速发展的同时,Aavid Niagra公司始终关注企业社会责任和可持续发展。公司积极参与环保事业,推广绿色生产和消费理念。同时,公司还注重员工培训和福利保障,为员工创造一个良好的工作环境和发展空间。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。


这些故事框架主要围绕公司的初创、技术创新、全球化战略、行业变革应对以及企业社会责任等关键节点进行构建。您可以根据Aavid Niagra公司的实际情况和公开资料,对每个故事进行具体化和个性化的描述,以确保故事的准确性和可信度。

Baton Lock公司的发展小趣事

Baton Lock公司最初是一家小型电子元件制造商,面临着激烈的市场竞争。然而,公司凭借其研发团队对新型半导体技术的深入研究,成功开发出了一种高效能、低成本的芯片。这一技术创新迅速吸引了市场的关注,Baton Lock的订单量激增,公司规模迅速扩大。

问答坊 | AI 解惑

移动视频监控在“数字城管”中的应用

移动式无线视频监控,指系统的视频采集前端是可移动的视频采集终端,对不同的临时监控需求点进行监控。可移动的视频采集终端由于监控点不固定,因此,它必须利用无线公网作为监控数据的传输网络。    移动视频监控系统原理   移动视 ...…

查看全部问答>

请问你们知道前边值和后面的值有什么关系吗?

在2440.h中这么写的 #define ADC_BASE      0xB1800000 // 0x58000000 而在map.a中是这样写的, DCD 0x91800000, 0x58000000,  1  ; A/D convert register 0x91800000: 虚拟地址 0x58000000: 物理地 ...…

查看全部问答>

大家用wince6.0, 在vs2005里是怎么找函数和变量定义的???

转到声明,转到定义都用不了,怎么回事?是不是非托管代码的原因?…

查看全部问答>

关于USB接口的serial驱动

serial驱动是将USB接口模拟成串口?那是怎样与外部设备进行通信的?难道就和普通的串口一样?…

查看全部问答>

八位二进制数转BCD码

怎样将八位的二进制数转换成一字节的BCD码?…

查看全部问答>

PPP协议

  cfanlwn  你那还有PPP协议的资料没,发我一份啊!…

查看全部问答>

WinCE 4.2下软重启的工具

谁有WinCE 4.2下软重启的工具啊。网上的都是用于Win Mobile版本的。不能用。…

查看全部问答>

【讨论】如何自建库并调用它?

在IAR下要如何自建库,又怎么去调用呢?可否举个最简单的例子?????…

查看全部问答>

安装了IAR5.2,破解失败,怎么回事啊,用5.2的朋友进来看看

Fatal Error[Cp001]: Copy protection check, No valid license found for this product对程序进行编译就会有这个错误,用软件破解了啊,也在网上查了,但是还是没有解决我卸载好几遍了希望高手帮助啊…

查看全部问答>