xilinx zynq 7010/7020 中断/中断向量/GIC向量/GPIO中断

本文详细介绍了ARM处理器中的GIC(Generic Interrupt Controller)中断管理系统,包括中断请求源、中断分发、中断处理流程以及中断向量表的运作。GIC作为一个集中式中断请求中心,管理中断请求的分配、优先级和处理。在中断处理过程中,中断信号从GPIO等外设经过GIC分配给CPU,中断处理程序在IRQHandler中判断并处理具体中断事件。在Zynq A9处理器中,中断事件通过GIC而不是直接报给CPU,中断向量表分为CPU硬件跳转的中断向量表和GIC的中断向量表。文章还展示了中断配置的代码示例,包括中断连接、中断类型设置、中断启用等步骤。

在这里插入图片描述

上图所示GIC左边的称为中断请求源,它们产生中断请求。所有的中断请求都可以发送到GIC通用中断控制器,所以它是一个集中式的中断请求中心。GIC根据请求源的属性(enables, disables, masks, and prioritizes)把请求派发给相应的中断执行者进行中断处理,一般指CPU。PL端也可以进行中断处理,这是个特例。
上图中 / 斜杠 的数字表示有多少路信号,GIC通过具体是哪条线来判断是哪个请求源产生了中断请求。

中断分发器将所有中断源集中起来,然后将优先级最高的中断源分配给各个cpu。GIC确保针对多个CPU的中断一次只能被一个CPU执行。所有中断源都由唯一的中断ID号标识。所有中断源都有自己可配置的优先级和目标cpu列表

下图是GIC中断控制器更加详细的中断源请求分配图,可以看到不同的中断类型的请求源如何进行分配的。
在这里插入图片描述

PL部分的中断请求,可以通过GIC也可以直通CPU,这部分如下图所示,通过寄存器 mpcore.ICCICR 选择。
在这里插入图片描述
共享的请求中断源,也就是说中断源发送中断后GIC可以发送给CPU0或者CPU1.
在这里插入图片描述
在这里插入图片描述
中断敏感信息说的是中断有谁处理,发送给谁,和 触发方式

在这里插入图片描述
在这里插入图片描述
所有中断请求(PPI, SGI和SPI)都被分配了一个唯一的ID号。控制器使用ID号进行仲裁。中断分发器保存每个中断的挂起中断列表
CPU,然后选择最高优先级的中断,然后将其发送到CPU接口。通过选择最低的ID来解决同等优先级的中断。
优先级逻辑在物理上是重复的,以便为每个CPU同时选择最高优先级的中断。中断分发器保存中断、处理器和激活信息的中心列表,并负责触发软件中断到cpu。

GPIO 中断
在这里插入图片描述
上图红色所示,MIO or EMIO的输入Input 信号是中断的触发信号。
在这里插入图片描述
简单可以看成5个部分
1.中断信号输入,输入来源GPIO 输入,GPIO引脚的电平状态为中断的输入信号
2.中断信号逻辑,解决的是什么样的信号满足中断条件,条件是我们通过设置三个寄存器来完成的,电平,边沿,极性。
3.中断状态,当输入的信号瞒住中断判断逻辑那么中断发生,这个事件通过一个中断状态来记录。
4.中断上报使能,中断状态是否要进行上报,在ZYNQ A9处理器架构下中断事件是先报给GIC。
5.中断上报线路,通过一条IRQ #25 上报给GIC。注意这里不是直接发给CPU。

需要注意的部分
中断事件报给的是GIC,GIC用来决定这个中断事件发给谁,这种架构在MCU中并不常见。
在Cortex M系列处理器中,中断事件经过NVIC直接报给CPU。然而Arm A9处理器并不是这样

ps7_cortexa9_0\libsrc\standalone_v6_8\src下asm_vectors.s
文件的目录会有少许不一样。

#include "xil_errata.h"
#include "bspconfig.h"

.org 0
.text

.globl _vector_table

.section 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值