历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2018年12月19日 | 关于s3c2410 中断异常处理

2018-12-19 来源:eefocus

s3c2410的中断异常处理模块总共由以下寄存器构成
SRCPND(SOURCE PENDING REGISTER)
INTMOD(INTERRUPT MODE REGISTER)
INTMSK(INTERRUPT MASK REGISTER)
PRIORITY( PRIORITY REGISTER)
INTPND(INTERRUPT PENDING REGISTER)
INTOFFSET(INTERRUPT OFFSET REGISTER)
SUBSRCPND (INTERRUPT SUB SOURCE PENDING)
INTSUBMSK  (INTERRUPT SUB MASK REGISTER)

下面我将讲解每个寄存器在一个中断处理流程中所扮演的角色SRCPND/ SUBSRCPND这两个寄存器在功能上是相同的,它们是中断源引脚寄存器,在一个中断异常处理流程中,中断信号传进中断异常处理模块后首先遇到的就是SRCPND/ SUBSRCPND,这两个寄存器的作用是用于标示出哪个中断请求被触发。SRCPND的有效位为32,SUBSRCPND 的有效位为11,它们中的每一位分别代表一个中断源。SRCPND为主中断源引脚寄存器,SUBSRCPND为副中断源引脚寄存器。


每个位的初始值皆为0。假设现在系统触发了TIMER0中断,则第10bit将被置1,代表TIMER0中断被触发,该中断请求即将被处理(若该中断没有被屏蔽的话)。

SUBSRCPND情况与SRCPND相同,这里就不多讲了。

INTMOD寄存器有效位为32位,每一位与SRCPND中各位相对应,它的作用是指定该位相应的中断源处理模式(IRQ还是FIQ)。若某位为0,则该位相对应的中断按IRQ模式处理,为1则以FIQ模式进行处理,该寄存器初始化值为0x00000000,即所有中断皆以IRQ模式进行处理。(详细请参考s3c2410操作手册)。

INTMSK/ INTSUBMSK 寄存器为中断屏蔽寄存器 ,INTMSK为主中断屏蔽寄存器,INTSUBMSK为副中断屏蔽寄存器。INTMSK有效位为32,INTSUBMSK有效位为11,这两个寄存器各个位与SRCPND和SUBSRCPND分别对应。它们的作用是决定该位相应的中断请求是否被处理。若某位被设置为1,则该位相对应的中断产生后将被忽略(CPU不处理该中断请求),设置为0则对其进行处理。这两个寄存器初始化后的值是0xFFFFFFFF和0x7FF,既默认情况下所有的中断都是被屏蔽的。

到目前为止我们总共讲解了SRCPND,INTMOD,INTMSK,SUBSRCPND,INTSUBMSK INTPND 寄存器可能是整个中断处理过程中我们要特别注意的一个寄存器了,他的操作比较特别,怎么特别?请听我慢慢道来


正如你所见的,INTPND 寄存器与SRCPND长得一模一样,但他们在中断异常处理中却扮演着不同的角色,如果说SRCPND是中断信号进入中断处理模块后所经过的第一个场所的话,那么INTPND 则是中断信号在中断处理模块里经历的最后一个寄存器。它的每个位对应一个中断请求,若该位被置1,则表示相应的中断请求被触发,描述到这里你可能会发现它不仅和SRCPND长得一模一样,就连功能都一样,其实不然,他们在功能上有着重大的区别。SRCPND是中断源引脚寄存器,某个位被置1表示相应的中断被触发,但我们知道在同一时刻内系统可以触发若干个中断,只要中断被触发了,SRCPND的相应位便被置1,也就是说SRCPND 在同一时刻可以有若干位同时被置1,然而INTPND则不同,他在某一时刻只能有1个位被置1,INTPND 某个位被置1(该位对应的中断在所有已触发的中断里具有最高优先级且该中断没有被屏蔽),则表示CPU即将或已经在对该位相应的中断进行处理。于是我们可以有一个总结:SRCPND说明了有什么中断被触发了,INTPND说明了CPU即将或已经在对某一个中断进行处理。


