本设计使用Xilinx系列FPGA为平台,调用Xilinx官方的XDMA方案搭建基中断模式下的PCIE通信架构,XDMA的数据缓存有两条通路,一条基于DDR3的大批量数据缓存通路,该条通路一般用作图像、AD数据等缓存,适用于Xilinx Artix7-100T及其以上型号的FPGA;另一条基于BRAM的小批量用户数据缓存通路,该条通路一般用作用户控制数据的缓存,...
3.6.4event中断测试 1:XDMA中断FPGA部分代码 首先我们要理解下XDMA的中断类型,以及控制时序: 1)、Legacy Interrupts: 对于Legacy Interrupts中断,当user_irq_ack 第一次为1的时候usr_irq_req可以清0,当user_irq_ack 第二次为1的时候,可以重新设置usr_irq_req发起中断。 在PCI总线里面INTx中断是由四条可选的中...
cat/dev/xdma0_event_0 复制代码 就会报错,报cat:/dev/xdma0_events_0: Protocol error 复制代码 ...
D. _user,是PCIe to AXI Lite Master Interface选择的空间; E. _event_x,是IP配置第四页,选择的用户层中断对应的设备; 5.2 软件测试,Linux环境 如果IP配置选择AXI-Memory Map,参考dma_memory_mapped_test.sh,这个脚本写入一段数据到BlockRAM中,然后读出对比。 如果IP配置选择AXI-Stream接口,参考dma_streaming_...
int_sem_tx;char*device_c2h =DEVICE_NAME_C2H;char*device_h2c =DEVICE_NAME_H2C;char*device_reg =DEVICE_NAME_REG;staticvoidwrite_control(void*base_addr,intoffset,uint32_t val);//写用户寄存器staticuint32_t read_control(void*base_addr,intoffset);//读用户寄存器/*开中断*/intopen_event(char...
When I read the interrupt signal from /dev/xdma0_events_0, it stuck. A look at the interrupt event file reveals the following error: $cat /dev/xdma0_events_0 cat: /dev/xdma0_events_0: Protocol error I don't know why.
2、xdma核提供了INTX中断和MSI中断的方式,xilinx官方测试程序也提供了user_event命令来进行中断测试,...
⽤法其实很简单,就是去读这个设备,能读完就说明有中断来了, 卡在读这⾥说明没有中断过来。 看⽤户层代码 :这⾥读事件中断是⽤⼀个线程⼀直去读的,通过信号量去通知其 线程是否有中断过来。 void *c2h_event_ process(void *param) { static int flag = 0; int fd = open_event(/dev/xdma...
*/static const struct file_operations events_fops={.owner=THIS_MODULE,.open=char_open,.release=char_close,.read=char_events_read,.poll=char_events_poll,};voidcdev_event_init(struct xdma_cdev*xcdev){xcdev->user_irq=&(xcdev->xdev->user_irq[xcdev->bar]);cdev_init(&xcdev->cdev,&eve...
}/*获取用户中断*/intread_event(int fd) {int val; read(fd,&val,4);return val; }/*打开字符设备*/staticintopen_control(char*filename) { int fd; fd = open(filename, O_RDWR | O_SYNC); if(fd == -1) { printf("open control error\n"); ...