一、ZYNQ中断框图

PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0。从下面的表格中可以看到中断向量的具体值。PL到PS部分一共有20个中断可以使用。其中4个是快速中断。剩余的16个是本章中涉及了,可以任意定义。如下表所示。

二、ZYNQ中断分类

1.软件中断(SGI)

  ZYNQ 2 个 CPU 都具备各自 16 个软件中断。通过 ICDSGIR 寄存器写入 SGI 中断号,以及指定目标 CPU 来产生一个软件中断。通过 CPU 私有总线实现写操作。CPU 能中断自己或者其他 CPU,或者所有的 CPU。通过读 ICCIAR(Interrupt Clear Pending)寄存器相应的比特位写1,可以清楚中断。所有的 SGI 为边沿触发,用于 SGI 的敏感性是固定的,不能修改。 ICDICFR0 寄存器是只读寄存器。
2.私有外设中断(PPI)
  每个 CPU 连接一个私有的5个共享的外设中断,所有的中断敏感类型是固定的,不能修改。这里有 2 个 PL 到 CPU 的快速中断 nFIQ,私有中断包括 global timer、private timer 、watch dog 等。将来自 PL 的快速中断信号 FIQ 和中断信号 IRQ 翻转,然后送到中断控制器中。因此尽管在 ICDICFRI 寄存器内反映他们是活动低敏感信号,但是在 PS-PL接口为高电平活动。
3.共享外设中断(SPI)
   共享中断就是 PL 的中断可以发送给 PS 处理。有 16 个 PL 的中断,它们可以设置为高电平或者低电平触发。中断控制器用于管理中断的优先级和接收用于 CPU 的这些中断。默认情况下,所有共享外设中断的复位是一个活动高电平。然而软件使用 ICDICFR2 和 ICDICFR5 寄存器将中断32、33和92编程为上升沿敏感。
 
PS:私有外设中断和共享外设中断都含有PL侧引入的中断,而软件中断是没有的。
 
三、ZYNQ中断步骤
1.文字描述
第一步:初始化 cpu 的异常处理功能
第二步:初始化中断控制器
第三步:向 CPU 注册异常处理回调函数;
第四步:将中断控制器中的对应中断 ID 的中断与中断控制器相连接
第五步:设置 GPIO 的中断类型,比如高电平中断、低电平中断、上升沿中断、下降沿中断等。
第六步:设置 GPIO 中断回调函数,这里设置的回调函数是用于用户使用的。
第七步:使能 GPIO 的对应 PIN 的中断
第八步:使能中断控制器
第九步:使能异常处理功能
2.框图描述
 
 
四、操作注意事项
1.配置ZYNQ内核时需要将 Interrupts --- Fabric Interrupts 勾选上
2.因为是 PL 端,往往涉及引脚,所以需要添加约束文件,并且生成 bit 流文件,以此加载 SDK 开发环境

3.可以在 system.mss --- gpiops --- Important Examples --- xgpiops intr_example 中得到典型的 GPIO 中断的代码。 

五、补充

ARM体系架构的处理器中通常将低地址32字节作为中断向量表,当中断产生时会执行以下操作:

  1. 保存处理器当前状态,设置中断屏蔽位和各条件标志位
  2. 设置当前程序状态寄存器CPSR中相应位
  3. 将lr_mode寄存器设置成返回地址
  4. 跳转到中断向量地址执行,从而跳转到相应的中断程序中执行
  5. 执行中断处理函数内容
  6. 恢复被屏蔽的中断屏蔽位
  7. 返回到被中断指令的下一条指令处继续执行

zynq中低32字节作为中断向量表,每个中断占据4字节,这4字节通常存储一个跳转指令,从而跳转到中断解析程序中。这低32字节中断向量表如:

参考资料:

    [1]V3学院FPGA教程

    [2]何宾, 张艳辉. Xilinx Zynq-7000嵌入式系统设计与实现[M]. 电子工业出版社, 2016.

