ひでみのアイデア帳 2020-03-30T09:50:08+09:00 urn:uuid:32c34578-c4da-8d90-5f18-1740239359ee Let's Vitis(18) - Ultra96V2で動かしてみよう urn:uuid:fd2c07d5-5f27-c617-d134-cc9af32837aa Let's Vitis(18) - Ultra96V2で動かしてみよう

VitisでコンパイルしたバイナリをSDカードにコピーします。

プロジェクトのHardwareディレクトリにsd_cardディレクトリが生成されます。

存在するファイルは下記のとおりです。

  • BOOT.BIN
  • uEnv.txt
  • Image
  • zynqmp-ultra96-v2.dtb
  • sample_app1.exe
  • binary_container_1.xclbin

SDカードの生成方法はすでにお勉強しました。

これらのファイルをSDカードの第一パーティションに書き込みます。

core-image-minimal-ultra96v2.tar.gzはSDカードの第二パーティションにコピーします。

Ultra96V2で実行

SDカードをUltra96V2に差し込んで起動します。

SDカードの第一パーティションをマウントしてsample_app1.exeとbinary_container_1.xclbinをhomeディレクトリにコピーします。

そして、sample_app1.exeを実行してみましょう。

$ export XILINX_XRT=/usr
$ ./sample_app1.exe binary_container_1.xclbin

「TEST PASS」って表示されればOKです。

本当に確かめるなら、Emulation-SWと相違がなければ正解です。

次回予告

次は既存のRTLをアプリケーションから使えるようにRTL Kernelを作っていきましょう。

次回は「RTL Kernelを作る」を勉強しましょう。

]]>
2020-02-14T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>Let's Vitis(18) - Ultra96V2で動かしてみよう</h1> <p>VitisでコンパイルしたバイナリをSDカードにコピーします。</p> <p>プロジェクトのHardwareディレクトリにsd_cardディレクトリが生成されます。</p> <p>存在するファイルは下記のとおりです。</p> <ul> <li>BOOT.BIN</li> <li>uEnv.txt</li> <li>Image</li> <li>zynqmp-ultra96-v2.dtb</li> <li>sample_app1.exe</li> <li>binary_container_1.xclbin</li> </ul> <p>SDカードの生成方法はすでにお勉強しました。</p> <p>これらのファイルをSDカードの第一パーティションに書き込みます。</p> <p>core-image-minimal-ultra96v2.tar.gzはSDカードの第二パーティションにコピーします。</p> <h2>Ultra96V2で実行</h2> <p>SDカードをUltra96V2に差し込んで起動します。</p> <p>SDカードの第一パーティションをマウントしてsample_app1.exeとbinary_container_1.xclbinをhomeディレクトリにコピーします。</p> <p>そして、sample_app1.exeを実行してみましょう。</p> <pre><code class="txt">$ export XILINX_XRT=/usr $ ./sample_app1.exe binary_container_1.xclbin</code></pre> <p>「TEST PASS」って表示されればOKです。</p> <p>本当に確かめるなら、Emulation-SWと相違がなければ正解です。</p> <h2>次回予告</h2> <p>次は既存のRTLをアプリケーションから使えるようにRTL Kernelを作っていきましょう。</p> <p>次回は「RTL Kernelを作る」を勉強しましょう。</p>
Let's Vitis(17) - FPGAアクセラレーションするプロジェクト urn:uuid:552b8863-3cc7-b93c-ce26-1abc231a4652 Let's Vitis(17) - FPGAアクセラレーションするプロジェクト

今回はFPGAアクセラレーションするプロジェクトを勉強します。

まずはサンプルプロジェクトで試していきます。

Create ApplicationでVector Additionを選択します。

プロジェクト名はsample_app1にしました。

Emulation-SWのコンパイル

生成されたプロジェクトをコンパイルしてみましょう。

まずはEmulation-SWからやってみましょう。

コンパイルが正常終了すればOKです。

ここでコケるようでは話になりません。

Emulation-HW

次はEmulation-HWをコンパイルしてみましょう。

時間がかかりますがコンパイルが正常終了すれば問題ありません。

Hardware

最後にHardwareをコンパイルしてみましょう。

時間がかかりますがコンパイルが正常終了すれば問題ありません。

次回予告

ここまでできれば実機で動作するか確認です。

アクセラレーションのソフトウェアのカスタマイズは動作確認を行った後に実施していきます。