特别注意:每当某一个中断被处理完之后,我们必须手动地把SRCPND/SUBSRCPND , INTPND三个寄存器中与该中断相应的位由1设置为0,刚才我说INTPND的操作很特别,它的特别之处就在于对当我们要把该寄存器中某个值为1的位设置为0时,我们不是往该位置0,而是往该位置1。假设SRCPND=0x00000003,INTPND=0x00000001,该值说明当前0号中断和1号中断被触发,但当前正在被处理的是0号中断,处理完毕后我们应该这样设置INTPND和SRCPND:


SRCPND=0x00000002          //位0被置为0
INTPND =0x00000001          //位0被置为0(方法是往该位写入1)
INTOFFSET寄存器的功能则很简单,它的作用只是用于表明哪个中断正在被处理。


下面我用INT_TIMER0, INT_TIMER2和INT_UART0三个中断完整地介绍一次中断异常处理。首先我们得做几个假设:



假设1:这三个中断的屏蔽被取消。

假设2:PRIORITY寄存器中ARB_MODE2,ARB_MODE5皆为0,既不进行优先级的自动旋转排序,任何时候ARBITER2,ARBITER5控制的中断组优先级次序分别为0-1-2-3-4-5和1-2-3-4。

假设3:这三个中断皆为IRQ类型。

假设4:这三个中断同时被触发。

INT_TIMER0, INT_TIMER2和INT_UART0三个中断被同时触发,此时三个中断信号流向SRCPND寄存器,使该寄存器中的第10位,12位,28位被置为1,中断信号继续向前流经INTMASK 寄存器,这三个中断都没有被屏蔽,于是信号进一步流经INTMODE寄存器,这三个中断皆为IRQ类型,故中断信号继续向前流向PRIORITY寄存器,经过优先级判断,INT_TIMER0中断信号使INTPND 寄存器的第10位置1(INT_TIMER0优先级最高),此时INTOFFSET 寄存器的值为10,CPU转向相应的中断服务例程进行处理。处理完毕后,我们的程序将INTPND和SRCPND的第10置为0,至此INT_TIMER0中断处理完毕。此时SRCPND 的第12位,28位仍为1(这两个中断请求未被处理),故他们会继续被CPU已刚才描述的方式进行处理。


推荐阅读

史海拾趣

Electronic Concepts Inc公司的发展小趣事

随着市场的竞争加剧,ECI意识到只有不断创新才能在行业中立足。在总经理张女士的领导下,公司投入大量资源进行研发,成功推出了一系列具有竞争力的新产品。其中,一款集成了先进算法的智能传感器,因其高精度和低功耗特性,在市场上大受欢迎。这一创新不仅提升了ECI的品牌形象,也为公司带来了丰厚的利润。

Frolyt Condensers & Elements GmbH公司的发展小趣事

面对电子行业日益增长的定制化需求,Frolyt Condensers & Elements GmbH积极调整策略,提供从设计咨询到产品生产的全方位定制化服务。公司建立了一支专业的技术团队,能够根据客户的具体需求,快速响应并设计出符合要求的电容器产品。这种高度定制化的服务模式赢得了众多客户的信赖和好评,使得Frolyt在竞争激烈的市场中脱颖而出。

Advanced Electronic Packaging公司的发展小趣事

在追求经济效益的同时,Advanced Electronic Packaging公司始终关注企业社会责任和可持续发展。公司积极采用环保材料和生产工艺,减少生产过程中的能源消耗和环境污染。此外,公司还积极参与社会公益活动,为当地社区提供就业机会和培训支持。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

这些故事只是Advanced Electronic Packaging公司发展过程中的一部分,它们共同展现了公司在电子行业中的成长轨迹和取得的成就。未来,随着科技的不断进步和市场需求的不断变化,相信Advanced Electronic Packaging公司将继续保持创新精神,为电子行业的发展贡献更多力量。

Global Communications公司的发展小趣事
温度传感器的输出与温度之间的线性关系也很重要,因为这直接影响到补偿电路的准确性和稳定性。
Elma Electronic Inc公司的发展小趣事

