動作環境
PetaLinux 2014.4
Vivado v2014.2
MicroZed
2014年のメモより。
fft_1: fft-axi-dma@40400000 {
compatible = “generic-uio”;
interrupt-parent = <&ps7_scugic_0>;
interrupts = <0, 52 4>;
reg = <0x40400000 0x10000>;
};
The fields of the description are:
- fft_1:
Just a label in the dts
fft-axi-dma:
The name that will show up in the PetaLinux/sys file system describing this device
@40400000:
The address on the bus in Hex for documentation purposes (Recall that we verified this address when the hardware was built in Vivado.)
compatible="generic-uio":
States that this is compatible with the driver named "generic-uio" - This is critical to link the DMA engine to user space I/O
interrupt-parent=<&ps7-scugic_0>:
States that interrupts from this device go to that controller described elsewhere in the dts
interrupts=<0, 52, 4>:
The 52 is the number assigned in IRQ_F2P minus 32. The numbers 0 and 4 are required for proper operation of IRQ_F2P interrupts.
reg=0x40400000 0x10000:
This specifies that this device has a 0x10000 (64K) address space starting at 0x40400000 (Recall that we verified this address when the hardware was built in Vivado.)
上記を参考にsystem-top.dtsファイルを以下のように編集したら、/dev/uio0が見えるようになった。
この例ではoutput(LED点灯など)の書き方をしている。 inputの場合は、別途interruptなどの指定が必要となるそう。
/dts-v1/;
/include/ "system-conf.dtsi"
/ {
axi_gpio@41200000 {
compatible = "generic-uio";
reg = < 0x41200000 0x10000> ;
};
};
uioのapplicationは svenandのコード をPetaLinuxのアプリケーションとして作成すればいい。
アプリケーションの名前をledappとした場合
$ /bin/ledapp -d /dev/uio0 -o 1
とするとzedboardのLD0が点灯することを確認した。
同様に
$ /bin/ledapp -d /dev/uio0 -o 2
$ /bin/ledapp -d /dev/uio0 -o 3
などでLD1、LD0+LD1が点灯する。