您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中断处理 >

关于arm中的中断处理

发布时间:2019-06-19 11:21 来源:未知 编辑:admin

  1.cpu内部的中断控制器收集外部各个中断,经过一个的处理以后在报给cpu

  这里的中断请求源被分成了2个不同的类型,一个是有子中断(with sub-register),一个是没有子中断的,从图中可以得知不同的类型在中断的处理过程也是不一样的。

  这个寄存器的每一位都对应着一个子中断源,如果出现相应的中断,则会将相应的位置位为1,如果要清除这个中断,则向相应位置1就可以(我也很不明白,不过手册上是这么写的)

  这个寄存器的作用是如果对应位是1则就屏蔽这个中断,如果是0的话就允许这个中断往上去

  这个寄存器与SUBSRCPND这个寄存器的作用差不多,不过区别在于是SUBSRCPND是指示子中断,而SRCPND则是用来指示某一类的中断,可以说是一大类的。

  这个也有寄存器的,就是INTMASK 这个寄存器的作用其实和SUMMASK的作用差不多,也是用来屏蔽SRCPND上报的几个中断,不过不一样的是,如果中断是FIQ的话是不可屏蔽的,RIQ是可以屏蔽的

  这个寄存器是INTMODE,这个寄存器很简单的,他是用来对应SRCPND中的中断的,如果某一位置为”1“的话,那就说明这个中断是FIQ的,那cpu就会立即进入FIQ模式的,不过这个通常是用在紧急的中断的.从图中也可以看出来这个关系

  不可能每一次都只有一个中断会出现,所以对于多中断出来的时候应该怎么处理....

  每一个仲裁器可以处理6个中断请求,这些仲裁器是基于1位的(ARB_MODE)和2位的(ARB_SEL)

  关键是ARB_MODE这个值是有什么用的,关于这个值的主要的作用是优先级是否会自动变化,如果ARB_MODE是0的话,那么这个优先级的不会自动变化的,优先级是你一开始自己要设定要的,如果是1的话,那么这个优先级是会自动变化的,这个变化是循环的,让ARB_SEL循环变化的

  如果是REQ1服务,那么ARB_SEL就会变成01,就这样依次继续。对于这个在寄存器PRIORITY这个寄存器中设置。

  INTPND 这个是经过来了中断优先级仲裁器优先级选定过以后的中断,让这个寄存器是用来标识这个中断的,这样cpu就可以知道有什么中断了。不过这个寄存器很特殊就是同一个时间它只能一个位为1...

http://ando2.com/zhongduanchuli/117.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有