关于ARM2440中断源个数的一点想法[通俗易懂]

关于ARM2440中断源个数的一点想法[通俗易懂]关于ARM2440中断源个数的一点想法

大家好,又见面了,我是你们的朋友全栈君。

S3c2440支持多达36个内部中断源和24个外部中断源,分别使用内部终端屏蔽寄存器INTMSK和外部中断寄存器MSK进行屏蔽控制。其中,外部中断源通过GPIO以复用的方式成为内部中断源的一部分。

但是我们清楚,INTMSK是一个32位的寄存器,最多只能支持32中断,它是如何对应这么多中断的呢?

首先我们先看INTMSK对应的位。


INTERRUPT MASK (INTMSK) REGISTER (Continued)


INT_ADC [31] 0 = Service available, 1 = Masked 1


INT_RTC [30] 0 = Service available, 1 = Masked 1


INT_SPI1 [29] 0 = Service available, 1 = Masked 1


INT_UART0 [28] 0 = Service available, 1 = Masked 1


INT_IIC [27] 0 = Service available, 1 = Masked 1


INT_USBH [26] 0 = Service available, 1 = Masked 1


INT_USBD [25] 0 = Service available, 1 = Masked 1


INT_NFCON [24] 0 = Service available, 1 = Masked 1


INT_UART1 [23] 0 = Service available, 1 = Masked 1


INT_SPI0 [22] 0 = Service available, 1 = Masked 1


INT_SDI [21] 0 = Service available, 1 = Masked 1


INT_DMA3 [20] 0 = Service available, 1 = Masked 1


INT_DMA2 [19] 0 = Service available, 1 = Masked 1


INT_DMA1 [18] 0 = Service available, 1 = Masked 1


INT_DMA0 [17] 0 = Service available, 1 = Masked 1


INT_LCD [16] 0 = Service available, 1 = Masked 1


INT_UART2 [15] 0 = Service available, 1 = Masked 1


INT_TIMER4 [14] 0 = Service available, 1 = Masked 1


INT_TIMER3 [13] 0 = Service available, 1 = Masked 1


INT_TIMER2 [12] 0 = Service available, 1 = Masked 1


INT_TIMER1 [11] 0 = Service available, 1 = Masked 1


INT_TIMER0 [10] 0 = Service available, 1 = Masked 1


INT_WDT_AC97 [9] 0 = Service available, 1 = Masked 1


INT_TICK [8] 0 = Service available, 1 = Masked 1


nBATT_FLT [7] 0 = Service available, 1 = Masked 1


INT_CAM [6] 0 = Service available, 1 = Masked 1


EINT8_23 [5] 0 = Service available, 1 = Masked 1


EINT4_7 [4] 0 = Service available, 1 = Masked 1


EINT3 [3] 0 = Service available, 1 = Masked 1


EINT2 [2] 0 = Service available, 1 = Masked 1


EINT1 [1] 0 = Service available, 1 = Masked 1


EINT0 [0] 0 = Service available, 1 = Masked 1

我们发现INTMSK的第5,6位对应了EINT4_7, EINT8_23,20个外部中断,也就是所,这20个GPIO引脚只能触发这两个中断。


但是当中断到来时,我们如果判断是由哪一个GPIO引脚触发的呢?这个时候我们可以通过查询EINTMASK来判断中断源。


EINTMASK Bit Description


EINT23 [23] 0 = enable interrupt 1= masked


EINT22 [22] 0 = enable interrupt 1= masked


EINT21 [21] 0 = enable interrupt 1= masked


EINT20 [20] 0 = enable interrupt 1= masked


EINT19 [19] 0 = enable interrupt 1= masked


EINT18 [18] 0 = enable interrupt 1= masked


EINT17 [17] 0 = enable interrupt 1= masked


EINT16 [16] 0 = enable interrupt 1= masked


EINT15 [15] 0 = enable interrupt 1= masked


EINT14 [14] 0 = enable interrupt 1= masked


EINT13 [13] 0 = enable interrupt 1= masked


EINT12 [12] 0 = enable interrupt 1= masked