次回は「Ultra96V2で動かしてみよう」を勉強します。

]]>
2020-02-12T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>Let's Vitis(17) - FPGAアクセラレーションするプロジェクト</h1> <p>今回はFPGAアクセラレーションするプロジェクトを勉強します。</p> <p>まずはサンプルプロジェクトで試していきます。</p> <p>Create ApplicationでVector Additionを選択します。</p> <p>プロジェクト名はsample_app1にしました。</p> <p><img src="./files/vitis_tutorial_085.png" alt="" /></p> <h2>Emulation-SWのコンパイル</h2> <p>生成されたプロジェクトをコンパイルしてみましょう。</p> <p>まずはEmulation-SWからやってみましょう。</p> <p>コンパイルが正常終了すればOKです。</p> <p>ここでコケるようでは話になりません。</p> <h2>Emulation-HW</h2> <p>次はEmulation-HWをコンパイルしてみましょう。</p> <p>時間がかかりますがコンパイルが正常終了すれば問題ありません。</p> <h2>Hardware</h2> <p>最後にHardwareをコンパイルしてみましょう。</p> <p>時間がかかりますがコンパイルが正常終了すれば問題ありません。</p> <h2>次回予告</h2> <p>ここまでできれば実機で動作するか確認です。</p> <p>アクセラレーションのソフトウェアのカスタマイズは動作確認を行った後に実施していきます。</p> <p>次回は「Ultra96V2で動かしてみよう」を勉強します。</p>
Let's Vitis(16) - FPGAアクセラレーション環境を構築 urn:uuid:ef51cbfa-9fc7-3587-695e-9a10a30baa2e Let's Vitis(16) - FPGAアクセラレーション環境を構築

今回からFPGAでアクセラレーションするアプリケーションを作成していけるようにします。

前回作成したのは単にCortexA53上で動作するアプリケーション環境です。

しかも、環境はUltra96V2でアプリケーションを開発できる環境でした。

この環境ではFPGAアクセラレーションすることはできません。

VitisでのFPGAアクセラレーションとは

VitisでFPGAアクセラレーションを行うにはOpenCL環境を開発できるようにしなければいけません。

Interfaceの設定

Interfaceを設定します。

Interfaceはアクセラレーションで使用できるInterfaceを設定する必要があります。

VivadoのWindow→Platform InterfaceでInterfaceを追加します。

ClockのIDは0を必ず用意して、どれかのClockにDefaultがチェックされていなければいけません。

XSAファイルの生成

Tcl Consoleから次のようにコマンドを実行します。

write_hw_platform -include_bit ultra96v2_platform.xsa

前回、アプリケーションを作成したときはVivadoのExport HardwareをクリックしてXSAを作成しましたがこのXSAではFPGAでアクセラレーションできるPlatformを作成することが出来ないので注意しましょう。

Platformの生成

新しいXSAファイルでPlatformを生成するとOpenCLを選択できるようになります。

次回予告

次回は「FPGAアクセラレーションするプロジェクト」を勉強しましょう。

]]>
2020-02-10T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>Let's Vitis(16) - FPGAアクセラレーション環境を構築</h1> <p>今回からFPGAでアクセラレーションするアプリケーションを作成していけるようにします。</p> <p>前回作成したのは単にCortexA53上で動作するアプリケーション環境です。</p> <p>しかも、環境はUltra96V2でアプリケーションを開発できる環境でした。</p> <p>この環境ではFPGAアクセラレーションすることはできません。</p> <h2>VitisでのFPGAアクセラレーションとは</h2> <p>VitisでFPGAアクセラレーションを行うにはOpenCL環境を開発できるようにしなければいけません。</p> <h2>Interfaceの設定</h2> <p>Interfaceを設定します。</p> <p>Interfaceはアクセラレーションで使用できるInterfaceを設定する必要があります。</p> <p>VivadoのWindow→Platform InterfaceでInterfaceを追加します。</p> <p>ClockのIDは0を必ず用意して、どれかのClockにDefaultがチェックされていなければいけません。</p> <p><img src="./files/vitis_tutorial_068.png" alt="" /></p> <h2>XSAファイルの生成</h2> <p>Tcl Consoleから次のようにコマンドを実行します。</p> <pre><code class="txt">write_hw_platform -include_bit ultra96v2_platform.xsa</code></pre> <p>前回、アプリケーションを作成したときはVivadoのExport HardwareをクリックしてXSAを作成しましたがこのXSAではFPGAでアクセラレーションできるPlatformを作成することが出来ないので注意しましょう。</p> <h2>Platformの生成</h2> <p>新しいXSAファイルでPlatformを生成するとOpenCLを選択できるようになります。</p> <p><img src="./files/vitis_tutorial_080.png" alt="" /></p> <h2>次回予告</h2> <p>次回は「FPGAアクセラレーションするプロジェクト」を勉強しましょう。</p>
Let's Vitis(15) - VitisでHello World urn:uuid:d38eea63-a931-0389-0590-dc76dff33015 Let's Vitis(15) - VitisでHello World

やっとVitisでアプリケーションを開発できる環境が整いました。

Application Projectをクリックして新規にプロジェクトを作成します。

Platformはultra96V2_platform[custom]を選択します。

DomainはLinux on psu_cortexa53を選択します。

New Application ProjectはHello Worldを選択します。

Finishをクリックすると下図のようにプロジェクトが生成されます。

