This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x nmi中断如何使用?



我想申请gpio中断一样去申请NMI中断, ,但是申请不到,错误是-22,也就是无效参数,看了好多人都说有这样的问题,这个怎么解决?我看了9c0寄存器,值为0x00000030,表明处于使能状态,但就是用不了

  • 我再驱动中尝试去申请conf_nnmi寄存器申请不到,if(!request_mem_region(0x44e109c0,0x04,"nmi"));这是不是说明被哪个地方占用了?我怀疑申请不到中断也是这个原因,能帮忙解决一下吗?

  • 我追踪了一下代码,发现程序总是卡在这里

    为什么会这样呢?因为总是卡在这里,所以返回值总是-22,所以总是申请不成功,

    我自己尝试在申请之前检测能否申请,采用下面的方式

    但是,程序中总是提示下面的情况:

    请TI的员工解答一下,目前貌似看网上有很多朋友都遇到申请中断申请不到的情况

  • 我又继续追踪了代码,发现是因为不能申请从而导致中断总是申请不到

    static inline bool irq_settings_can_request(struct irq_desc *desc)
    {
    return !(desc->status_use_accessors & _IRQ_NOREQUEST); //lijie dev
    }

    程序总是卡在这里了,是不是NMI中断不能直接申请?

    然后我又查看了_IRQ_NOREQUEST,发现这样一种情况

    请问一下这里的GOT_YOU_MORON是什么意思?

  • 终于解决了!经历困难啊!对于此类申请中断的问题在这里总结一下,希望对大家有用,

    关于NMI中断,中断号为7,此时不能直接用    request_irq(7,xxx,xxx,xxx,xxx)去申请,因为内核不认识中断号7,此时需要先去申请中断号:

    irq = platform_get_irq(pdev, 0);利用这个函数获得中断号,这个函数要配合设备数去完成,获得中断号之后就可以用request_irq()去申请了,具体的看我的博客

    http://blog.csdn.net/lixiaojie123123/article/details/73473449