S3C2440的中断体系结构
概述
S3C2440A中的中断控制器接受来自60个中断源的请求。提供这些中断源的可以是内部外设,如DMA控制器、UART、IIC等等。在这些中断源中,UARTn、AC97和EINTn中断对于中断控制器而言是“或”关系(在这几个源中还可以有中断分支)。
当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T内核的FIQ或IRQ。
总流程图如下:
程序状态寄存器(PSR)的 F 位和 I 位
如果 ARM920T CPU 中的 PSR 的 F 位被置位为 1,CPU 不会接受来自中断控制器的快中断请求(FIQ)。同
样的如果 PSR 的 I 位被置位为 1,CPU 不会接受来自中断控制器的中断请求(IRQ)。因此,中断控制器可以通过
清除 PSR 的 F 位和 I 位为 0 并且设置 INTMSK 的相应位为 0 来接收中断。
中断模式
ARM920T 有两种中断模式的类型:FIQ 或 IRQ(可以通过 中断模式 INTMOD 寄存器 设置成FIQ或IRQ)。所有中断源在中断请求时决定使用哪种类型。
中断挂起寄存器
S3C2440A 有两个中断挂起寄存器:源挂起寄存器(SRCPND)和中断挂起寄存器(INTPND)。这些挂起寄
存器表明一个中断请求是否为挂起。当中断源请求中断服务,SRCPND 寄存器的相应位被置位为 1,并且同时在仲
裁步骤后 INTPND 寄存器仅有 1 位自动置位为 1。如果屏蔽了中断,则 SRCPND 寄存器的相应位被置位为 1。这
并不会引起 INTPND 寄存器的位的改变。当 INTPND 寄存器的挂起位为置位,每当 I 标志或 F 标志被清除为 0 中
断服务程序将开始。SRCPND 和 INTPND 寄存器可以被读取和写入,因此服务程序必须首先通过写 1 到 SRCPND
寄存器的相应位来清除挂起状态并且通过相同方法来清除 INTPND 寄存器中挂起状态。
中断屏蔽寄存器
此寄存器表明如果中断相应的屏蔽位被置位为 1 则禁止该中断。如果某个 INTMSK 的中断屏蔽位为 0,将正常
服务中断。如果 INTMSK 的中断屏蔽位为 1 并且产生了中断,将置位源挂起位。
中断控制器支持 60 个中断源,如下图所示:
这里,外部中断 4 至 7是共用一个源、UART2 中断的(ERR、RXD 和 TXD)是共用一个源....我觉得这样的作用就是为了每项功能 (例如挂起、屏蔽)可以用一个寄存器来管理。
中断次级源,如下图:
我想大家看到这个图后就应该明白了为什么要有 次级源挂起(SUBSRCPND)寄存器 和 中断次级屏蔽(INTSUBMSK)寄存器 了吧。
当一个源中还有子源的话,就会走第一张图的上支路,反而走下支路。假如我们在 INTSUBMSK 中屏蔽了 INT_TC 这个中断,和它共处一个源的 INT_ADC_S 中断还是可以进来,但是如果屏蔽了 INT_ADC 这个中断源,它们两个就都会被屏蔽掉。
中断优先级
每个仲裁器可以处理基于 1 位仲裁器模式控制(ARB_MODE)和选择控制信号(ARB_SEL)的 2 位的 6 个中断请求,如下:
仲裁器的 REQ0 的优先级总是最高并且 REQ5 的优先级总是最低通过改变 ARB_SEL 位,可以轮换 REQ1 到 REQ4 的顺序(当 ARB_MODE 为 1 时)。 | |
---|---|
– 如果 ARB_SEL 位为 00b,优先级顺序为 REQ0、REQ1、REQ2、REQ3、REQ4 和 REQ5。 | |
– 如果 ARB_SEL 位为 01b,优先级顺序为 REQ0、REQ2、REQ3、REQ4、REQ1 和 REQ5。 | |
– 如果 ARB_SEL 位为 10b,优先级顺序为 REQ0、REQ3、REQ4、REQ1、REQ2 和 REQ5。 | |
– 如果 ARB_SEL 位为 11b,优先级顺序为 REQ0、REQ4、REQ1、REQ2、REQ3 和 REQ5。 |
中断优先级发生模块:
最后介绍一下中断偏移(INTOFFSET)寄存器
中断偏移寄存器中的值表明了是哪个 IRQ 模式的中断请求在 INTPND 寄存器中。此位可以通过清楚 SRCPND
和 INTPND 自动清除
大概意思就是你可以把这个寄存器当成中断请求后的标志位,通过察看偏移值就可以知道当前是哪个中断源发生请求。
S3C2440的中断体系结构的更多相关文章
- GNU μC/OS-II 在 S3C2440 上中断的实现
上一篇文章介绍了S3c2440的中断体系结构,今天我们来分析一下GNU-uC/OS-II在S3c2440上中断的实现. 首先找到IRQ的中断的向量,位于 2440init.S : OK ,我们通过名字 ...
- JZ2440 裸机驱动 第9章 中断体系结构
本章目标: 了解ARM体系CPU的7种工作模式 了解S3C2410/S3C2440中断体系结构 掌握S3C2410/S3C2440的中断服务程序的编写方法 9.1 S3C241 ...
- Linux中断体系结构
1.中断处理体系结构 Linux内核将所有中断统一编号,使用一个irq_desc结构数组来描述这些中断. 数组声明在/linux/kernel/irq/handle.c中,其中#define NR_I ...
- s3c2440——按键中断
s3c2440的异常向量表: IRQ中断地址是0x18.所以,根据之前的异常处理方式,我们编写启动文件: 为什么需要lr减4,可以参考这篇文章:http://blog.csdn.net/zzsfqiu ...
- 代码片段---S3C2440按键中断驱动程序的设计
用到的知识: 中断 等待队列 睡眠 select poll misc http://pan.baidu.com/s/1bneSG5h
- S3C2440外部中断系统详解
个中断源的请求.提供这些中断源的是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是“或”关系.任意一个中断发生都会触发总中断 当 ...
- arm中断体系结构
ARM处理器中有7种类型的异常,按优先级从高到低的排列如下: 复位异常(Reset). 数据异常(Data Abort). 快速中断异常(FIQ) ...
- s3c2440中断控制器操作
一.ARM中断体系结构 arm有7中异常工作模式 用户模式.快中断模式.管理模式.数据访问终止模式.中断模式.系统模式.未定义指令终止模式. 几种模式有什么不同呢, 1.不同的寄存器 2.不同的权限 ...
- Linux驱动之中断处理体系结构简析
S3C2440中的中断处理最终是通过IRQ实现的,在Linux驱动之异常处理体系结构简析已经介绍了IRQ异常的处理过程,最终分析到了一个C函数asm_do_IRQ,接下来继续分析asm_do_IRQ, ...
随机推荐
- AX_List
List list = new List(Types::Class); CustTable custTable; while select custTable { list.addEn ...
- solr7.7.0搜索引擎使用(一)(下载安装)
一.下载安装 可以直接在官网下载地址:https://lucene.apache.org/solr/ 解压之后,目录结构如下图,bin里边提供部署的文件,contrib提供额外的jar包,docs提供 ...
- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase] 错误
在一次改bug的过程,爆出了数据库错误,但是一看后面控制台,并没有爆出以前的具体的数据库错误的原因,而是 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, In ...
- 51nod1305
可以暴力,但这里学习了一个新思路,就是把原式进行分解会得到[1/a[i]+1/a[j]],因为向下取整,我们可以发现,1作用于1结果为2,1作用于除了1之外的数结果为1,2作用于2结果为1,所以我们只 ...
- django学习第一天
class ModelAdmin(BaseModelAdmin): """Encapsulate all admin options and functionality ...
- 2019.02.28 bzoj3527: [Zjoi2014]力(fft)
传送门 fftfftfft菜题. 题意简述:给一个数列aia_iai,对于i=1→ni=1\rightarrow ni=1→n求出ansi=∑i<jai(i−j)2−∑i>jai(i−j ...
- JAVA核心问题(一)反射之引言 构造函数
反射,简单来说,就是在运行时获取Class对象的所有属性和方法,无论公有私有.虽然是一个基础问题,在这里还是全面的记录一下,认真对待! 获取构造函数 构造函数大致分为两种,public和非public ...
- 自动化部署shell
yum install curl policycoreutils openssh-server openssh-clients postfix [root@linux-node2 ~]# yum in ...
- Codeforces828 C. String Reconstruction
C. String Reconstruction time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Latex 模版生成会议论文 不显示Keywords,而是显示 Index Terms- ,改成Keywords 方法
一. 不管显示何种内容,TEX 文件都是 \begin{IEEEKeywords} 关键词1.关键词2,..... \end{IEEEKeywords} 其中:模版文件 IEEETran.cls存在下 ...