正しい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
それ以外にも...ファイルを作成できません。