ZYNQ 系列芯片中断机制详解:类型、处理过程与中断处理函数

TL;DR

本文围绕 ZYNQ 系列芯片的中断机制展开,先梳理中断类型(SGI、PPI、SPI 等),再说明从中断触发到 CPU 响应的完整处理过程,最后给出中断处理函数的编写要点与常见注意事项,帮助读者快速建立 ZYNQ 中断开发的整体认知。

一、ZYNQ 系列芯片中的中断类型

  • 中断来源分类:介绍 GIC 中断控制器架构下 SGI(软件生成中断)、PPI(私有外设中断)、SPI(共享外设中断)三类中断的定义与典型使用场景。
  • 中断号与优先级:说明各类中断的编号范围、优先级配置方式,以及中断触发类型(电平触发、边沿触发)的选择原则。
  • 中断分配与路由:讲解中断如何分配到 CPU0/CPU1,以及 PL 端中断通过 SPI 接入 PS 的配置方法。

二、中断处理过程

  • 中断触发与响应流程:从外设产生中断信号、GIC 仲裁、CPU 响应异常向量,到跳转中断服务程序的完整链路。
  • 中断使能与屏蔽:说明 GIC 分发器与 CPU 接口的使能层级,以及中断挂起、激活、结束(EOI)状态机的流转。
  • 中断嵌套与优先级抢占:分析高优先级中断抢占低优先级中断的条件与配置方式。

中断触发与响应流程详解

下图展示了 ZYNQ 中一次外设中断从产生到结束的完整链路,涵盖 GIC 分发器仲裁、CPU 接口转发、异常向量跳转、中断服务程序执行以及 EOI 结束等关键阶段。

flowchart TD A[外设产生中断信号] --> B[GIC 分发器 Distributor 接收并仲裁] B --> C{优先级是否高于当前运行中断} C -- 否 --> D[保持 Pending 挂起状态] D --> B C -- 是 --> E[转发至目标 CPU 接口 CPU Interface] E --> F[CPU 接口置位 IRQ 信号] F --> G[CPU 响应 IRQ 异常] G --> H[跳转异常向量表 IRQ 入口] H --> I[保存现场并调用中断服务程序 ISR] I --> J[读取 IAR 获取中断号并处理外设] J --> K[清除外设中断标志] K --> L[写 EOI 寄存器结束中断] L --> M[恢复现场返回被中断代码]

各阶段说明如下:

  1. 外设产生中断信号:外设(如 GPIO、定时器、PL 端 IP)在满足触发条件时拉高中断线,电平触发或边沿触发方式由外设配置决定,信号随后进入 GIC 的 SPI 或 PPI 通道。
  2. GIC 分发器仲裁:分发器为每个中断维护 Pending、Active、Priority 等状态,收到中断后将其置为 Pending,并与当前正在处理的中断优先级比较,决定是否向 CPU 接口转发。
  3. CPU 接口转发:分发器选中优先级最高的 Pending 中断后,通过 CPU 接口将其标记为 Active,并置位 IRQ 信号线,通知目标 CPU 核。
  4. CPU 响应异常向量:CPU 在当前指令边界检测到 IRQ,保存关键寄存器现场,跳转到异常向量表中的 IRQ 入口地址。
  5. 跳转中断服务程序:异常入口根据中断号查表,调用对应的中断服务程序(ISR),ISR 中通常先读取 IAR 寄存器确认中断号,再执行具体外设处理逻辑。
  6. 清除标志与 EOI 结束:处理完成后需先清除外设侧的中断标志,再向 GIC 写 EOI 寄存器,使该中断从 Active 状态退出,从而允许后续同级或低优先级中断再次被响应。

三、中断处理函数

  • 中断服务函数结构:给出基于 Xilinx 标准库的中断注册与处理函数框架,包括中断连接、使能和异常处理入口。
  • 处理函数编写要点:强调处理函数应尽量简短、避免阻塞操作,明确中断清除与 EOI 的调用时机。
  • 常见问题排查:列举中断不触发、重复触发、中断丢失等典型问题的排查思路。

四、总结

回顾 ZYNQ 中断类型、处理流程与处理函数三部分的核心要点,总结中断开发中的关键配置项与调试建议。

参考资料

  • 占位 Xilinx UG585《Zynq-7000 SoC Technical Reference Manual》中断章节
  • 占位 ARM GIC 架构规范文档
  • 占位 Xilinx 官方 Standalone BSP 中断驱动 API 说明
  • 占位 相关博客与实战案例链接
相关推荐
LCG米2 小时前
STM32 定时器主从模式输出精确脉冲数实测:TRGO 触发链拆解、多发一脉冲根因与干净停止时序落地
stm32·单片机·嵌入式硬件·嵌入式
青梅味猪大肠2 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
ChaseVLSI2 小时前
FPGA与ASIC的区别详解:内部结构、开发成本与适用场景,项目选型到底该选哪个
嵌入式硬件·fpga开发·硬件架构·硬件工程
东莞市壹星自动化设备有限公司3 小时前
透明圆瓶内部特征怎样定位:折射追踪与近远相位分支
嵌入式硬件·自动化·需求分析·几何学·骨骼绑定
Dev_XH3 小时前
【成品设计】基于物联网的配电箱智能防护系统设计
stm32·单片机·嵌入式硬件·物联网
Dev_XH5 小时前
【成品设计】基于单片机的工厂设备能耗监控与优化系统
stm32·单片机·嵌入式硬件·物联网
不脱发的程序猿5 小时前
STM32制作单手鼠标键盘
stm32·嵌入式硬件·计算机外设·usb·qmk
路上有只喵21 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇 11
单片机·嵌入式硬件
不昀1 天前
开关电源电流互感器怎么选:匝比、采样电阻与复位的计算笔记
单片机·嵌入式硬件·电子元器件