历史上的今天
返回首页

历史上的今天

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

正在发生

2021年09月10日 | S3c2440ARM异常与中断体系详解1---概念引入与处理流程

2021-09-10 来源:eefocus

取个场景解释中断。


假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。


问:这个母亲怎么才能知道这个小孩醒?


过一会打开一次房门,看婴儿是否睡醒,让后接着看书

一直等到婴儿发出声音以后再过去查看,期间都在读书

第一种 叫做查询方式: 

*优点:简单 

*缺点: 累 

写程序如何:


while(1)

{

    1 read book(读书)

    2 open door(开门)

    if(睡)

        return(read book)

    else

        照顾小孩

}

第二种叫中断方式:


优点:不累

缺点:复杂

写程序:


 

while(1)

{

    read book

    中断服务程序()//如何被调用?

    {

    处理照顾小孩

    }

}

我们看看母亲被小孩哭声打断如何照顾小孩?


母亲的处理过程:


1 平时看书


2 发生了各种声音,如何处理这些声音 

:: 有远处的猫叫(听而不闻,忽略) 

:: 门铃声有快递(开门收快递) 

:: 小孩哭声(打开房门,照顾小孩) 

3 母亲的处理 

:: 只会处理门铃声和小孩哭声 

:: a 现在书中放入书签,合上书(保存现场) 

:: b 去处理 (调用对应的中断服务程序) 

:: c 继续看书(恢复现场)


不同情况,不同处理:


a 对于门铃:开门取快件


b 对于哭声:照顾小孩


我们将母亲的处理过程抽象化——母亲的头脑相当于CPU


耳朵听到声音会发送信号给脑袋,声音来源有很多种,有远处的猫叫,门铃声,小孩哭声。这些声音传入耳朵,再由耳朵传给大脑,除了这些可以中断母亲的看书,还有其他情况,比如身体不舒服,有只蜘蛛掉下来,对于特殊情况无法回避,必须立即处理

有CPU,有中断控制器。


中断控制器可以发信号给CPU告诉它发生了那些紧急情况


中断源有按键、定时器、有其它的(比如网络数据)


这些信号都可以发送信号给中断控制器,再由中断控制器发送信号给CPU表明有这些中断产生了,这些成为中断(属于一种异常)


还有什么可以中断CPU运行?


指令不对,数据访问有问题


reset信号,这些都可以中断CPU 这些成为异常中断


重点在于保存现场以及恢复现场


处理过程


a 保存现场(各种寄存器)


b 处理异常(中断属于一种异常)


c 恢复现场


arm对异常(中断)处理过程


1 初始化: 

:: a 设置中断源,让它可以产生中断 

:: b 设置中断控制器(可以屏蔽某个中断,优先级) 

:: c 设置CPU总开关,(使能中断)


2 执行其他程序:正常程序


3 产生中断:按下按键—>中断控制器—>CPU


4 cpu每执行完一条指令都会检查有无中断/异常产生


5 发现有中断/异常产生,开始处理。对于不同的异常,跳去不同的地址执行程序。这地址上,只是一条跳转指令,跳去执行某个函数(地址),这个就是异常向量。如下就是异常向量表,对于不同的异常都有一条跳转指令。

 


.globl _start

_start: b   reset

    ldr pc, _undefined_instruction

    ldr pc, _software_interrupt

    ldr pc, _prefetch_abort

    ldr pc, _data_abort

    ldr pc, _not_used

    ldr pc, _irq //发生中断时,CPU跳到这个地址执行该指令 **假设地址为0x18**

    ldr pc, _fiq

//我们先在0x18这里放 ldr pc ,__irq,于是cpu最终会跳去执行__irq代码

//保护现场,调用处理函数,恢复现场

(3-5都是硬件强制做的)


6 这些函数做什么事情? 

:: 软件做的: 

:: a 保存现场(各种寄存器) 

:: b 处理异常(中断): 

:::: 分辨中断源 

:::: 再调用不同的处理函数 

:: c 恢复现场


对比母亲的处理过程来比较arm中断的处理过程。


中断处理程序怎么被调用?


CPU—>0x18 –跳转到其他函数-> 

:: 做保护现场 

:: 调用函数 

:::: 分辨中断源 

:::: 调用对应函数 

:: 恢复现场


cpu到0x18是由硬件决定的,跳去执行更加复杂函数(由软件决定)

推荐阅读

史海拾趣

Delock公司的发展小趣事

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

Eurosil Electronics Ltd公司的发展小趣事

面对日益激烈的市场竞争,Eurosil始终保持对研发的投入和关注。公司不断引进新技术、新设备,加强研发团队的建设,推动产品升级和产业升级。通过持续的创新,Eurosil在电子行业中保持了领先地位,并为客户提供了更加先进、高效的产品解决方案。

