KV260アプリケーションの開発方法(1)


1.はじめに

前回はKV260上でSmartCameraアプリのデモを動かして見たので、次はどのようにしてオリジナルのアプリを開発すれば良いかが気になります。
Xilinxからは以下の様な開発フローが提唱されているので、今回はその手順に沿って見ていきたいと思います。

2.準備

ここからは開発環境Vitis2021.1をベースに話を進めていくので、事前にインストールしておきます。

https://zenn.dev/youkou/articles/ef516373db9b55

PetaLinux2021.1も事前にインストールしておきます。

https://zenn.dev/youkou/articles/623f166387918e

次ににGithubからKV260のリファレンスデザインをダウンロードしてきます。
今回はこのリファレンスデザインを参考に確認していきます。

$ git clone --recursive https://github.com/Xilinx/kv260-vitis.git

Vitisの環境を読み込みます。

$ source /tools/Xilinx/Vitis/2021.1/settings64.sh

3.ハードウエアプラットフォームの作成

ハードウエアプラットフォームを作成します。開発フロー図の左上側の作業にあたります。

ここではVIVADOのハードウエアデザインから、VITISに入力するXSA(Xilinx Support Archive)ファイルを生成します。

今回はSmartCameraで試してみたいと思います。
SmartCameraのハードウエアデザインがあるディレクトリに移動します。

$ kv260-vitis/platforms/vivado/kv260_ispMipiRx_vcu_DP

Vivadoプロジェクトを構築・ビルドしXSAファイルを作成します。

$ make xsa

処理が完了するとkv260-vitis/platforms/vivado/kv260_ispMipiRx_vcu_DP/projectkv260_ispMipiRx_vcu_DP.xsaという名称でXSAファイルが生成されます。

kv260-vitis/platforms/vivado/kv260_ispMipiRx_vcu_DP/projectkv260_ispMipiRx_vcu_DP.xprという名称でVIVADOプロジェクトファイルが生成されるので、ハードウエアを変更する場合は、VIVADOで直接編集してからXSAファイルを生成することも可能なようです。

4.アプリケーションプラットフォームの作成

次にVitis開発環境となるアプリケーションプラットフォームを作ります。

リファレンスデザインのあるディレクトリに移動します。

$ cd kv260-vitis

アプリケーションプラットフォームを生成をします。

$ make platform PFM=kv260_ispMipiRx_vcu_DP

ビルド時に以下の様なエラーが発生します。

ERROR: '2203260850' is an invalid argument. Please specify an integer value.
    while executing
"rdi::set_property core_revision 2203260850 {component component_1}"
    invoked from within
"set_property core_revision $Revision $core"
    (file "run_ippack.tcl" line 1956)
INFO: [Common 17-206] Exiting Vivado at Sat Mar 26 08:50:50 2022...
ERROR: [IMPL 213-28] Failed to generate IP.
INFO: [HLS 200-111] Finished Command export_design CPU user time: 16.21 seconds. CPU system time: 1.38 seconds. Elapsed time: 18.78 seconds; current allocated memory: 1.067 GB.
command 'ap_source' returned error code
    while executing
"source pp_pipeline_accel.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel \#0 [list source $arg] "

このエラーが出る場合ははXilinxツールにパッチをあてる必要があります。

https://support.xilinx.com/s/article/76960?language=ja

私の環境だとVitis2021.1なので、以下のコマンドでパッチをあてます。

$ sudo cp y2k22_patch-1.2.zip /tools/Xilinx/
$ cd /tools/Xilinx/
$ sudo unzip y2k22_patch-1.2.zip
$ export LD_LIBRARY_PATH=$PWD/Vivado/2021.1/tps/lnx64/python-3.8.3/lib/
$ sudo Vivado/2021.1/tps/lnx64/python-3.8.3/bin/python3 y2k22_patch/patch.py

再度アプリケーションプラットフォームを生成してみます。

$ make platform PFM=kv260_ispMipiRx_vcu_DP

無事に処理が完了しkv260-vitis/platforms/xilinx_kv260_ispMipiRx_vcu_DP_202110_1kv260_ispMipiRx_vcu_DP.xpfmという名称でアプリケーションプラットフォームファイルが生成されました。

5.オーバーレイをプラットフォームに統合する

次にアプリケーションプラットフォームにオーバーレイする機能を統合します。
ここではFPGAでアクセラレーションする機能をXCLBIN形式で生成します。
アクセラレーション実行時は、このXCLBINがFPGAにロードされて実行されます。

リファレンスデザインのディレクトリに移動します。

$ cd kv260-vitis

オーバーレイをコンパイルしてプラットフォームに統合します。

$ make overlay OVERLAY=smartcam

処理が完了するとkv260-vitis/overlays/examples/smartcam/binary_container_1dpu.xclbinという名称のオーバーレイプログラムが生成されます。
kv260-vitis/overlays/examples/smartcam/binary_container_1/link/intsystem.bitという名称のビットファイルが生成されました。

6.終わりに

今回はKV260上でSmartCameraアプリのデモを参考に、オリジナルのアプリ開発のプラットフォームとオーバーレイの開発フローについて確認しました。次回はPetaLinux側のフローについて見ていきます。