エラー発生環境と状況
エラー発生環境
エラー発生状況
以下の記事では、VivadoでカスタムIPを作成後、Vitisでプラットフォームプロジェクトを作成し、アプリケーションプロジェクトのビルドを行いました。
このとき、「プラットフォームプロジェクトのビルド時」「アプリケーションプロジェクトのビルド時」の2箇所でエラーが発生しました。
以下では、エラー発生時の状況を詳述します。
エラー発生時の状況① プラットフォームプロジェクトのビルド時
カスタムIPを含むプラットフォームプロジェクトをビルドするときに、エラーが発生しました。
XSAファイルを読み込みプロジェクトを立ち上げた直後、Assistantウィンドウのdesign_1_wrapperをビルドすると、以下のエラーが発生しました。
エラー発生時ウィンドウ
エラー発生時コンソール
arm-none-eabi-ar: creating ../../../lib/libxil.a
arm-none-eabi-ar: *.o: Invalid argument
make[2]: *** [Makefile:19: libs] Error 1
make[1]: *** [Makefile:46: ps7_cortexa9_0/libsrc/led_config_v1_0/src/make.libs] Error 2
make: *** [Makefile:18: all] Error 2
make: Leaving directory '../workspace/design_1_wrapper/zynq_fsbl/zynq_fsbl_bsp'
/*略*/
c:/xilinx/vitis/2020.2/gnu/aarch32/nt/gcc-arm-none-eabi/x86_64-oesdk-mingw32/usr/bin/arm-xilinx-eabi/../../libexec/arm-xilinx-eabi/gcc/arm-xilinx-eabi/9.2.0/real-ld.exe: cannot find -lrsa
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:27: fsbl.elf] Error 1
Building the BSP Library for domain - standalone_ps7_cortexa9_0 on processor ps7_cortexa9_0
make --no-print-directory seq_libs
/*略*/
arm-none-eabi-ar: creating ../../../lib/libxil.a
arm-none-eabi-ar: *.o: Invalid argument
make[2]: *** [Makefile:19: libs] Error 1
make[1]: *** [Makefile:46: ps7_cortexa9_0/libsrc/led_config_v1_0/src/make.libs] Error 2
make: *** [Makefile:18: all] Error 2
Failed to build the bsp sources for domain - standalone_ps7_cortexa9_0
Failed to generate the platform.
エラー発生時の状況② アプリケーションプロジェクトのビルド時
後述する対処法①によって①のビルドエラーを回避した。しかし、その後、プラットフォームプロジェクト上で動作するアプリケーションプロジェクトをビルドするときに、別のエラーが発生しました。
エラー発生時ウィンドウ
エラー発生時コンソール
Generating bif file for the system project
generate_system_bif.bat 53820 ../workspace5/design_1_wrapper/export/design_1_wrapper/design_1_wrapper.xpfm standalone_ps7_cortexa9_0 ../workspace5/design5_system/Debug/system.bif
sdcard_gen --xpfm ../workspace5/design_1_wrapper/export/design_1_wrapper/design_1_wrapper.xpfm --sys_config design_1_wrapper --bif ../workspace5/design5_system/Debug/system.bif --bitstream E:/2021-06-06/xilinxPrj/blog/10_axi4_lite/workspace5/design5/_ide/bitstream/design_1_wrapper.bit --elf ../workspace5/design5/Debug/design5.elf,ps7_cortexa9_0
creating BOOT.BIN using ../workspace5/design5/_ide/bitstream/design_1_wrapper.bit
Error intializing SD boot data : Software platform XML error, sdx:qemuArguments value "design_1_wrapper/qemu/qemu_args.txt" path does not exist ../workspace5/design_1_wrapper/export/design_1_wrapper/sw/design_1_wrapper/qemu/qemu_args.txt, platform path ../workspace5/design_1_wrapper/export/design_1_wrapper, sdx:configuration design_1_wrapper, sdx:image standard
make: *** [makefile:39: package] Error 1
エラーの原因と回避方法
原因
原因について調べたところ、どうやら以下の記事で記載されている、makefileにおけるmake環境のバージョンの差異が原因のようです。
再現環境について調査できておりませんが、Windows版Vitis 2020.2のバージョンがあまり良くないようです。今後のVitisのアップデートで修正されることを願っています。
エラーを回避してビルドを行う対処法
対処法① プラットフォームプロジェクトのビルド時
上述した記事の内容に従い、makefileを以下のように修正しました。
修正が必要だったmakefileは、Vitis IDEの左のExplorerに含まれる、以下のパスに入っている2つのファイルです。
bspフォルダとzynq_fsbl_bspフォルダ内にある、カスタムIPのMakefileを修正しました。
カスタムIPが多いときは手におえませんが、今回は2つだけですので、地道に修正を行いました。
修正方法は、以下のようにMakefileにおける[OUTSの定義文]を変更しました。
#OUTS = *.o
OUTS = $(addsuffix .o, $(basename $(wildcard *.c)))
Makefileを修正すれば、以下のようにプラットフォームプロジェクトのビルドが通るようになります。
対処法② アプリケーションプロジェクトのビルド時
以下のDigilentのフォーラムでは、”you have just to re-export hardware after making the changes in the makefile and rebuild.(makefile変更後にハードウェアを再度エクスポートし、再ビルドしないといけない)”との報告があります。
そこで、以下のようにしてXSAファイルのアップデートを行いました。
プラットフォームプロジェクトを右クリックし、[Update Hardware Specification]を選択します。
新しいウィンドウが立ち上がります。ここで、workspaceを作成するときに読み込んだものと同じXSAファイルを選択します。
OKをクリックし暫く待つと、プラットフォームプロジェクトがアップデートされたことを示すウィンドウが立ち上がるので、確認したら[OK]をクリックします。
このアップデートを行うと、無事にアプリケーションプロジェクトの方もビルドが通るようになります。
本記事では、カスタムIPを含むプラットフォームプロジェクトで発生したmakefileのエラーの回避方法を解説しました。
少し手間がかかる方法なのでよりよい方法が見つかったり、最新のVitisのアップデートでエラーが回避されていた場合は、改めて追記します。
最後までご覧いただきありがとうございました。
コメント