Elma Electronic Inc公司在电子封装市场拥有显著的领导地位。从VME/VME64x到Rugged COTS封装,该公司凭借其创新的设计和制造技术,成功地在多个细分市场取得了领先地位。这种领导地位不仅体现在产品的多样性上,更在于其为客户提供的高质量、可靠性和性能优异的产品。

Alorium Technology公司的发展小趣事

Elma对产品质量的追求是显而易见的。通过对所有员工的培训以及遵循认证的ISO标准的系统程序,Elma达到了行业领先的质量水平。这种对质量的承诺不仅体现在产品制造过程中,更贯穿于整个公司的运营和管理中。

问答坊 | AI 解惑

创意十足的[蜡烛]是不是你说了算

USB 精油蜡烛 蜡烛是营造气氛的好东西,但是乱滴的蜡油和引发火灾的可能性,让科科们敬而远之。没关系,现在有兼顾安全与便利的产品出现啦,这款 USB 烛光灯座是浪漫的好选择,采用 USB 或两颗3号电池供电,LED 模拟的烛火相当逼真,更妙的是要熄 ...…

查看全部问答>

【FPGA技术问题】关于区域约束(Area Constraints)

  nArea Constraints是Floorplanner最容易、最有效的应用 n大型设计首选布局工具- Floorplanner p在综合中,为了防止单独的component名称被改变,选择“Keep Hierarchy”参数选项 p设计的每个组成部分可以被约束限定到某一个区域 p ...…

查看全部问答>

求手机X01HT厂商开发包

我们打算在X01HT这款手机上进行软件开发,有谁知道哪里有厂商开发包提供(收费的也可以), 可以通知我,非常感谢!QQ:176609958   邮箱:mchsh1985@126.com …

查看全部问答>

s3c2410的一个地址映射问题!

在看一个步进电机的驱动程序,有个问题: 步进电机的物理地址是0x28000006,对应的虚拟地址是0xd3000006,不懂的是这个是怎么计算出来的? 32位有4G的虚拟地址,我只知道是怎么进行内存映射的,但是对于GPIO口怎么映射的,不怎么懂! 请指教,谢谢!…

查看全部问答>

免费风暴来袭 - 快来申请 MSP430 LaunchPad 开始您的设计之旅吧!

德仪社区搞的活动,今天开始了哦 http://www.deyisupport.com/question_answer/f/55/t/6227.aspx…

查看全部问答>

請問F28335的DMA可以接收UART嗎?

我用的是板子F28335 ezDSP 3組SCI都被使用了 因為工作環境震動很大  所有的電路板都會被震動到 板子已經固定不知道怎麼再固定了... 因為GPS的資料一直發生 收不到的情形 (震動很大的時候資料就斷了) 後來實驗結果發現 SCIC RX 的PI ...…

查看全部问答>

世界50强招聘汽车动力部件研发项目工程师人才

职位:项目工程师 地点:上海 职责:负责的项目为汽车动力总成零部件,电机、逆变器等;协助项目经理管理项目进程(公司设置的项目经理主要是面向客户的,所以项目工程师要在研发的技术等问题上协助项目经理)。 要求:1、有motor、inventor等类 ...…

查看全部问答>

拿到开发板后第一周的心得,提交

很开心能拿到Helper2416的开发板,从拿到开发板初,就准备全身心的投入进去进行相应的学习,要学习就要有个学习的方法不是,咱是摸着石头过河。OK,先进行资料的整理了,先从BBS的贴子入手吧,https://bbs.eeworld.com.cn/thread-441984-1-1.html从 ...…

查看全部问答>

发帖是回复可见好,还是完全公开好?

本人每天都会花点时间逛各种论坛,看帖子,学技术。本人比较低调,基本上不喜欢发帖子,最近在这个电子工程师论坛逛了几次,看了很多帖子,发现,这里面的大部分人都有一个通病,发帖子必须回复能看。本是一个技术交流的论坛,被你们这帮人搞得都是 ...…

查看全部问答>