vitis这个bug直到2021.1还是没有解决,不知道新版本会不会解决。哎。。
现将临时解决方案记录如下:
当遇到自定义IP时,vitis在编译时会报下面这种错误。完全不知道原因。
"Compiling my_ip..."
arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument
arm-xilinx-eabi-gcc.exe: fatal error: no input files
compilation terminated.
首先在libsrc中找到自定义ip的文件夹。注意,在所有报错的目录里都要找到。一般包括
1. psu_cortexa53_0(cpu名字)/libsrc
2. zynqmp_fsbl/xxxxx/psu_cortexa53_0(cpu名字)/libsrc
3. zynqmp_pmufw/xxxxx/psu_cortexa53_0(cpu名字)/libsrc
找到其中的Makefile替换为
COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a
RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}
INCLUDEFILES=$(wildcard *.h)
LIBSOURCES=$(wildcard *.c *.cpp)
OUTS =*.o
OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c *.cpp)))
ASSEMBLY_OBJECTS = $(addsuffix .o, $(basename $(wildcard *.S)))
libs:
echo "Compiling myip"
$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS} ${ASSEMBLY_OBJECTS}
make clean
include:
${CP} $(INCLUDEFILES) $(INCLUDEDIR)
clean:
rm -rf ${OBJECTS} ${ASSEMBLY_OBJECTS}
按照上述方式,platform编译可以通过,但是在编译app时,依然会报下面的错误:
Error intializing SD boot data : Software platform XML error, sdx:qemuArguments value "zu_base/qemu/pmu_args.txt" path does not exist E:/proj/JSIT-JCS-2022/fpga/zcu15_rbmp/zu_sdk/zu_base/export/zu_base/sw/zu_base/qemu/pmu_args.txt, platform path E:/proj/JSIT-JCS-2022/fpga/zcu15_rbmp/zu_sdk/zu_base/export/zu_base, sdx:configuration zu_base, sdx:image standard
不要慌,仔细看这个报错。提示是缺少pmu_args.txt,那么按照他的路径提示,在该路径下建立这个文件即可。然后还会有个报错,提示缺少qemu_args.txt,同样的方法,在报错路径下建立该文本文件。
然后就OK了!!