ビルド

sample_app1_systemを右クリックしてBuild Projectを選択します。

生成物

ビルドが正常終了するとDebugディレクトリが生成されsd_cardディレクトリにSDカードに格納するファイルがコピーされます。

ここまでのまとめ

ここまでの勉強でUltra96V2で動作させることがアプリケーションでビルドできました。

実はここまでの手順だとアプリケーションをFPGAにアクセラレーションをさせることができないのです。

なぜなら、単にUltra96V2のARM上で動作するアプリをビルドしたからです。

次回以降はFPGAでアクセラレーションさせる勉強をしていきたいと思います。

次回予告

次回は「FPGAアクセラレーション環境を構築」を勉強しましょう。

]]>
2020-02-07T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>Let's Vitis(15) - VitisでHello World</h1> <p>やっとVitisでアプリケーションを開発できる環境が整いました。</p> <p>Application Projectをクリックして新規にプロジェクトを作成します。</p> <p><img src="./files/vitis_tutorial_082.png" alt="" /></p> <p>Platformはultra96V2_platform[custom]を選択します。</p> <p><img src="./files/vitis_tutorial_083.png" alt="" /></p> <p>DomainはLinux on psu_cortexa53を選択します。</p> <p><img src="./files/vitis_tutorial_084.png" alt="" /></p> <p>New Application ProjectはHello Worldを選択します。</p> <p><img src="./files/vitis_tutorial_085.png" alt="" /></p> <p>Finishをクリックすると下図のようにプロジェクトが生成されます。</p> <p><img src="./files/vitis_tutorial_086.png" alt="" /></p> <h2>ビルド</h2> <p>sample_app1_systemを右クリックしてBuild Projectを選択します。</p> <h2>生成物</h2> <p>ビルドが正常終了するとDebugディレクトリが生成されsd_cardディレクトリにSDカードに格納するファイルがコピーされます。</p> <h2>ここまでのまとめ</h2> <p>ここまでの勉強でUltra96V2で動作させることがアプリケーションでビルドできました。</p> <p>実はここまでの手順だとアプリケーションをFPGAにアクセラレーションをさせることができないのです。</p> <p>なぜなら、単にUltra96V2のARM上で動作するアプリをビルドしたからです。</p> <p>次回以降はFPGAでアクセラレーションさせる勉強をしていきたいと思います。</p> <h2>次回予告</h2> <p>次回は「FPGAアクセラレーション環境を構築」を勉強しましょう。</p>
Let's Vitis(14) - Platformの作成(続き) urn:uuid:42a180e6-fb26-3f26-4de6-834c9959ff1d Let's Vitis(14) - Platformの作成(続き)

前回、SDKを作成してインストールしたのでルートシステムのディレクトリが展開されています。

展開場所は下記のディレクトリです。

/opt/poky/3.0.1_ultra96v2/sysroots/aarch64-poky-linux

Platformの設定

Platformの作成で残っていたSysroot Directoryを次のディレクトリを指定します。

/opt/poky/3.0.1_ultra96v2/sysroots/aarch64-poky-linux

ここでQEMUは設定しません。

なぜなら、男ならエミュレータに頼るな!です。

Platformのビルド

Domain: Linux_domainの設定が終わったらExplorerのultra96v2_platformを右クリックして、Build Projectを選択します。

そうするとコンパイルが走って、正常に生成されるとexportディレクトリが生成され、Platformに必要なファイルがコピーされます。

これでようやくUltra96V2用のPlatformができあがりました。

次回予告

次回は「VitisでHello World」を勉強しましょう。

]]>
2020-02-05T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>Let's Vitis(14) - Platformの作成(続き)</h1> <p>前回、SDKを作成してインストールしたのでルートシステムのディレクトリが展開されています。</p> <p>展開場所は下記のディレクトリです。</p> <p><code>/opt/poky/3.0.1_ultra96v2/sysroots/aarch64-poky-linux</code></p> <h2>Platformの設定</h2> <p>Platformの作成で残っていたSysroot Directoryを次のディレクトリを指定します。</p> <pre><code class="txt">/opt/poky/3.0.1_ultra96v2/sysroots/aarch64-poky-linux</code></pre> <p><img src="./files/vitis_tutorial_027.png" alt="" /></p> <p>ここでQEMUは設定しません。</p> <p>なぜなら、男ならエミュレータに頼るな!です。</p> <h2>Platformのビルド</h2> <p>Domain: Linux_domainの設定が終わったらExplorerのultra96v2_platformを右クリックして、Build Projectを選択します。</p> <p>そうするとコンパイルが走って、正常に生成されるとexportディレクトリが生成され、Platformに必要なファイルがコピーされます。</p> <p>これでようやくUltra96V2用のPlatformができあがりました。</p> <h2>次回予告</h2> <p>次回は「VitisでHello World」を勉強しましょう。</p>