历史上的今天
返回首页

历史上的今天

今天是:2025年05月06日(星期二)

正在发生

2018年05月06日 | 系统学习ARM之六 --异常处理

2018-05-06 来源:eefocus

转载自 http://blog.csdn.net/qqliyunpeng/article/details/48791715


一、简介:

异常:

    是一种突发情况。异常发生后,处理器要进行相应的处理(异常处理),切换到对应的异常工作模式。

二、四大步三小步:(异常处理的硬件完成的事项)

    (1)拷贝 CPSR 到 SPSR_

    (2)设置适当的 CPSR 位:

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

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

        ③设置中断禁止位禁止相应中断 (如果需要)

    (3)保存返回地址到 LR_

    (4)设置 PC 为相应的异常向量

三、异常处理的返回: --通过异常返回指令

1. 要做的:

  • 从 SPSR_恢复CPSR

  • 从LR_恢复PC

2. 返回的具体实现指令:

    ①第一种方式:指令带 “S” 后缀 + PC做为目的寄存器

        movs  pc,lr

    ②第二种方式:如果 lr之前被压栈的话使用LDM  +“ ^”

        ldmfd sp!,{ pc }^

注意:有些异常处理返回值需要修正lr寄存器

    所有从异常返回的情况:

    a、从SWI 和Undef 异常返回:

        movs  pc,lr

    b、从FIQ, IRQ 和 预取异常(Prefect Abort)返回:

        SUBS pc,lr,#4      ==     @ pc = lr -4 和 cpsr = spsr 两句

    c、从数据异常( Data Abort)返回:

        SUBS pc,lr,#8

    d、如果LR之前被压栈的话:

        MOVS pc,lr

四、异常源处理优先级表:

1. 表:

    Reset                最高

    Data Abort        //数据存取异常

    FIQ

    IRQ

    Prefetch Abort

    SWI

    Undefined instruction

