S3C2440的中断体系结构

发布者:SparklingSoul最新更新时间:2024-08-09 来源: cnblogs关键字: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  中断体系  结构 引用地址:S3C2440的中断体系结构

上一篇:GNU μC/OS-II 在 S3C2440 上中断的实现
下一篇:SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

推荐阅读最新更新时间:2026-03-20 20:44

S3C2440中断体系结构
一、S3C2440中断体系结构 1)ARM体系CPU的7种工作模式 用户模式(usr):ARM处理器正常的程序执行状态 快速中断模式(fiq):用于高速数据传输或通道处理 中断模式(irq):用于通用的中断处理 管理模式(svc):操作系统使用的保护模式 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护 系统模式(sys):运行具有特权的操作系统任务 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真 除用户模式外,其他6种工作模式都属于特权模式,大多数程序运行于用户模式,进入特权模式是为了处理中断、异常,或者访问被保护的系统资源。
[单片机]
<font color='red'>S3C2440</font><font color='red'>中断</font><font color='red'>体系</font><font color='red'>结构</font>
ARM学习之中断体系结构
今天下午和晚上研究了一直在研究s3c2410中断体系结构,虽然以前老师上课也接触过,考试也考过,但仔细研究起来,还是有不少收获的。现记述如下: 1.什么是中断? 答:中断是CPU保证并发程序的一种机制。它使得CPU在执行程序的时候能够响应异常的情况发生。 其实,在CPU在运行的过程中,如何知道各类外设发生了某些没预期的事,比如说串口接受到了数据、USB接口中插入了设备、按下了某个按键。有两种方法,一个是前面所说的中断、另一个就是轮询方式。(就是不断的while循环查询)。从某种程度上说,这两种方式其实是一样的。前者是把查询的时间跨度缩小到每条指令执行结束后,即当某事件发生时,硬件会设置某个寄存器;CPU在每执行完一条指令时,通过硬
[单片机]
ARM9的中断体系结构
实验的目的: 当TQ2440开发板的按键按下的时候,触发中断,点亮LED灯。 实验的源程序: /************************************************************************************* *s3c24xx.h *************************************************************************************/ /* WOTCH DOG register */ #define WTCON (*(volatile unsigned long *)0x53000000)
[单片机]
ARM9的<font color='red'>中断</font><font color='red'>体系</font><font color='red'>结构</font>
S3C2440时钟体系结构
任意一款单板,我们了解其时钟都是通过时钟树来的。 这里没有全部截完,只是讲解时钟来源,OSC代表晶振,这说明我们的时钟可以来至晶振OSC也可以来至外部输入EXTCLK,这是通过OM选择器来完成的。 2440的时钟,分为主时钟和usb时钟,先说主时钟,usb时钟之后用到的时候再说。 要如何配置FCLK,HCLK,PCLK? 可以知道我们cpu的最大时钟位400M,高速总线最大时钟136M,外设最大时钟68M。 为了试验,我们配置FCLK=400,HCLK=100,PCLK=50。 较之前的LED灯程序,我们增加一个初始化函数: 启动汇编增加一条语句: 这样下载进去之后,你会看到LED灯的闪烁频率变
[单片机]
<font color='red'>S3C2440</font>时钟<font color='red'>体系</font><font color='red'>结构</font>
S5PPV210的中断体系介绍
1、什么是中断 (1)中断的发明是用来解决宏观上的并行需要的。宏观就是从整体上来看,并行就是多件事情都完成了。 (2)微观上的并行,就是指的真正的并行,就是精确到每一秒或每一刻,多个事情都是在同时进行的。宏观上面的并行不等于微观上的并行,有时候宏观上是并行的,微观上是串行的。 (3)例子中一个人在看电影,快递来了暂停电影跑去收快递,收完快递继续回来看电影,这个例子就是宏观上的并行和微观上的串行。例子中一个人等同于SOC中1个CPU(也就是单核CPU),这个CPU看电影就不能收快递,收快递就不能看电影(也就不能真正的并行去同时做两件或多件事)。单核CPU在微观角度是串行的,但是因为CPU速度很快,所以宏观上看来是并行的。 (4)上例
[单片机]
s3c2440的处理器结构和外设连接
1、S3C2440处理器结构 S3C2440处理器的结构如下图所示,其核心单元为ARM9TDMI处理器核,主要包括16K的指令Cache和16K的数据Cache,以及分开的指令和数据MMU单元等。CP15为一个协处理器(Co-Processor)。通过AMBA2.0(Advanced Microcontroller Bus Architecture)总线接口与外部设备相连。 IVA指Instruction Virtual Address,指令虚拟地址;DVA指Data Virtual Address,数据虚拟地址。IPA指Instruction Physical Address,指令物理地址;DPA指Data Physical
[单片机]
<font color='red'>s3c2440</font>的处理器<font color='red'>结构</font>和外设连接
S3C2440时钟体系结构与编程
如果cpu是计算机的大脑,电流是计算机的血液,那么时钟则是计算机的心脏,时钟频率决定了处理器运算的快慢,它的每一次“跳动”都驱动着处理器不停的执行命令。不同的是,人的各个部位心率是一样的,但计算机却有多个频率,而且每个部位可能有不同的频率,比如“大脑”有一个频率,“手“有一个频率,“脚”使用的是另外一个频率,这样就产生了两个问题:怎么产生这些不同的频率?处理器怎么与自己不同频率的外设实现交互? 怎么产生这些不同的频率? 为了获取稳定的时钟,我们一般使用外部晶振来提供,晶振是由石英和震荡电路组成的,石英能够提供稳定的频率。一般一个计算机系统最少需要一个晶振,有些特殊的外设也会有自己特有的晶振,比如网卡,显卡等,但是对于大多数连接
[单片机]
<font color='red'>S3C2440</font>时钟<font color='red'>体系</font><font color='red'>结构</font>与编程
深入理解ARM体系架构S3C6410外部中断控制实例
关于S3C6410的中断问题,网上有很多高手已经分析过了,在这里我主要分析S3C6410实现过程,和自己已经编写好的简单程序。 我用的是mini6410 的k1键实现外部中断。 按键初始化: void Key_Init() { rGPNCON|=(1 1); //将GPN0设置为中断模式 rGPNPUD&=~(1 0);//上拉电阻 rEINT0CON0|=(3 0); //下降沿触发 rEINT0MASK&=~(1 0); //取消屏蔽 rEINT0FLTCON0|=(1 7); //延时滤波 } 注意:我在这只初始化了一个引脚,即GPNCON0 按键中断程序: void Key_ISR(
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved