ARM9中断控制器

本文深入探讨了ARM处理器中的SRCPND、INTMOD、INTMASK、PRIORITY、INTPND和INTOFFSET寄存器的功能和作用,详细解释了它们在中断处理流程中的角色及相互之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共有几个寄存器
SRCPND: 共有32位每一位对应一个中断源,置1表示有中断请求,在中断服务程序里要对相应的位置0,具体32位中的每一位
  代表什么中断可以查看手册
INTMOD: 共有32位,用来决定32个中断源的模式(FIQ或IRQ),另外注意在FIQ模式下只能有一个中断被服务,因此INTMOD的
  32位中只能有一个为1
INTMASK:共32位,用来决定32个中断源中的某此是否被CPU服务,如果设置为1对屏蔽中断,设置为0则此中断被服务。
PRIORITY: 优先级判定,主中断源共有32个分为6组,如图

他们的优先级被PRIORITY的ARB_MODE和ARB_SEL控制,
  如果ARB_MODE为1,则ARB_SEL会自动的改变,规则如下:
  If REQ0 or REQ5 is serviced, ARB_SEL bits are not changed at all.
  If REQ1 is serviced, ARB_SEL bits are changed to 01b.
  If REQ2 is serviced, ARB_SEL bits are changed to 10b.
  If REQ3 is serviced, ARB_SEL bits are changed to 11b.
  If REQ4 is serviced, ARB_SEL bits are changed to 00b.
  注意REQ0始终为最高优先级,REQ5始终为最低优先级。
  但如果ARB_MODE设置为0,则ARB_SEL不会自动改变,但可以手动设置。
INTPND:决定32个中断的哪一个中断被CPU服务,此寄存器在“判优”逻辑的后面,它的32中只能有一位被置1,中断服务程序
  应该查询此位并将其清零。
INTOFFSET:指示INTPND中的哪一个中断源在被服务,感觉此寄存器没有什么用?
=============================================================================================================
下面为子中断部分:
SUBSRCPND:
SUBINTMASK:
子中断部分的处理逻辑还不太清晰,感觉不能准确定位到底是哪一个子中断发生了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值