ZYNQ PL端向PS端发出中断
在之前的项目中知道zynq的PS端可以通过AXI总线向PL端的IP核写入数据,而PL端也可以通过AXI总线去访问PS端的DDR等设备。然而当PL端的IP在接收到PS端的指令完成操作后,该如何告知PS端我已经完成操作了呢?有一种方式是PS端使用AXI总线轮询,不停地访问AXI总线直到出现预期的标志位。另外一种方式则是使用PL端到PS端的中断,在完成操作后发出一个中断通知PS端可以进行后续的处理了。
#### PL端向PS端发出触发的方式
在zynq上有16个PL到PS端的常规中断接到双核心的PS端,每个CPU又有独立的1个常规中断和快速中断。在这里我们先介绍使用F2P的这一组中断。
从PL端发出这个中断的方式非常简单,就是从模块上给出一个信号然后连接到zynq PS的F2P端口上。当需要触发这个中断时将模块的这个信号由低拉高即可。
PS端F2P支持高电平触发或者是上升沿触发,可以根据实际的需求进行配置。
#### PS端的中断处理
```c
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "xscugic.h"
#include "xparameters.h"
#define PL_DDR_BASE_ADDR 0x10000000
#define INT_ID 61U
#define XIL_EXCEPTION_ID_INIT 5U
XScuGic ScuGic;
void irq_handler(void* data) {
u32 id;
id = XScuGic_ReadReg(XPAR_SCUGIC_CPU_BASEADDR, XSCUGIC_INT_ACK_OFFSET);
id = id & XSCUGIC_ACK_INTID_MASK;
xil_printf("irq occur, id: %d\r\n", id);
XScuGic_WriteReg(XPAR_SCUGIC_CPU_BASEADDR, XSCUGIC_EOI_OFFSET, id);
}
int pl_irq_init() {
XScuGic_Config* pScuGicCfg;
pScuGicCfg = XScuGic_LookupConfig(XPAR_PS7_SCUGIC_0_DEVICE_ID);
XScuGic_CfgInitialize(&ScuGic, pScuGicCfg, pScuGicCfg->CpuBaseAddress);
XScuGic_Connect(&ScuGic, INT_ID, (Xil_ExceptionHandler)irq_handler, NULL);
XScuGic_SetPriorityTriggerType(&ScuGic, INT_ID, 0xA0, 0x03);
XScuGic_Enable(&ScuGic, INT_ID);
Xil_ExceptionInit();
Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INIT, (Xil_ExceptionHandler)irq_handler, &ScuGic);
Xil_ExceptionEnable();
}
int main()
{
init_platform();
pl_irq_init();
print("read ddr app\n\r");
while(1);
cleanup_platform();
return 0;
}
```
#### 参考链接
https://adaptivesupport.amd.com/s/question/0D52E00006iHoxcSAC/irqf2p-width-mismatch?language=zh_CN
https://adaptivesupport.amd.com/s/article/70347?language=en_US
ZYNQ PL端向PS端发出中断的更多相关文章
- 利用ZYNQ SOC快速打开算法验证通路(3)——PS端DMA缓存数据到PS端DDR
上篇该系列博文中讲述W5500接收到上位机传输的数据,此后需要将数据缓存起来.当数据量较大或者其他数据带宽较高的情况下,片上缓存(OCM)已无法满足需求,这时需要将大量数据保存在外挂的DDR SDRA ...
- ZYNQ笔记(2):PS端——Hello World !
PL端使用过后,来到了ZYNQ核心的部分:PS端,现在用Vivado软件对ZYNQ-7000开发板的PS端进行第一个程序设计:Hello World. 一.新建Vivado工程 1.打开Vivado, ...
- ZYNQ 中PS端GPIO EMIO使用
ZYNQ 中PS端GPIO EMIO使用 在使用ZYNQ进行开发设计时,往往需要对一些GPIO引脚进行配置,传统的配置方法通常在PL端进行管脚约束之后在Verilog代码中对相应引脚进行配置.这样如果 ...
- pc端和android端应用程序测试有什么区别?(ps面试题)
pc端和android端应用程序测试有什么区别?(ps面试题) [VIP7]大连-凭海临风(215687736) 2014/4/10 8:56:171.测试环境不同PC平台一般都是windows an ...
- dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)
一.源代码路径 https://github.com/weiganyi/dr-helper 二.界面 通过浏览器訪问Web服务,能够看到界面例如以下: ADT-Bundle编译project生成dr- ...
- S02_CH07_ ZYNQ PL中断请求
S02_CH07_ ZYNQ PL中断请求 7.1 ZYNQ 中断介绍 7.1.1 ZYNQ中断框图 可以看到本例子中PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的 ...
- 区分PC端与移动端代码,涵盖C#、JS、JQuery、webconfig
1)C#区分PC端或移动端 using System.Text.RegularExpressions string u = Request.ServerVariables["HTTP_USE ...
- 【Javascript Demo】移动端访问PC端网页时跳转到对应的移动端网页
不想通过CSS自适应在PC端和移动端分别显示不同的样式,那么只能通过在移动端访问PC端网页时跳转到对应的移动端网页了,那么怎么跳转呢,网上也有很多文章说明,下面是本人测试有效的方式. 1.效果图 PC ...
- C# 移动端与PC端的数据交互
小记:针对目前功能越来越强大的智能手机来说,在PC端支持对手机中的用户数据作同步.备份以及恢复等保护措施的应用已经急需完善.不仅要对数据作保护,而且用户更希望自己的手机跟PC能够一体化,以及和远程服务 ...
- asp.net Core 使用过滤器判断请求客户端是否为移动端,并实现PC端和移动端请求映射和自动跳转
很多时候我们做网站时单纯的用bootstrap等前端框架实现的前端自适应带给用户的体验并不太好,所以为了提高用户体验会专门针对PC端网页重新设计一套移动端网页,但是怎么才能做到在移动端访问PC页面的时 ...
随机推荐
- 管理虚拟机(libvirt)
给我的理解就是与用户交互的"显示器" [root@kvm1 ~]# systemctl status libvirtd [root@kvm1 ~]# virsh virsh # l ...
- Monaco Editor 中使用在线版 Copilot
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:文长 引言 现代软件开发中,代码编辑器的功能不断演进,以满 ...
- 运用myabits
要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可. 如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: ...
- [HAOI2018] 染色 题解
第一眼肯定想到容斥.设 \(G(k)\) 表示至少有 \(k\) 种颜色符合要求,\(F(k)\) 表示恰好有 \(k\) 种颜色符合要求.显然 \(k\) 的上界 \(t=\min(m,\lfloo ...
- Linux - 安装centos7.x之后发现ping不了www.baidu.com
1.首先检查网络配置 /etc/sysconfig/network-scripts 下的网卡配置文件是否有误 检查方向:IP.网关.子网掩码.DNS.ONBOOT参数 2.检查防火墙是否关闭 # 查看 ...
- 面试题55 - I. 二叉树的深度
地址:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/ <?php /** 面试题55 - I. 二叉树的深度 输入一棵二 ...
- C# USB 摄像头 OpenCV 视频picBox呈现,抓拍图像保存呈现。没有注释版本。
1.winform 应用程序,两个picturebox空间,一个用于视频呈现,一个用于抓拍呈现. 2.引用包OpenCvSharp4.OpenCvSharp4.Extensions.OpenCvSha ...
- 分布式锁—7.Curator的分布式锁
大纲 1.Curator的可重入锁的源码 2.Curator的非可重入锁的源码 3.Curator的可重入读写锁的源码 4.Curator的MultiLock源码 5.Curator的Semaphor ...
- 写一个简单的SQL生成工具
知识点: MyBatis 语法概览 MyBatis 是一个强大的数据持久化框架,它提供了一种半自动化的 ORM 实现方式.通过 MyBatis,开发者可以通过简单的 XML 或注解来配置和映射原生信息 ...
- 谷歌 Chrome 浏览器离线安装 vue devtools 插件
由于某些原因,Chrome 应用商店访问不了,所以只能离线安装 vue devtools 插件,离线安装也有两种方法. 方法一:自编译 vue devtools 插件 这方法要求动手能力强的同学. 前 ...