2. 向量表指令:

    ①异常向量表:放的是不同异常源的处理地址。

    ②异常向量表指令:

         LDR PC, [PC, #+0xFF0]     可寻址±4k

         MOV PC, #0x30000000      立即数

         B IRQ_handler           可寻址±32M

五、中断控制器:

1. 为什么会有中断控制器?:

     ARM内核(小核)只有两个中断源,用中断控制器来扩展中断源

2. 中断控制器要实现的功能 / 中断控制器的作用:

  1. 择优----(优先级)

  2. 跳转到对应的中断处理函数

  3. 选择处理该中断源的cpu


六、FIQ 比 IRQ快的原因:

  1. fiq 比 irq 的优先级高

  2. FIQ 向量位于向量表的最末端,异常处理不需要跳转

  3. FIQ 比 IRQ 多5个私有的寄存器(r8-r12),在中断操作时,压栈出栈操作的少。


推荐阅读

史海拾趣

Eastman Kodak Company公司的发展小趣事

伊士曼柯达公司由发明家乔治·伊士曼于1880年创立,最初名为伊斯曼干版公司。伊士曼的初衷是提供一种更便捷、更经济的摄影方式,以满足大众对摄影的日益增长的需求。他通过不断的研发和创新,成功推出了易于使用的胶卷和相机,使摄影技术得以普及。这一创新不仅改变了摄影行业的格局,也为伊士曼柯达公司的后续发展奠定了坚实的基础。

得力(deli)公司的发展小趣事

得力公司在文具和打印机领域取得成功后,并未满足于此,而是继续寻求新的增长点。2016年,得力集团与余姚得力工具有限公司合资成立宁波得力工具有限公司,正式进入电动工具领域。得力凭借其在技术研发和品质控制方面的优势,迅速在电动工具市场占据一席之地。特别是其自主研发的“红芯”系列电动工具,凭借其高品质、高性价比的特点,赢得了用户的广泛好评。

Delock公司的发展小趣事

在快速发展的同时,Delock公司始终将产品质量放在首位。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到产品出厂,每一个环节都经过严格的检验。这种对品质的坚持让Delock公司的产品赢得了用户的信赖和好评。同时,公司还积极参与各类国际认证和评测,不断提升产品的品质水平。这些努力让Delock公司逐渐在电子行业中树立起了品质卓越的品牌形象。

上海晶岳(AFSEMI)公司的发展小趣事

在半导体行业中,供应链的稳定性和可靠性对于企业的生存和发展至关重要。晶岳电子深知这一点,因此一直致力于与流片及封装厂建立长期稳定的合作关系。公司的晶圆流片合作伙伴包括大陆的CSMC、ASMC,台湾的世界先进等公司;封装的合作伙伴则包括长电科技、上海芯哲等大陆上市企业。通过与这些合作伙伴的紧密合作,晶岳电子确保了产品质量的稳定性和交货期的可靠性,为公司的持续发展提供了有力保障。

这五个故事只是上海晶岳(AFSEMI)公司发展历程中的一部分,但它们充分展示了晶岳电子在电子行业中的崛起和成长。凭借对技术的执着追求和对市场的敏锐洞察,晶岳电子在激烈的市场竞争中脱颖而出,成为了行业内的一支重要力量。

HANA Micron公司的发展小趣事

除了工业检测仪表外,Hama在家用视听设备领域也取得了显著成就。公司推出的哈曼卡顿音响系列,以其卓越的音质表现和时尚的外观设计,迅速成为消费者心中的首选品牌。这些家用视听设备不仅为消费者带来了高品质的视听享受,也进一步丰富了Hama的产品线,提升了公司的市场竞争力。随着消费者对高品质生活的追求日益增强,Hama的家用视听设备业务有望继续保持快速增长。

Cornell Dubilier公司的发展小趣事

随着时间的推移,Cornell Dubilier公司不断致力于技术创新和产品升级。在电力电容领域,公司取得了显著的成果,其产品广泛应用于飞机、激光医学技术、替代能源、电焊机及发电机等多个领域。这些技术的突破和应用,不仅提升了公司的市场竞争力,也为电子行业的发展做出了贡献。

问答坊 | AI 解惑

现急需红外线发射接收感应开关

红外线发射接收感应开关 要求: 1、 模组由发射管和接收管组成,状态转换时(模组对人体感应到和感应不到两种状态)由一红色LED闪烁一下来指示,模组前面加一个红外线滤光片(可由一具有红外线滤光片作用的塑料外壳替代),不受其他家电红外线遥控 ...…

查看全部问答>

单片机汉字显示器件12232F

概述 12232F是一种内置8192个16*16点汉字库和128个16*8点ASCII字符集图形点阵液晶显示器,它主要由行驱动器/ 列驱动器及128×32全点阵液晶显示器组成。可完成图形显示,也可以显示7.5×2个(16×16点阵)汉字.与外部CPU接口采用并行或串行方式控制。 ...…

查看全部问答>

μC/OS-II and μC/OS-View

μC/OS-II 移植到Atmega128上的官方文档,对于要做移植的朋友是个很好参考~~~…

查看全部问答>

.net 在wince智能设备开发中, 如何在datagrid中加一列checkbox

.net 在wince智能设备开发中     如何在datagrid中加一列checkbox…

查看全部问答>

【 信号处理】级联信号处理器的FPGA实现

级联信号处理器的FPGA实现 需要的下过去看看 摘要:现代通信系统中,数字化已成为发展的必然趋势,数字信号处理则是数字系统中的重要环节。在数字信号处理方面提出一种级联信号处理器的FPGA实现方案,用以取代昂贵的专用数字处理芯片。首先对级联 ...…

查看全部问答>

【QT基础】windows下图标制作

  QT是跨平台的程序设计库,在windows下的程序往往想要有一个好看的图标,方法如下:     1、有无图标的区别:     2、首先要准备好.ico图标 下面这个是可以转换的网站:http://www.ico.la/old.html 可以格式 ...…

查看全部问答>

MOS管为什么会被静电击穿?

replyreload += \',\' + 1328453;我们在实际电子产品设计调试过程中,经常会有这样的疑问,MOS管为什么会被静电击穿?静电击穿是指击穿MOS管G极的那层绝缘层吗?击穿就一定短路了吗?JFET管静电击穿又是怎么回事? Timson,如果您要查看本帖隐藏内 ...…

查看全部问答>

几个功能函数的调用(包括adc,uart,timer)

#include \"msp430g2553.h\" #include \"UART.h\" void main(void) {           WDTCTL = WDTPW + WDTHOLD;                   // Stop watchdo ...…

查看全部问答>

关于MSP430F5529视频观看

怎么这个视频看着看着就要什么机构域名登陆了呢?没得就登不进去,这可怎么办呢?…

查看全部问答>

IC封装中BSC的意思?

IC封装小知识: 经常看到IC封装中使用BSC,那么BSC到底是什么意思呢? BSC的全称是Basic Spacing between Centers(中心基本距离),一般用在说明IC两引脚中心的基本间距。这是一个无误差的,理论的真实位置尺寸。 …

查看全部问答>