KV260アプリケーションの開発方法(1)
1.はじめに
前回はKV260上でSmartCamera
アプリのデモを動かして見たので、次はどのようにしてオリジナルのアプリを開発すれば良いかが気になります。
Xilinxからは以下の様な開発フローが提唱されているので、今回はその手順に沿って見ていきたいと思います。
2.準備
ここからは開発環境Vitis2021.1
をベースに話を進めていくので、事前にインストールしておきます。
PetaLinux2021.1も事前にインストールしておきます。
次にに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/project
にkv260_ispMipiRx_vcu_DP.xsa
という名称でXSAファイルが生成されます。
kv260-vitis/platforms/vivado/kv260_ispMipiRx_vcu_DP/project
にkv260_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ツールにパッチをあてる必要があります。
私の環境だと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_1
にkv260_ispMipiRx_vcu_DP.xpfm
という名称でアプリケーションプラットフォームファイルが生成されました。
5.オーバーレイをプラットフォームに統合する
次にアプリケーションプラットフォームにオーバーレイする機能を統合します。
ここではFPGAでアクセラレーションする機能をXCLBIN
形式で生成します。
アクセラレーション実行時は、このXCLBINがFPGAにロードされて実行されます。
リファレンスデザインのディレクトリに移動します。
$ cd kv260-vitis
オーバーレイをコンパイルしてプラットフォームに統合します。
$ make overlay OVERLAY=smartcam
処理が完了するとkv260-vitis/overlays/examples/smartcam/binary_container_1
にdpu.xclbin
という名称のオーバーレイプログラムが生成されます。
kv260-vitis/overlays/examples/smartcam/binary_container_1/link/int
にsystem.bit
という名称のビットファイルが生成されました。
6.終わりに
今回はKV260上でSmartCamera
アプリのデモを参考に、オリジナルのアプリ開発のプラットフォームとオーバーレイの開発フローについて確認しました。次回はPetaLinux側のフローについて見ていきます。
Discussion