vitis自定义IP编译报错解决方法

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了!!

你可能感兴趣的:(fpga开发)