gpt4 book ai didi

linux - IRQCHIP_DECLARE : init function is not being run

转载 作者:太空狗 更新时间:2023-10-29 11:49:22 25 4
gpt4 key购买 nike

我正在尝试在我正在开发的嵌入式 ARM FPGA 系统中使用 Xilinx 中断 Controller 驱动程序。 ( https://github.com/torvalds/linux/blob/master/drivers/irqchip/irq-xilinx-intc.c )

在这个驱动程序的末尾是一行:

IRQCHIP_DECLARE(xilinx_intc_xps, "xlnx,xps-intc-1.00.a", xilinx_intc_of_init);

我在设备树中为中断 Controller 添加了一个条目。

    xil_intc: xil_intc@41810000 {           
compatible = "xlnx,xps-intc-1.00.a";
interrupt-parent = <&intc>;
interrupts = <0x0 0x1e 0x04>;
reg = <0x41810000 0x10000>;
interrupt-controller;
#interrupt-cells = <2>;
xlnx,kind-of-intr = <0x0>;
xlnx,num-intr-inputs = <0x1>;
};

但是,据我所知,启动期间从未调用 xilinx_intc_of_init 函数。我在函数的开头添加了一个 pr_info,但我从未看到它被调用。

似乎表明存在问题的唯一消息是:

[0.177772] irq:找不到/amba/xil_intc@41810000 的 irq 域!

我已经成功地编写和编译了其他设备驱动程序,在设备树中添加了条目,并将它们加载并显示在 dmesg 中,但由于某种原因我无法让这个工作.

关于调试这个有什么建议吗?

为了它的值(value),我正在将驱动程序编译到内核模块中,使用 modules_install 安装并在 /etc/modules 中添加一个条目以加载它启动。

编辑:我使用的是 4.6 内核。

最佳答案

IRQCHIP_DECLARE(xilinx_intc_xps, "xlnx,xps-intc-1.00.a", xilinx_intc_of_init);

驱动程序 irq-xilinx-intc.c 使用上述调用向 irq 子系统注册。

如果 irq 驱动程序使用 IRQCHIP_DECLARE 宏,它将按照以下顺序调用 xilinx_intc_of_init()(回调函数)

start_kernel() –> init_IRQ() --> irqchip_init() --> of_irq_init() --> call-back function (xilinx_intc_of_init)

如果驱动程序是使用 IRQCHIP_DECLARE 注册的,则必须将其编译到内核中,并且将在内核启动时调用回调函数。

它不像其他设备驱动程序那样作为内核模块/覆盖层工作。

关于linux - IRQCHIP_DECLARE : init function is not being run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46739529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com