system-user.dtsi 文件中定义了两个中断,但为什么 /proc/interrupts 中只有一个中断?

Two interrupts are defined in system-user.dtsi file but why only one interrupt in /proc/interrupts?

提问人:Creator 提问时间:11/9/2023 最后编辑:Creator 更新时间:11/17/2023 访问量:121

问:

VIVADO 中有一个用于 DMA 传输的设计。我想使用 uio 设备,并且我有一个目录以及目录中的信息。在我的pl.dtsi中,我有两个中断,我已将它们添加到system-user.dtsi文件中:/dev/uio0/sys/class/uio/uio0/maps/map0

/include/ "system-conf.dtsi"
/ {
    chosen {
            bootargs = "earlycon clk_ignore_unused uio_pdrv_genirq.of_id=generic-uio rootwait quiet loglevel=0";
            stdout-path = "serial0:115200n8";
        };
};

&axi_dma_0 {
    clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";
    clocks = <&clkc 15>, <&clkc 15>, <&clkc 15>, <&clkc 15>;
    interrupt-names = "mm2s_introut", "s2mm_introut";
    compatible = "generic-uio";
    reg = <0x40400000 0x10000>;
    interrupt-parent = <&intc>;
    interrupts = <0 29 4 0 30 4>;
    dma-channel@40400000 {
        compatible = "xlnx,axi-dma-mm2s-channel";
        dma-channels = <0x1>;
        interrupts = <0 29 4>;
        xlnx,datawidth = <0x20>;
        xlnx,device-id = <0x0>;
    };
    dma-channel@40400030 {
        compatible = "xlnx,axi-dma-s2mm-channel";
        dma-channels = <0x1>;
        interrupts = <0 30 4>;
        xlnx,datawidth = <0x20>;
        xlnx,device-id = <0x0>;
    };
};

但是,在启动后(我使用 petalinux 来构建嘘声图像和其他文件),板子中我看到一个条目/proc/interrupts

32:          0          0 GIC-0  61 Level     dma

我假设 61 是 mm2s,因为它对应于 .我不应该在 /proc/interupts 中看到另一个 30 的条目吗?61 - 32 = 29

Linux 嵌入式 Linux 设备树

评论

0赞 Stuart Menefy 11/16/2023
我建议重新编译你的内核,设置(“DMA引擎调试”),在内核命令行上启动你的内核,并在这个问题中添加探测DMA设备时的输出(类似的东西将是一个好的开始)。CONFIG_DMADEVICES_DEBUGdebugdmesg | grep -C3 dma
0赞 0andriy 11/16/2023
您是否有 DTS 中字段的描述?对我来说,你的 DTS 一开始就不正确并不明显。
0赞 Creator 11/17/2023
@0andriy,我添加了完整的 system-user.dtsi 文件。如果您指出错误,我将不胜感激。
0赞 0andriy 11/19/2023
这无济于事,我不会检查所有细节。举个例子:DMA 的子级有自己的兼容字符串,UIO 是如何枚举的?UIO真正需要哪些属性?等等......只需浏览该描述中的每一行,并仔细检查 a) 是否有必要,b) 执行您认为应该做的事情。
0赞 Creator 11/19/2023
@0andriy 如果没有人回答,我的赏金就会白费。如果你写一些东西作为答案,我可以提供赏金。如果不是答案,至少我应该看看的步骤,或者我应该像我自己一样找到解决方案的问题,或者一些链接来研究以找到解决方案。

答: 暂无答案