首先在主程序中发生IRQ中断请求,程序跳到中断向量表找IRQ中断对应的解析程序地址,然后再跳到中断解析程序,进而执行中断程序。 zynq的中断 那具体到zynq的中断呢,先简单概括下吧(起码先看见这些缩写起码不再头疼) Zynq的中断类型有: 软件中断(Software Generated Interrupt, SGI,中断号0-15)(16–26 reserved)...
下面上实例,工程中我们用AXIDMA来搬移数据(详细使用日常在AXIDMA篇),由于16个软件中断已经不够用了,所以我们将中断挂在GPIO上(EMIO)来判断是否有输入: #define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID//通用中断控制器 ID#define INTC XScuGic#define INTC_HANDLER XScuGic_InterruptHandlerstatic XGpioPs Gp...
1.vivado工程:DMA_LOOP 2,添加约束,生成bit,导入SDK,,新建dma测试工程测试功能 main.c: #include "dma_intr.h" #include "sys_intr.h" static XScuGic Intc; static XAxiDma AxiDma; volatile u32 success; ch... flash 与3D笔记 图片墙(1) ...
将dma输出中断信号和axigpio输出中断信号接入Concat,Concat输出与PS中断连接。 中断处理 在代码中加入与dma相关的中断处理函数。 1、中断处理步骤1不变,dma与axigpio共用。 2、在代码中再加入中断处理步骤2和中断处理步骤3中的函数,将之前axigpio相关对象换成与dma相关对象。 axigpio与dma中断处理函数 加入axigpio与d...
确认设备树中的中断号没有问题 adi_axi_dma_ps2pl_dev_0: adi_axi_dma_ps2pl_dev_0@0{ reg = <0x43c00000 0x10000>; memory-region = <&dma1_reserved>; cache-coherence-ctrl = <1>; //memory-region cache一致性特性控制方式,1:由驱动保证cache一致性 ,0:由其他机制保证cache一致性 ...
xaxidma_example_simple_intr.c 主函数中依次完成了:DMA初始化,建立中断系统,使能DMA中断,初始化标志位及发送数据,启动DMA传输以及数据检测。中断部分的内容与PS DMA非常相近,传输完成后进入的中断函数中仅置位了发送或接收完成标志位: intrHandler DMA启动传输部分如下,调用库函数XAxiDma_SimpleTransfer。以第一个为...
5. 连接DMA中断到PS。 连接AXI DMA的mm2s_introut到xlconcat_0的In0,连接s2mm_introut到xlconcat_0的In1. 6. 点击Tools -> Validate Design,确认无误后最终原理图如下。 编译综合,生成bitstream,导出到SDK中进行软件设计。 3. SDK软件测试 1.1 创建SDK工程 ...
我们使用的是简单模式,使用中断的例程 axi_dma_loop_test_bsp_xaxidma_example_simple_intr,首先看下例程的结构。例程中主要的函数分别是 main(void) 主函数中完成了对 DMA 的初始化,准备一份发送数据,放在数组缓冲区中,调用 DMA 的 XAxiDma_SimpleTransfer 函数发送,同时接收一份数据放到接收缓冲区中。因为硬件...
这里我们要使用DMA的直接寄存器模式进行传输。所以如下图配置即可。 添加ZYNQ7 IP核,勾选相应的GP和HP接口。 勾选复位引脚和时钟, 打开中断,完成对zynq IP核的配置。 添加AXI-Stream DataFIFO,配置保持默认。 为了把AXI DMA IP 的中断管脚连接到ZYNQ7的IP核上,需要添加concat IP进行接口的转接。
一旦我们启用了报警,我们也使用适当的函数调用启用中断,同样使用 xadcps_hw.h 提供的函数。要一次启用多个中断,或将它们组合在一起: 代码语言:javascript 复制 XAdcPs_IntrEnable(XADCInstPtr,XADCPS_INTX_ALM0_MASK); 考虑到这一点,我们开始在 Vivado 中创建一个简单的项目,其中包括Zynq PS通过 AXI 接口连接到...