現象:如果在vivado中,添加了自己的custom IP,比如AXI4 IP,那么在Vitis(2024.1)編譯導出的原本的.xsa的時候,會構建build失敗。報錯代碼是:
"Compiling blank_test_ip..."
microblaze-xilinx-elf-gcc.exe: warning: (ildcard: linker input file unused because linking not done
microblaze-xilinx-elf-gcc.exe: error: (ildcard: linker input file not found: No such file or directory
microblaze-xilinx-elf-gcc.exe: warning: *.c): linker input file unused because linking not done microblaze-xilinx-elf-gcc.exe: error: *.c): linker input file not found: Invalid argument
make[2]: *** [Makefile:18: libs] Error 1
make[1]: *** [Makefile:46: psu_pmu_0/libsrc/blank_test_ip_v1_0/src/make.libs] Error 2
make: *** [Makefile:18: all] Error 2
原因:自動生成的Makefile文件有語法錯誤:
LIBSOURCES=($wildcard *.c)
OUTS = ($wildcard *.o)
$
應該在wildcard
括號外面。
解決辦法,有兩種(推薦(2)):
(1) 如果你已經有了.xsa: 導入.xsa后,在Vitis內點Search,將這個platform project里面所有($wildcard
替換成 $(wildcard
,重新build。要在vitis里面改,不要在原來的文件系統里面改,因為要改好多處,有些是原來文件系統里沒有的。
原來錯誤的自動生成的Makefile代碼改成:
LIBSOURCES=$(wildcard *.c)
OUTS = $(wildcard *.o)
(2) 如果你可以重新生成xsa:直接在Vivado里pack IP之后,在IP的Makefile里直接改一次。改的代碼和上述方法(1)一樣。upgrade IP,重新生成.xsa,就是正確的了。這個是問題根源。
后續:如果你按方法(1)改,雖然還會有無法生成image的問題,但不啟動系統的話問題不大
sdcard_gen --xpfm abcd.xpfm --sys_config abcd --bif abcd/Debug/system.bif --bitstream abcd/_ide/bitstream/mpsoc_preset_wrapper.bit --elf abcd/Debug/chip_test.elf,psu_cortexa53_0
creating BOOT.BIN using abcd/_ide/bitstream/mpsoc_preset_wrapper.bit
Error intializing SD boot data : Software platform XML error, sdx:qemuArguments value "abcd/qemu/pmu_args.txt" path does not exist abcd/qemu/pmu_args.txt, platform path abcd sdx:configuration , sdx:image standard
make: *** [makefile:37: package] Error 1
如果想解決這個問題,可以參照https://zhuanlan.zhihu.com/p/26294135403
方法(2)沒有后續問題。
Vitis到2024了居然還有這種低級bug…