EINT11 [11] 0 = enable interrupt 1= masked


EINT10 [10] 0 = enable interrupt 1= masked


EINT9 [9] 0 = enable interrupt 1= masked


EINT8 [8] 0 = enable interrupt 1= masked


EINT7 [7] 0 = enable interrupt 1= masked


EINT6 [6] 0 = enable interrupt 1= masked


EINT5 [5] 0 = enable interrupt 1= masked


EINT4 [4] 0 = enable interrupt 1= masked


Reserved [3:0] Reserved


但是还有一个疑问,不是说60个中断源吗?除去24个外部中断源应该还有60-24 -(32-6)=10个内部中断源啊。他们在哪呢?

其实这里涉及到了子中断源的概念。


Sub Sources Descriptions Source


INT_AC97 AC97 interrupt             INT_WDT_AC97


INT_WDT Watchdoc interrupt       INT_WDT_AC97


INT_CAM_P P-port capture interrupt in camera interface        INT_CAM


INT_CAM_C C-port capture interrupt in camera interface       INT_CAM


INT_ADC_S ADC interrupt                                                      INT_ADC


INT_TC Touch screen interrupt (pen up/down)                    INT_ADC


INT_ERR2 UART2 error interrupt                                        INT_UART2


INT_TXD2 UART2 transmit interrupt                        INT_UART2


INT_RXD2 UART2 receive interrupt                          INT_UART2


INT_ERR1 UART1 error interrupt                              INT_UART1


INT_TXD1 UART1 transmit interrupt I                        NT_UART1


INT_RXD1 UART1 receive interrupt                           INT_UART1


INT_ERR0 UART0 error interrupt                              INT_UART0


INT_TXD0 UART0 transmit interrupt                         INT_UART0


INT_RXD0 UART0 receive interrupt                          NT_UART0



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107101.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • $.ajax()方法详解学习

    在工作总是会有很多地方用到异步请求,有时候用快捷方法 get/post 或者getJson不能满足自己的需求,所以必须使用底层的ajax来实现异步请求,每次写完下次在用到的时候就记不清楚了,就在这里记录一下,方便自己以后使用和其他人学习! 主要是参考整理JQuery的文档和一些好博客内容!记录一下平常工作最常用的!

    2022年2月25日
    45
  • 分布式事务-TCC(Hmily)[通俗易懂]

    分布式事务-TCC(Hmily)[通俗易懂]TCC是什么:TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel操作若

    2022年5月21日
    60
  • zookeeper的基本操作_奇门遁甲实战入门之五

    zookeeper的基本操作_奇门遁甲实战入门之五本原创入门教程,涵盖ZooKeeper核心内容,通过实例和大量图表,结合实战,帮助学习者理解和运用,任何问题欢迎留言。目录:zookeeper介绍与核心概念 安装和使用 ZooKeeper分布式锁实现 ZooKeeper框架Curator分布式锁实现及源代码分析 zookeeper开发实战(java客户端)本章是后续学习的基石,只有充分理解了分布式系统的概念和面临的问题,以及Z…

    2022年10月7日
    2
  • 宏基因组注释和可视化神器MEGAN入门

    宏基因组注释和可视化神器MEGAN入门文章目录 MEGAN 宏基因组功能和物种分类 MEGAN 功能简介原理简要示意图 MEGAN 特有文件格式 RMAMEGAN 下载 MEGAN 使用 MEGAN linux 版本安装 MEGAN 使用指南 Linux 提取注释内容 物种和功能 提取物种注释数据 提取功能 Win 版安装和使用 MEGAN 安装 Win 版使用指南 MEGAN 主界面介绍 MEGAN 输入介绍 MEGAN 分析进阶双样本比对 MEGAN 界面可视化 两样本 r

    2025年10月6日
    3
  • 收废品的大生意,我爱收获天使轮融资

    收废品的大生意,我爱收获天使轮融资

    2021年6月15日
    119
  • PotPlayer 无损截取视频片段

    PotPlayer 无损截取视频片段PotPlayer无损截取视频片段

    2022年7月12日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号