”
FPGA+SoC+Linux実践勉強会での課題をやってみた3(Vivado 編2 ACPポートを使用)”の続き。
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして、回路を構成した。その際には、ACP ポートを使用した。SDK のベアメタル・アプリケーションソフトで動作を確認した。今回は、ikwzm さんの Device Tree Overlay を試してみよう。
PYNQ ボードで Device Tree Overlay を試した時の記事は、
””FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる5(デバイスツリー・オーバーレイ)”だ。これと、
”FPGA+SoC+Linux実践勉強会資料”を参照している。
なお、”
FPGA+SoC+Linux実践勉強会用のZYBO Z7用MicroSDカードの準備”で準備したMicroSDカードを使用している。
まずは、dma_pow2.dts を作成した。
Vivado の Address Editor を見ると、アサインされたアドレスが分かる。

これを見ると、DMA_pow2_0 が 0x43C0_0000 からの 64 kバイトを使用することが分かる。
これを元に、
”FPGA+SoC+Linux実践勉強会資料”の 26 ページのDevice Tree Overlay のサンプルを参考にデバイスツリーを書いてみた。

/dts-v1/;
/ {
fragment@0 {
target-path = "/amba";
__overlay__ {
#address-cells = <0x1>;
#size-cells = <0x1>;
dma_pow2@43c00000 {
compatible = "generic-uio";
reg = <0x43c00000 0x10000>;
#interrupts = <0x0 0x1d 0x4>;
};
};
};
};
デバイスツリー・オーバーレイを実行するには、
””FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる5(デバイスツリー・オーバーレイ)”だと、/config/device-tree/overlays で uio_gpio_0 ディレクトリを作成して、status に書いたりして実装していたが、
”FPGA+SoC+Linux実践勉強会資料”の 32 ページに dtbocfg.rb があるので使ってみよう。これは拡張子で分かるように Ruby スクリプトだ。
まず、
dtbocfg.rb -h を実行してコマンドを見た。

-i を使えばよいのかな?
sudo dtbocfg.rb -i --dts dma_pow2.dts dma_pow2を実行した。

ワーニングが出た。それは、
/config/device-tree/overlays/dma_pow2/dtbo: Warning (unit_address_vs_reg): Node /fragment@0 has a unit name, but no reg property
だった。
試しに、
ls /config/device-tree/overlays を実行すると、dma_pow2 があったので、うまく行っているみたいだ。

dma_pow2 ディレクトリの下には、dtbo と status の 2 つのファイルがあった。
次に、/sys/devices/soc0/amba/ に行ってみよう。
cd /sys/devices/soc0/amba/
ls すると、43c00000.dma_pow2 があった。デバイスツリー・オーバーレイで dma_pow2 を実装できているようだ。
43c00000.dma_pow2 を tree コマンドで構造を見た。


次にインストールしたデバイスツリー・オーバーレイを削除してみよう。
sudo dtbocfg.rb -r dma_pow2を実行した。
ls /config/device-tree/overlays をしても dma_pow2 は無くなっていた。
ls /sys/devices/soc0/amba/ をしても、43c00000.dma_pow2 は無くなっていた。
- 2017年12月10日 05:16 |
- Linux
-
| トラックバック:0
-
| コメント:0