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.

[参考译文] Linux:在 REQUEST_IRQ 后崩溃

Guru**** 2000455 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/568078/linux-crash-after-request_irq

工具/软件:Linux

您好!

我正在进行非常简单的 IRQ 注册、我遇到崩溃  
如下所示:
是否有人可以建议如何解决此问题?

root@localhost:~# dmesg -c
root@localhost:~#[180.710235] 无法获取 IRQ 163

root@localhost:~#
root@localhost:~# dmesg -c
[180.709289] FPGA_PROT_IRQ 163.

[180.709289] FPGA_PROT_IRQ 163.
[180.709320]------ [在此处剪切]-----
[180.709350]警告:ARM/ARM/mach-OMAP2/OMAP_L3_NOC.c:117 L3_INTERRUPT_Handler+0x144/0x190 ()
[180.709381] L3自定义错误:主器件:MPU 目标:L4CFG
[180.709381]链接的模块:DRV_IRQ (O) Elbit_files (O) FPGA (O)
[180.709442][ ](RELEDEV_RETRAC+0x0/0xFC)、从[ ](dump_stack+0x20/0x24)
[180.709472][ ](dump_stack+0x20/0x24)从[ ](WARN_RASPEK_COMMON + 0x5c/0x74)
[180.709503][ ](WARN_RASPEK_COMMON + 0x5c/0x74)、从[ ](WARN_RASPH_FMt+0x40/0x48)
[180.709533][ ](WARN_RASPH_Fmt+0x40/0x48)、来自[ ](L3_INTERRUPT_Handler+0x144/0x190)
[180.709564][ ](L3_INTERRUPT_Handler+0x144/0x190)、来自[ ](handle_irq_event_perpu + b0x8 /0x28c)
[180.709594][ ](handle_irq_event_perpu+b0x8/0x28c)从[ ](handle_irq_event+0x4c/0x6c)
[180.709625][ ](handle_irq_event+0x4c/0x6c)从[ ](handle_fasteoi_IRQ+0xd8/0x144)
[180.709655][ ](handle_fasteoi_IRQ+0xd8/0x144)从[ ](generic_handle_IRQ+0x3c/0x50)
[180.709656][ ](generic_handle_IRQ+0x3c/0x50)、来自[ ](handle_IRQ+0x88/0xc8)
[180.709716][ ](handle_IRQ+0x88/0xc8)从[ ](GIC_Handle_IRQ+0x54/0x74)
[180.709747][ ](GIC_Handle_IRQ+0x54/0x74)、来自[ ](_IRQ_Svc+0x40/0x70)
[180.709777]异常堆栈(0xeb4bfcb8至0xeb4bfd00)
[180.709777] fca0:c08ebc90 60000113
[180.709808] fcc0:00000001 00000000 c08ebc40 00000001 c08ebc40 eb417c40 00000000 00000000
[180.709838] fce0:eb76e000 eb4bfd0c eb4bfd10 eb4bfd00 c00bc58c c05baf08 60000113 ffff
[180.709869][ ](_IRQ_Svc+0x40/0x70)从[ ](_raW_spin_unlock_irqrestore+0x2C/0x54)
[180.709899][ ](_raW_spin_unlock_irqrestore+0x2C/0x54)从[ ](__IRQ_PLOT_desc_unlock+0x24/0x48)
[180.709930][ ](__IRQ_PLOT_desc_unlock+0x24/0x48)从[ ](IRQ_SET_IRQ_TYPE+0x5c/0x68)
[180.709960][ ](IRQ_SET_IRQ_TYPE+0x5c/0x68)、来自[ ](Elbit_IRQ_open+0x48/b4 [drv_IRQ])
[180.709991][ ](Elbit_IRQ_open+0x48/b4 [drv_IRQ])、来自[ ](chrdev_open+0x134/0x154)
[180.710021][ ](chrdev_open+0x134/0x154)、来自[ ](__dlentry_open+0x1b4/0x2c0)
[180.710052][ ](__dlete_open+0x1b4/0x2c0)从[ ](nameidata_TO_filp+0x64/0x74)
[180.710083][ ](nameidata_TO_filp+0x64/0x74)、来自[ ](do_last+0x91c/0xaac)
[180.710113][ ](do_last+0x91c/0xaac)、来自[ ](path_openat+0xd4/0x3ac)
[180.710113][ ](path_openat+0xd4/0x3ac)、来自[ ](do_filp_open+0x40/0x8c)
[180.710144][ ](do_filp_open+0x40/0x8c)、来自[ ](do_sys_open+0xf8/0x188)
[180.710174][ ](do_sys_open+0xf8/0x188)从[ ](sys_open+0x2C/0x30)
[180.710205][ ](sys_open+0x2C/0x30)从[ ](RET_FAST_SYSCALL+0x0/0x30)
[180.710205]--[结束线迹784577ce70100618 ]--
[180.710235]无法获取 IRQ 163

此致、

已运行

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否附加简单的 IRQ 注册驱动程序代码。

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,Prabhakar,

    是的、就是这样。

    我在添加带有"+"标记的行后解决了这个问题。  

    有趣的是、我有其他 IRQ 注册、它在没有额外行代码的情况下运行良好、但重要的是我不再遇到此崩溃。

    #define GPIO_IRQ 3.

    FPGA_IRQ = GPIO_TO_IRQ (GPIO_IRQ);

    + GPIO_REQUEST (GPIO_IRQ、"FPGA_INTERRUPT");
    + GPIO_DIRECT_INPUT (GPIO_IRQ);
    + GPIO_export (GPIO_IRQ、true);

    IRQ_SET_IRQ_TYPE (FPGA_IRQ、IRQ_TYPEE_EDGE_FALLING);
    RET = REQUEST_IRQ (FPGA_IRQ、SAMPLE_IRQ、IRQF_SHARED、DEVICE_NAME、DEV_ID);

    谢谢、

    已运行