FC2カウンター FPGAの部屋 FPGA+SoC+Linux実践勉強会での課題をやってみた4(Device Tree Overlay)
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

FPGA+SoC+Linux実践勉強会での課題をやってみた4(Device Tree Overlay)

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 を見ると、アサインされたアドレスが分かる。
FPGA-SoC-Linux4ZYBO_Z7_54_171209.png

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

/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 を実行してコマンドを見た。
FPGA-SoC-Linux4ZYBO_Z7_61_171209.png

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

ワーニングが出た。それは、

/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 があったので、うまく行っているみたいだ。
FPGA-SoC-Linux4ZYBO_Z7_57_171209.png

dma_pow2 ディレクトリの下には、dtbo と status の 2 つのファイルがあった。

次に、/sys/devices/soc0/amba/ に行ってみよう。
cd /sys/devices/soc0/amba/
FPGA-SoC-Linux4ZYBO_Z7_58_171209.png

ls すると、43c00000.dma_pow2 があった。デバイスツリー・オーバーレイで dma_pow2 を実装できているようだ。

43c00000.dma_pow2 を tree コマンドで構造を見た。
FPGA-SoC-Linux4ZYBO_Z7_59_171209.png
FPGA-SoC-Linux4ZYBO_Z7_60_171209.png

次にインストールしたデバイスツリー・オーバーレイを削除してみよう。
sudo dtbocfg.rb -r dma_pow2
を実行した。
FPGA-SoC-Linux4ZYBO_Z7_62_171210.png

ls /config/device-tree/overlays をしても dma_pow2 は無くなっていた。
ls /sys/devices/soc0/amba/ をしても、43c00000.dma_pow2 は無くなっていた。
  1. 2017年12月10日 05:16 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/3998-bbd81453
この記事にトラックバックする(FC2ブログユーザー)