历史上的今天
今天是:2025年01月23日(星期四)
2020年01月23日 | 【ARM】arm异常中断处理知识点
2020-01-23 来源:eefocus
ARM处理器7种类型异常
按优先级从高到低的排列如下:
复位异常(Reset)
数据异常(Date Abort)
快速中断异常(FIQ)
外部中断异常(IRQ)
预取异常(Prefetch Abort)
软件中断异常(SWI)
未定义指令异常(Underfined instruction)
当异常发生时
处理器会把PC设置为一个特定的存储器地址。
这一地址放在被称为向量表(vector table)的特定地址范围内。
向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。
当异常发生时,分组寄存器r14和SPSR用于保存处理器状态。
ARM异常处理器模式
每一种异常都会导致内核进入一种特定的模式。
用户和系统模式是仅有的不可通过异常进入的两种模式,也就是说,要进入这两种模式,必须通过编程改变CPSR。
FIQ和IRQ异常中断
ARM内核只有两个外部中断输入信号nFIQ和nIRQ。但对于一个系统来说,中断源可有多达几十个。
为此,在系统集成的时候,一般都会有一个异常控制器来处理异常信号。
这时候用户程序可能存在多个IRQ/FIQ的中断处理函数。为了使从向量表开始的跳转始终能够找到正确的处理函数入口,需要设置一套处理机制和方法。
多数情况下是由软件来处理异常分支的,因为软件可以通过读取中断控制器来获得中断源的信息。
S3C2410X中断控制
1)程序状态寄存器的F位和I位。如果CPSR程序状态寄存器的F位被设置为1,那么CPU将不接受来自中断控制器的FIQ;如果CPSR程序状态寄存器的I位被设置为1,那么CPU将不接受来自中断控制器的IRQ。因此,为了使能FIQ和IRQ,必须先将CPSR程序状态寄存器的F位和I位清零,并且中断屏蔽寄存器INTMSK中相应的位也要清零。
2)中断模式(INTMOD)
ARM920T提供了两种中断模式,即FIQ模式和IRQ模式。
所有的中断源在中断请求时都要确定使用了哪一种中断模式
3)中断挂起寄存器(INTPND)
S3C2410X有两个中断挂起寄存器:源中断挂起寄存器(SRCPND)和中断挂起寄存器(INTPND),用于指示对应的中断是否被激活。
当中断源请求中断的时候,SRCPND寄存器的相应位被置为1,同时INTPND寄存器中也有唯一的一位在仲裁程序后被自动置1。
如果屏蔽位被设置为1,相应的SRCPND位会被置为1,但是INTPND寄存器不会有变化;
如果INTPND被置位,只要标志I或标志F一旦被清零,就会招待相应的中断服务程序。
在中断服务子程序中要先向SRCPND中的相应位写1来清除挂起状态,再用同样的方法来清除INTPND的相应位的挂起状态
4)中断屏蔽寄存器(INTMSK)
当INTMSK寄存器的屏蔽位为1时,对应的中断被禁止;当INTMSK寄存器的屏蔽位为0时,则对应的中断正常执行。
如果一个中断的屏蔽位为1,在该中断发出请求时挂起位还是会被设置为1,但中断请求都不被受理
S3C2410中断控制寄存器
S3C2410X的中断控制器有5个控制寄存器:
源挂起寄存器(SRCPND)、中断模式寄存器(INTMOD)、中断屏蔽寄存器(INTMSK)、中断优先权寄存器(PRIORITY)、中断挂起寄存器(INTPND)。
中断源发出的中断请求首先被寄存器在中断源挂起寄存器(SRCPND)中,INTMOD把中断请求分为两组:快速中断请求(FIQ)和中断请求(IRQ),PRIORITY处理中断的优先级。
1)中断模式控制器(INTMOD)
<注意>中断控制寄存器中只有一个中断源可以被设置为FIQ模式,因此只能在紧急情况下使用FIQ。
2)中断挂起寄存器(INTPND)
当中断请求被响应的时候,相应的位会被设置为1。
在某一时刻只有一个位能为1,因此在中断服务子程序中可以通过判断INTPND来判断哪个中断正在被响应。
在中断服务子程序中必须在清零SRCPND中相应位后清零相应的中断挂起位,清零方法和SRCPND相同
<注意>向INIPND等于“1”的位写入“0”时,INTPND寄存器和INTOFFSET寄存器会有无法预知的结果,因此,千万不要向INTPND的“1”位写入“0”。推荐方法是把INTPND的值重新写入INTPND。
上一篇:【ARM】ARM程序规范
史海拾趣
|
电阻:RES1,RES2,RES3,RES4;封装属性为axial系列 无极性电容:cap;封装属性为RAD-0.1到rad-0.4 电解电容:electroi;封装属性为rb.2/.4到rb.5/1.0 电位器:pot1,pot2;封装属性为vr-1到vr-5 &nbs ...… 查看全部问答> |
|
也是有感于sunhong的帖子,因此希望大家讨论一下。 记得是在去年这个时候,我采访了NEC中国的一位高管,是中国人。因此聊天中他不可避免地流露出了一些民族情怀。他谈到NEC会提供很丰富的参考设计时,忍不住提到有些国内企业,简直是完全依赖于参 ...… 查看全部问答> |
|
我进入一家公司开始工作了,部门开发的是在Wince下跑的软件,用的是EVC4.0和VC2005工具,可是我刚进入这行,以前连用都没用过这两个工具平台,请问哪位朋友帮指指路,哪里有没有介绍如何使用操作这两个平台工具的书?或视频更好?孙鑫的\"VC++深入 ...… 查看全部问答> |
|
STM32最大可有512K的程序空间,我想把它分成大约6份,一份存放IAP程序,大约占12K,剩下的500k分成5份,我这样可以一个CPU里放5个应用程序,我想用5个中的程序中的哪一个,设置一下,复位后就运行哪个程序,还可远程升级且不局限于串口1,你们 ...… 查看全部问答> |
|
我做的是基于FPGA的视频采集传输系统,板子是DE2-115,摄像头500W像素,用VerilogHDL 编程在Quratus II中下到板子上,通过VGA接口连接本地模拟显示器以显示实时视频,现在可以传输和启动摄像头了,只是显示的全是彩色条纹,移动摄像头彩色条纹亮度和 ...… 查看全部问答> |
|
总体实现这个系统的架构的可能性。 是TI sensortag能够实现通用的单元模块,发挥板载传感器的同时,能够把剩余的端口利用起来,以实现不同检测,控制的功能要求。 让懒人更懒一些。… 查看全部问答> |
|
看着论坛上的朋友们有排线断裂的情况,担心了好几天,今天中午收到 马上开箱 哇 lucky~~~毫发无损的过来了。 猜想可能液晶排线断了的情况应该只是少数,事实上板子上有两处将液晶固定在pcb上的位置,一处是排线部分用双面胶封了,另一处是板子底部 ...… 查看全部问答> |




