장치 트리 하위 노드의 UIO 인스턴스

장치 트리 하위 노드의 UIO 인스턴스

올바른 dtsi 파일에서 Xilinx PetaLinux에 의해 자동으로 생성되는 다음 장치 트리 노드가 있습니다(수정할 수 없음).

axi_dma_0: dma@a0000000 {
        #dma-cells = <1>;
        clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_s2mm_aclk";
        clocks = <&misc_clk_0>, <&misc_clk_0>, <&misc_clk_0>;
        compatible = "xlnx,axi-dma-7.1", "xlnx,axi-dma-1.00.a";
        interrupt-names = "s2mm_introut";
        interrupt-parent = <&gic>;
        interrupts = <0 89 4>;
        reg = <0x0 0xa0000000 0x0 0x10000>;
        xlnx,addrwidth = <0x28>;
        xlnx,include-sg ;
        xlnx,sg-length-width = <0x1a>;
        dma-channel@a0000030 {
            compatible = "xlnx,axi-dma-s2mm-channel";
            dma-channels = <0x1>;
            interrupts = <0 89 4>;
            xlnx,datawidth = <0x20>;
            xlnx,device-id = <0x0>;
        };
    }

UIO에서 전체 AXI DMA 하드웨어에 액세스하려면 PetaLinux에서 호스팅하는 다른 사용자 정의 파일에서 다음 코드를 사용할 수 있습니다.

&axi_dma_0 {
    compatible = "generic-uio";
    linux,uio-name = "axi_dma";
};

내가 원하는 것은 UIO가 dma-channel전체 AXI DMA 대신 하위 노드에만 액세스하도록 하는 것입니다. 이를 위해 다음을 시도했습니다.

&axi_dma_0 {
    dma-channel@a0000030 {
        compatible = "generic-uio";
        linux,uio-name = "axi_dma_s2mm";
    };
};

또는 reg하위 노드에 공백 선언을 추가합니다 dma-channel.

&axi_dma_0 {
    dma-channel@a0000030 {
        reg = <0x0 0xa0000030 0x0 0x28>;
        compatible = "generic-uio";
        linux,uio-name = "axi_dma_s2mm";
    };
};

그 외에도...파일을 만들 수 없습니다.. /dev/uioX무엇이 잘못되었거나 작동하도록 하기 위해 누락된 것이 무엇입니까, 또는 가능하지 않은 이유를 이해합니까(만약 그렇다면)?

관련 정보