问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

切换到宽版
微信扫一扫 分享朋友圈

已有 6052 人浏览分享

开启左侧

XDMA 中断的问题

[复制链接]
6052 0
TIM图片20190720140828.png
如图,我将3个信号作为中断信号同时给了PS和XDMA,我在PS中用SDK检测3个中断信号

GicConfig = XScuGic_LookupConfig(XPAR_PS7_SCUGIC_0_DEVICE_ID);
    XScuGic_CfgInitialize(&InterruptController, GicConfig,GicConfig->CpuBaseAddress);
    Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,
                (Xil_ExceptionHandler) XScuGic_InterruptHandler,
                &InterruptController);
    Xil_ExceptionEnable();
    XScuGic_Connect(&InterruptController, PULSE_EVENT,
                   (Xil_ExceptionHandler)PULSE_EVENT_Handler,
                   (void *)&InterruptController);
    XScuGic_Connect(&InterruptController, IRQ_EVENT,
                   (Xil_ExceptionHandler)IRQ_EVENT_Handler,
                   (void *)&InterruptController);
    XScuGic_Connect(&InterruptController, OVERFLOW_EVENT,
                   (Xil_ExceptionHandler)OVERFLOW_EVENT_Handler,
                   (void *)&InterruptController);
    XScuGic_SetPriorityTriggerType(&InterruptController, PULSE_EVENT,40,0b11);
    XScuGic_SetPriorityTriggerType(&InterruptController, IRQ_EVENT,40,0b11);
    XScuGic_SetPriorityTriggerType(&InterruptController, OVERFLOW_EVENT,40,0b11);
    XScuGic_Enable(&InterruptController, PULSE_EVENT);
    XScuGic_Enable(&InterruptController, IRQ_EVENT);
    XScuGic_Enable(&InterruptController, OVERFLOW_EVENT);
TIM图片20190720141059.png

显示中断信号识别正常,采用的是上升沿触发模式
但是我在Linux QT中, 根据汤老板的代码

event1_fd = open("/dev/xdma0_events_1",O_RDWR | O_SYNC);
    if(event1_fd < 0)
        return -3;
event0_fd = open("/dev/xdma0_events_0",O_RDWR | O_SYNC);
    if(event0_fd < 0)
        return -4;
event2_fd = open("/dev/xdma0_events_2",O_RDWR | O_SYNC);
    if(event2_fd < 0)
        return -5;

int read_event(int fd)
{
    int val;
    read(fd,&val,4);
    return val;
}

void pulseeventthread::run()
{
    while(1)
    {
        read_event(event0_fd);
        emit sig_pulse_event_emit();
    }
}


connect(&pulse_event_thread,SIGNAL(sig_pulse_event_emit()),this,SLOT(pulse_event_occurs()));

void MainWindow::pulse_event_occurs()
{
    ui->lb_pulse_event->setText("get event");
}

发现read_event得不到这3个中断信号,请问下汤老板有遇到这样的情况吗,
驱动测试读写h2c c2h和 user 都可以正常工作了


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

2

粉丝

9

主题
精彩推荐
热门资讯
网友晒图
图文推荐

  • 微信公众平台

  • 扫描访问手机版