AT91的中断处理机制

来源:互联网 发布:php全能运行环境 编辑:程序博客网 时间:2024/05/21 10:43

 1、所有编程为沿发的中断源(包括源0中的FIQ)可通过写AIC_ISCRAIC_ICCR存器来

置与清零。

2AIC_IVR( 中断向量存器) 时,AIC 自动除当中断有当操作影响中断时,AIC才会检测中断源。自动低中断服务程序入口代码AIC_IVR 请求操作

3、当读AIC_FVR 时执行自动清除中断源0

4、高级中断控制器(AIC) 用户接口的基地址 AIC映射到地址0xFFFF F000上。共有4-K字节的地址空间。

5、一个8级优先级控制器驱动处理器nIRQ线,由出现在中断源131的中断条件决定(除编程为快速强制的)。

每个中断源通过对相应的AIC_SMR(源模式寄存器)PRIOR域写定义其优先级。等级7优先级最高,等级0优先级最低。

一旦AIC_SMR(源向量寄存器)中的SRCTYPE域定义的中断条件出现,nIRQ线出现。

由于nIRQ出现可能有其它中断源的中断条件出现,优先级控制器决定读AIC_IVR时的当前中断。

中断向量寄存器(AIC_IVR)包含了用户编程的当前中断相关的源向量寄存器(AIC_SMR)。读中断向量寄存器时,源向量寄存器使用中断号码作为索引。当没有当前中断,中断向量寄存器读取存储于AIC_SPU中的值SIQV

SIQV: 伪中断向量寄存器。

用户可在该寄存器中存储伪中断处理程序的地址。当出现未中断时,写入该寄存器的值为AIC_IVR 的返回值,类似的发生伪快速中断时,写入该寄存器的值为AIC_IVR 的返回值。

6、若几个优先级相等的挂起中断源在读AIC_IVR后使能,中断源序号最低的中断先行服务。

只有当一个更高优先级的中断源中断条件出现时,nIRQ线出现。若在中断执行时出现中断条件(或挂起),它将延迟到检测到AIC结束当前服务。(前面的这两话的意思是如果现在有一个优先级比较高的中断正在处理时,出现一个优先级比较低的中断请求,则此时nIRQ线保持不出现nIRQ线在进入中断处理程序之后会被释放的,即在中断处理执行过程中nIRQ是不出现的也即是CPU不理睬该低优先级的中断请求,等检测到优先级比较高的中断已经处理完毕再去相应低优先级的中断请求)

AIC_EOICR写入将退出中断处理,我们也可以根据从AIC_EOICR的读出的值判断一个中断处理是否已经结束。

7、当处理一个优先级比较低的中断服务期间出现一个中断优先级更高的中断,nIRQ线重新出现。若中断在内核级使能,打断当前中断执行,新的中断服务应读取AIC_IVR,但AIC_IVR( 中断向量存器) 时,AIC 自动除当中断,所以在读取AIC_IVR之前,必须把当前中断序号以及其优先级推入内置硬件堆栈,这样才可以保证在高优先级中断服务结束并对AIC_EOICR写入后可以重新加载原来的中断服务。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 感冒了流清鼻涕怎么办 哈士奇又吐又拉怎么办 怀孕乳房长妊娠纹怎么办 乳房长妊娠纹了怎么办 宝宝忌奶晚上哭怎么办 20岁胸下垂松软怎么办 断奶时乳房有肿块怎么办 孩子断奶后乳房变小怎么办 断奶了月经不来怎么办 钥匙在门上拔不出来怎么办 钥匙拔不下来了怎么办 养了几天鱼死了怎么办 乌龟的眼睛肿了怎么办 手被鱼刺扎了怎么办 被鱼刺扎手肿了怎么办 手被桂鱼扎了怎么办 三岁宝宝卡鱼刺怎么办 一岁宝宝卡鱼刺怎么办 鱼刺卡在胸口了怎么办 婴儿被鱼刺卡了怎么办 幼儿被鱼刺卡到怎么办 鱼刺被吞下去了怎么办 喉咙卡到鱼刺下不去怎么办 被小鱼刺卡了怎么办 晚上被鱼刺卡到怎么办 一个小鱼刺卡了怎么办 卡了一个小鱼刺怎么办 鱼刺卡在气管里怎么办 刺蛾幼虫 蛰了怎么办 被杨树辣子蛰了怎么办 蜇了老子蜇了怎么办 被刺蛾幼虫蛰了怎么办 孕妇被蚊虫叮咬发痒怎么办 白掌叶子尖发黄怎么办 白掌叶子卷了怎么办 白掌叶子全软了怎么办? 发财树有黄斑了怎么办 幸福树叶子蔫了怎么办 幸福树枝条塌了怎么办? 幸福树叶子嫣了怎么办 毒蚊子叮咬肿硬怎么办