ZYNQ的中断


参考:正点原子领航者ZYNQ之嵌入式SDK开发指南

一、概述

轮询是由软件同步获取设备的状态

CPU接收的中断有3种:私有外设中断(PPI)、软件生成的中断(SGI)、共享外设中断(SPI)。
在这里插入图片描述

通用中断控制器是一个用于集中管理从PS和PL发送到CPU的中断,启用、禁用、屏蔽和优化中断源的处理中心,将具有最高优先级的中断源分配给各个CPU之前集中所有中断源,并在CPU接口接收下一个中断时以编程的方式将他们发送到选定的CPU。
在这里插入图片描述

如果具有相同优先级的两个中断同时到达,具有最低中断ID会首先被发送。

二、私有外设中断

PPI 包括全局定时器、专用看门狗 定时器(AWDT)、专用定时器和来自 PL 的 FIQ/IRQ。

每个CPU核连接到了一个有五个外设中断的私有组上
来自PL的FIQ和IRQ在发送给中断控制器之前,会在传输给PS的时候反转,因此在PL内低电平有效,在PS-PL接口处高电平有效

三、软件生成中断

软件生成的中断通过 SGI 分配器分配给一个 或两个 CPU。

每一个CPU都可以通过软件生成的中断来中断自身、另一个CPU或同时中断两个CPU
向软件产生的中断寄存器写入SGI中断编号并指定目标CPU,就产生了一个SGI
通过读取中断确认寄存器或向中断挂起清除寄存器对应的位写入1,可清除中断。
所有的 SGI 都是边缘触发的,且其敏感性类型是固定的,不能修改。

四、共享外设中断

共享外设中断由 PS 和 PL 中的各种 I/O 和存储控制器生成。它们被路由到任一个或两个 CPU, 来自 PS 外设的 SPI 中断也可以路由到 PL。

对于电平敏感性中断,请求源必须为中断处理程序提供一种机制,以便在确认中断后清除中断
对于上升沿敏感的中断,请求源必须提供足够宽的脉冲以便GIC捕获,通常至少为2个CPU2x3x周期

五、GPIO的MIO中断

在这里插入图片描述

INT_MASK:只读,显示哪些位被屏蔽、启用
INT_EN:写入1,启用/解除中断信号的掩码;读取,返回一个不可预测的值
INT_DIS:写入1,屏蔽该中断信号;读取,返回一个不可预测的值
INT_STAT:写1到该寄存器的某个位,清除该位的中断状态;写0,该位被忽略
INT_TYPE:设置是边沿敏感还是电平敏感
INT_POLARITY:设置是低电平有效还是高电平有效
INT _ANY:如果INT_TYPE设置为边沿敏感,则该寄存器在上升沿和下降沿都会启用中断事件;电平敏感则忽略

  1. 如果检测到中断,中断检测逻辑将GPIO的INT_STAT状态设置为真
  2. 如果中断未被屏蔽,则中断传输到一个或电路中,将所有中断组合成一个输出到中断控制器
  3. 如果中断被禁止,INT_STAT状态将保持直到被清除,但它不会传输到中断控制器,除非稍后写入INT_EN以禁用屏蔽

清除:电平触发的中断,必须清零GPIO中断输入源边沿触发的,向INT_STAT寄存器写1来清除INT锁存器

INT_STAT=1且INT_MASK=0时,中断信号有效

六、SDK编程步骤

  1. 初始化中断控制器
  2. 设置中断异常处理
  3. 设置中断类型
  4. 连接中断服务函数
  5. 使能中断(GPIO中断、中断控制器对应的器件中断)
  6. 清除中断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hi小瑞同学

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值