我正在尝试使用 uio_pdrv_genirq 驱动程序向用户空间公开中断。但是我只能在设备树中实例化 1 个设备,所有后续设备都无法通过探测。系统是zynq-7000,内核版本是3.9.0-xilinx。
设备树:
/ {
...
amba@0 {
...
gic: intc@f8f01000 {
interrupt-controller;
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
reg = <0xf8f01000 0x1000>,
<0xf8f00100 0x0100>;
};
interrupt_91@0x43C90000 {
compatible = "generic-uio";
reg = < 0x43C90000 0x1000 >;
interrupts = < 0 59 1 >; //add 32 to get the interrupt number
interrupt-parent = <&gic>;
} ;
interrupter_90@0x43CA0000 {
compatible = "generic-uio";
reg = < 0x43CA0000 0x1000 >;
interrupts = < 0 58 1 >; //add 32 to get the interrupt number
interrupt-parent = <&gic>;
} ;
...
};
dmesg 输出:
dmesg | grep uio
uio_pdrv_genirq 43ca0000.interrupter_90: unable to register uio device
uio_pdrv_genirq: probe of 43ca0000.interrupter_90 failed with error 1
内核配置:
CONFIG_UIO=y
# CONFIG_UIO_CIF is not set
CONFIG_UIO_PDRV_GENIRQ=y
# CONFIG_UIO_DMEM_GENIRQ is not set
# CONFIG_UIO_AEC is not set
# CONFIG_UIO_SERCOS3 is not set
# CONFIG_UIO_PCI_GENERIC is not set
# CONFIG_UIO_NETX is not set
我确定我早些时候在 Zedboard 上得到了这个工作,我不知道这里可能出现什么问题。