Anaren Ceramics公司的发展小趣事

为了确保产品质量的稳定性和可靠性,Anaren Ceramics公司建立了一套完善的质量管理体系。公司严格按照国际标准进行生产和管理,从原材料的采购到产品的出厂,每一个环节都经过严格的检测和把控。这种对质量的严格把控不仅赢得了客户的信任,也为公司在电子行业中树立了良好的口碑。

HDP_Power公司的发展小趣事

Anaren Ceramics公司在电子行业中崭露头角,首先得益于其在陶瓷材料技术方面的重大突破。公司研发了一种新型的陶瓷材料,具有优异的绝缘性能和高温稳定性,这为当时的电子行业提供了前所未有的解决方案。随着这种新型陶瓷材料在市场上的广泛应用,Anaren Ceramics公司的知名度逐渐提升,逐渐成为了行业内的佼佼者。

FUJIKURA公司的发展小趣事

Anaren Ceramics公司深知技术创新是企业发展的核心动力,因此一直致力于打造一支强大的研发团队。公司投入大量资金用于研发人才的引进和培养,同时积极与高校和科研机构建立合作关系,共同开展技术研发项目。这些举措使得公司的研发团队不断壮大,为公司的发展提供了源源不断的创新动力。

福声科技(FUET)公司的发展小趣事

福声科技(FUET)的初创可以追溯到几年前,当时电子产业正蓬勃发展,对高质量电声元器件的需求日益增长。公司创始人凭借在电声领域的深厚积累,决定成立一家专注于电声产品研发、生产和销售的企业。初期,福声科技聚焦于贴片式无源蜂鸣器、高分贝报警器等产品,凭借其高性价比和稳定的性能,迅速在家电、移动通讯设备等领域获得市场认可,为公司的后续发展奠定了坚实基础。

问答坊 | AI 解惑

伺服电机运动运动控制器运动控制系统

工业自动化1-36轴2相3相5相步进电机.伺服电机运动控制卡; 运动控制器; 运动驱动器;运动控制系统。 1、得到德国设计公司最先进的多轴运动控制技术方案,性能稳定可靠,高精密,电机运行噪音小 2、驱动控制2合1集成模板上,让你减少另外购买驱动器 ...…

查看全部问答>

AD0809,DA0832模块电路

本帖最后由 paulhyde 于 2014-9-15 03:59 编辑 最近在做各个常用模块,做了几个,效果还不错,不过,做到AD,DA转换的时候感觉有点困难,模块做得不是很理想, 我们主要做AD0809,DA0832这两款比较常见的芯片,可是总是无法总结出一个比较经典,实 ...…

查看全部问答>

学习AVR C语言重量级资料AVR c库函数介绍

CodeVisionAVR C Library Functions Reference CodeVisionAVR C 库函数介绍 译自CodeVisionAVR C Compiler Help …

查看全部问答>

求稳压电源的设计电路图?

求一个稳压电路的电路图,最好是用protel做的。谢谢…

查看全部问答>

关于WINCE下,继承CButton类,实现一个图形按钮类;发现无论如何都是刷新背景。

在WINDOWS下,Invalidate(FALSE)或者OnEraseBkgnd直接返回,就不会率刷新背景。 但在WINCE下,如果如何都刷背景。 按钮要实现如下效果:当鼠标移动按钮上面时,显示一副图,移开后显示另一副图,发现在WINCE下经常有闪屏的情况,本人认为就是绘 ...…

查看全部问答>

什么软件可以模拟单片机开发环境?

请问是否有这中软件,自己编写程序输入到计算机模拟的某个软件上,再通过计算机模拟软件搭建电路来实现其功能。…

查看全部问答>

新手请教一个总线读写的问题

#define TYPE_R          (0x30000008) Type = *(UCHAR *)(TYPE_R) 这个是访问EPLD的读操作,EPLD的数据port宽度定义为了8bit。 我不太明白的是*(UCHAR *)(TYPE_R)的语法代表什么意思,难道不是把地址0x30000008 ...…

查看全部问答>

pdf417条形码的truetype字库

我自己的FON字体似乎visual studio 2005 不支持,大家知道为什么么? 最近作pdf417条形码,缺少一个字库,请问大家有么?能否共享一个? qq:61060673…

查看全部问答>

IPM驱动信号正常,但是输出不正常查出的原因

IPM驱动信号正常,但是输出不正常。找了很久的原因才发现原来是IPM自带的欠压保护起作用了。…

查看全部问答>

ST的芯片印刷为什么字是横的,容易害人!

                                 一般芯片,圆点1脚放正了,字也是正的,而ST的字向右倒90度。我一个朋友就吃这个亏了,我认为应该正过来!…

查看全部问答>