Cortex-A7的GIC(通用中断控制器):中断处理状态机

42 篇文章 1 订阅
37 篇文章 0 订阅

0 资料

ARM® Generic Interrupt Controller Architecture version 2.0 Architecture Specification

1 中断处理状态机

1.1 中断处理状态说明及状态机转换图

在这里插入图片描述
在这里插入图片描述

说明:
Inactive:未激活,中断无效。中断非挂起或非激活。
Pending:挂起,中断有效。等待被处理的中断。
Active:激活,中断有效。正在被CPU处理的中断。
Active and pending:激活及挂起,中断有效。CPU正在处理当前中断且该中断源又发送中断信号过来。

1.2 Transition A1 or A2, add pending state(添加挂起状态)

在这里插入图片描述
添加挂起状态分为SGI和SPI/PPI两个处理路径:
(1)SGI
发生以下情况之一:
(1.1)软件写入GICD_SGIR (软中断生成寄存器)
(1.2)软件写入GICD_SPENDSGIRn(软中断设置挂起寄存器)
(2)SPI/PPI
发生以下情况之一:
(2.1)外围设备发出中断请求信号
(2.2)软件写入GICD_ISPENDRn(中断设置挂起寄存器)

1.2 Transition B1 or B2, remove pending state(删除挂起状态)

在这里插入图片描述
删除挂起状态分为SGI和SPI/PPI两个处理路径:
(1)SGI
软件写GICD_CPENDSGIRn(软中断清除挂起寄存器)
(2)SPI/PPI
发生以下情况之一:
(2.1)如果是电平触发中断,电平无效时清除挂起
(2.2)如果是边沿触发中断,软件写入GICD_ICPENDRn(中断清除挂起寄存器)

1.3 Transition C, pending to active(挂起到激活)

在这里插入图片描述
如果中断已启用,并且具有足够的优先级向处理器发出信号,则软件通过读取GICC_IAR(中断确认寄存器)实现挂起到激活的转换。

1.4 Transition D, pending to active and pending(挂起到激活及挂起)

在这里插入图片描述
挂起到激活及挂起状态分为SGI和SPI/PPI两个处理路径:
(1)SGI
发生以下情况之一:
(1.1)软中断生成及GICC_IAR(中断确认寄存器)均发生
(1.2)当两个或多个具有相同中断ID的未决SGI来自同一源处理器并以同一处理器为目标时。如果其中一个SGI遵循转换C,其他SGI则遵循转换D
(2)SPI/PPI
同时发生以下情况:
(2.1)中断使能
(2.2)软件读取GICC_IAR(中断确认寄存器),进入激活状态
(2.3)发送以下事件中的一个:
(2.3.1)电平触发中断的信号处于有效状态
(2.3.2)对于边缘触发的中断,是否发生这种转换取决于GICC_IAR的读取时间(中断确认寄存器)与中断检测时间。

1.5 Transition E1 or E2, remove active state(未激活状态)

在这里插入图片描述
通过写入GICC_EOIR(中断结束寄存器)或GICC_DIR(中断停用寄存器)进入未激活状态。这里需要注意:在GICv2 中只要对GICC_EOIR进行了有效写入就会自动将对应的中断停用(不再需要设置GICC_DIR中断停用寄存器)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值