2017-10-14 145 views
1

我正在嘗試在我正在開發的嵌入式ARM FPGA系統中使用Xilinx中斷控制器驅動程序。 (https://github.com/torvalds/linux/blob/master/drivers/irqchip/irq-xilinx-intc.cIRQCHIP_DECLARE:init函數未運行

在此驅動程序的到底是行:

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

我已經加入我的設備樹的中斷控制器的條目。

xil_intc: [email protected] {   
     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: no irq domain found for /amba/[email protected] !

我已經成功地編寫和編譯其他設備驅動程序,添加設備樹條目,並讓他們加載並顯示在dmesg ,但由於某種原因,我無法讓這個工作。

對此進行調試的任何建議?

對於它的價值,我正在將驅動程序編譯到內核模塊中,使用modules_install進行安裝,並在啓動時加入了一個條目以加載/etc/modules

編輯:我正在使用4.6內核。

回答

0

我得出的結論是,從/ lib/modules加載irqchip驅動程序在啓動過程中太晚了。

我結束了重建整個內核與修改後的配置,以包括此驅動程序,然後初始化工作正常。

我想教訓是,IRQCHIP驅動程序必須編譯到內核中,並且不像其他設備驅動程序那樣作爲內核模塊工作?我找不到任何可以這樣說的文檔,但那是我觀察到的行爲。