Cortex-A7的GIC(全局中断控制器)使用方法(2):GIC寄存器介绍

0 参考资料

STM32MP13xx参考手册.pdf(RM0475)
ARM Generic Interrupt Controller Architecture version 2.0 - Architecture Specification.pdf

1 GIC(全局中断控制器)介绍

有关Cortex-A7的GIC(全局中断控制器)的介绍文档为ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf,相关内容有214页之多,本例仅介绍开发过程中必须使用到的几个寄存器。

1.1 中断优先级掩码寄存器GICC_PMR

中断优先级掩码寄存器GICC_PMR作为中断优先级筛选器,只有优先级高于此寄存器值的中断才会向处理器发出中断信号(可以理解为这个寄存器用来设置支持的中断优先级数,例如寄存器值为31,优先级大于31的中断(优先级为0-30)都会被响应)。寄存器描述如下:
在这里插入图片描述
Cortex-A7支持最多256个中断优先级,通常芯片厂商不会使用这么多的优先级。以STM32MP13xx为例,其只使用到了5位,也就是支持最多31个中断优先级:
在这里插入图片描述
这是GIC和NVIC不一样的地方,NVIC通常固定优先级设置为为4bit,也就是支持最多16个中断优先级。

1.2 中断抢占优先级和响应优先级配置寄存器GICC_BPR

GICC_BPR寄存器可以用来配置中断抢占优先级和响应优先级各自所占的位数。寄存器描述如下:
在这里插入图片描述
只有低三位有效,设置值对应的中断抢占优先级和响应优先级分配情况如下:
在这里插入图片描述
例如我们需要3位做抢占优先级,2位做响应优先级,只需要将GICC_BPR寄存器值设置为4即可。
以STM32MP13xx为例,其GICC_BPR寄存器也只使用最后3位:
在这里插入图片描述

1.3 中断优先级配置寄存器GICD_IPRIORITYRn

中断优先级配置寄存器用于设置中断对应的中断优先级,寄存器描述如下:
在这里插入图片描述
以STM32MP13xx为例,其GICD_IPRIORITYRn寄存器也只使用了其中5位:
在这里插入图片描述

1.4 中断使能寄存器GICD_ISENABLERn

中断使能寄存器决定是否响应中断,该寄存器写1将使能中断,写0无动作。读取该寄存器值为1表示中断使能,为0表示中断失能。
在这里插入图片描述
以STM32MP13xx为例,其GICD_ISENABLERn寄存器描述如下:
在这里插入图片描述

1.5 中断失能寄存器GICD_ICENABLERn

中断失能寄存器写1将失能中断,写0无动作。读取该寄存器值为1表示中断使能,为0表示中断失能。
在这里插入图片描述
以STM32MP13xx为例,其GICD_ICENABLERn寄存器描述如下:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NW嵌入式开发

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

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

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

打赏作者

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

抵扣说明:

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

余额充值