S3C2440中断
来源:互联网 发布:厦门市大数据管理中心 编辑:程序博客网 时间:2024/05/22 07:49
下图是S3C2440的中断结构图
首先是SRCPND(中断源未决寄存器),由32位构成,每一位与一个中断请求信号相关联。当某个中断源请求中断服务时,SRCPND寄存器中相应位被置为1,因此该寄存器记录了哪个中断源的请求在等待处理。由中断源自动设置,而不管中断屏蔽寄存器中对应的位是否被屏蔽,也不受中断控制器的优先级逻辑影响。
然后是MODE(中断模式寄存器),ARM有两种中断模式,FIQ(快速中断请求,MODE相应位为1),不受屏蔽和优先级的制约;IRQ(中断请求,MODE相应位为0),就是一般的情形,受屏蔽位和优先级影响。接下来讨论的都是IRQ情形。
对于IRQ请求,首先经过MASK(中断屏蔽寄存器),相应位为1屏蔽该中断,为0则可以对该中断进行响应。
接下来进行优先级排队,入门时先可以不考虑它。
接下来是INTPND(中断未决寄存器),表明CPU正在或即将响应某个中断。某一时刻INTPND只有一位可以被置1,该位置1 表明其所对应的中断在所有未被屏蔽的中断中优先级最高。
(1)SRCPND和INTPND看似比较类似,实则有着很大的不同。SRCPND表明当前有什么中断被触发了,可以有多位置1,与是否屏蔽和优先级无关;INTPND表明CPU将要或正在服务的中断,同一时刻只能有一位置1,是未被屏蔽的有最高优先级的中断。
二者的共同点在于进入中断服务程序后都要对相应位清零,以保证能正确响应下一次中断。并且都是通过写1 清零。(注意这里写1代表清零,0代表保持不变。与这两个寄存器本身的0和1代表的含义不同)
(2)S3c2440有6个外部中断,分别为:EINT0,EINT1.EINT2,EINT3,EINT4_7,EINT8_23。其中EINT4_7,EINT8_23分别都是共享一个中断位的。在外部中断有中断请求时,怎么区别是EINT4还是EINT5或EINT6发生中断呢,这就需要另一个寄存器EINTPEND来判断,由于EINT0~EINT3都独享一个中断,所以EINTPEND只有EINT4~23,读取该寄存器就知道哪个中断触发了。跟SRCPND一样,可以在同一时刻多个位同时为1,用来区分共享中断EINT4_7和EINT8_23具体为哪个或哪几个被触发,该位写1后被清0。
- S3C2440中断
- S3C2440中断
- S3C2440-中断
- ##S3C2440中断##
- s3c2440 中断
- s3c2440中断总结+按键中断
- S3C2440-中断寄存器详解
- s3c2440外部中断操作
- s3c2440实时时钟中断
- S3C2440的中断控制器
- S3C2440的中断控制器
- S3C2440的中断寄存器
- 关于S3C2440 中断向量
- S3C2440中断进不去分析
- S3C2440中断寄存器
- S3C2440系统中断
- s3c2440之外部中断
- s3c2440外部中断操作
- ffmpeg和sdl教程(三) --- 播放声音
- select模型
- 如何成为 Python 高手
- 工作时应该听什么音乐?
- java高级工程师------struts的知识重点
- S3C2440中断
- Magento缓存讲解之自定义缓存
- hdu2144
- USACO:Humble Numbers
- LINUX系统调用的添加(2.6.36版本)
- hdu1020(Encoding)
- 功能强大的命令行工具Powershell
- Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZ
- poj1065(木棍加工贪心)