ZYNQ笔记(4):PL触发中断的更多相关文章

  1. ZYNQ笔记(6):普通自定义IP封装实现PL精准定时中断

    软件的定时中断很难控制精准触发沿的位置,可以通过 PL-PS 的中断完成精准的定时中断.PL 的中断通过 Verilog 代码产生,这样紧密结合 PS-PL 的处理,发挥各自的优势. 一.PL 侧定时 ...

  2. ZYNQ笔记(7):AXI从口自定义IP封装

    使用 AXI_Lite 从口实现寄存器列表的读写,并且自己封装为一个自定义 IP,以便以后使用.本次记录的是 M_AXI_GP0 接口,此接口是 ARM 作为主机,FPGA 作为从机,配置 FPGA ...

  3. ZYNQ笔记(3):GPIO的使用(MIO、EMIO)——led灯

    一.GPIO原理 1.GPIO介绍 程序员通过软件代码可以独立和动态地对每个 GPIO 进行控制,使其作为输入.输出或中断. (1)通过一个加载指令,软件可以读取一个 GPIO 组内所有 GPIO 的 ...

  4. DSP EPWM学习笔记1 - EPWM定时中断

    DSP EPWM学习笔记1 - EPWM定时中断 彭会锋 EPWM模块组成 EPWM有7个子模块组成:时间基准 TB.比较功能 CC.动作限定 AQ.死区产生 DB.斩波控制 PC.故障捕获 TZ.事 ...

  5. Arduino101学习笔记(九)—— 中断函数

    1.设置中断函数 //***************************************************************************************** ...

  6. [ZYNQ-7]PS处理PL外部中断的简单实例的剖析 (参考米联miz702n)

    Zynq的ARM通过GIC中断控制器来接收核仲裁所有的中断.由于中断向量表只有4Bytes大小,仅仅正好存放一条跳转语句,因此当产生一个外部中断时,中断处理的大致过程:PC内容保存到LR_IRQ用于中 ...

  7. [原创]基于Zynq PS与PL之间寄存器映射 Standalone & Linux 例程

    基于Zynq PS与PL之间寄存器映射 Standalone & Linux 例程 待添加完善中

  8. STM32F030 定时器多次溢出才触发中断的问题

    前言 最近在调试项目过程中,用了 STM32F030 的定时器 16 作为系统时钟,1ms 触发一次中断,过程中遇到一些值得记录的问题. 记录 STM32F030 中定时器 16 的初始化配置如下 v ...

  9. stm32F042 (二) 按键触发中断

    已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断.因为nucleo开发 ...

随机推荐

  1. WEB图片水印实现

    很多大公司内网都有页面不可见水印,一旦图片截图发送给外部后,可以根据图片不可见水印进行溯源,查出发送人的信息. 原图:(就是下面白色的图片) PS 打开这个图片,在这个图片上新建图层,填充黑色,混合模 ...

  2. echarts 折线图百分比 tooltip 实例 两种方法

    方法一 在知道有几个类型时:下面有五个类型 tooltip : { show : true, trigger: 'axis', formatter: '{b0}<br/>{a0}: {c0 ...

  3. sqli-libs笔记Page-1(Basic Challenges)

    0X00:前言 sqli-libs是一个学习SQL注入的开源平台,共有75中不同类型的注入.源码可到github上搜索sqli-libs找到 0X01:Page-1基础挑战 0X02:每一关的payl ...

  4. 关于如何修改一张表中所有行与选定字段的同sql多行语句的添加方法

    利用Excel以及word文档进行操作 将表的字段以及数据全部放入Excel表中并保存. 在word表中将写好的sql语句放入文档,利用邮件--选择收件人--使用现有列表--(选择之前做好的Excel ...

  5. k8s dashboard 解决secret自建证书导致浏览器访问限制

    解决参考: https://www.jianshu.com/p/c6d560d12d50   熟悉dashboard yaml文件所创建的资源 wget https://raw.githubuserc ...

  6. MySQL视图及索引

    视图 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据. 视图的作用.优点: 限制对数据的访问 让复杂查询变得简单 提供数据的独立性 可以完成对相同数据的不同显示 //创建.修 ...

  7. django中运行定时任务脚本

    需要使用到django_apscheduler模块,因此先安装: pip install django-apscheduler 然后在工程的settings.py文件中的INSTALLED_APPS模 ...

  8. Graylog-Sidecar

    收集linux日志-filebeat 安装sidecar 下载graylog-sidecar-1.0.2-1.x86_64.rpm rpm -ivh graylog-sidecar-1.0.2-1.x ...

  9. nginx 其他配置语法

    1.nginx 缓冲区配置 2.跳转重定向 3.头信息 4.超时 location / { proxy_pass http://127.0.0.1:8080;(代理跳转url) proxy_redir ...

  10. 【librosa】及其在音频处理中的应用

    [持续更新] display specshow(data[, x_coords, y_coords, x_axis, …]) Display a spectrogram/chromagram/cqt/ ...