本帖最后由 FPGA技术 于 2025-1-11 09:45 编辑
1、问题描述
在vitis使用自定义ip生成的工程会出现如下报错:
2、解决办法 根据报错信息可知,是自定义IP库里的makefile文件导致编译报错。在硬件平台工程中有三个自定义IP库,对应有三个自定义IP的makefile文件。 Makefile 文件在硬件平台工程中有三处,它们的路径分别是:
1、 vitis\system_wrapper\hw\drivers\breath_led_ip_v1_0\src
2、 vitis\system_wrapper\hw\drivers\breath_led_ip_v1_0\srcvitis\system_wrapper\ps7_cortexa9_0\standalone_ps
7_cortexa9_0\bsp\ps7_cortexa9_0\libsrc\breath_led_ip_v1_0\src
3、 vitis\system_wrapper\zynq_fsbl\zynq_fsbl_bsp\ps7_cortexa9_0\libsrc\breath_led_ip_v1_0\src
自动生成的Makefile如下,熟悉Makefile应该能看出了这个Makefile是个半成品,官方意图很明显,是希望使用者自己编写自定义ip的驱动和Makefile,使用者应该具备为自定义ip编写驱动和Makefile的能力,所以vitis没有再像sdk一样为用户编写能够编译通过的Makefile。 COMPILER= ARCHIVER= CP=cp COMPILER_FLAGS= EXTRA_COMPILER_FLAGS= LIB=libxil.a
RELEASEDIR=../../../lib INCLUDEDIR=../../../include INCLUDES=-I./. -I${INCLUDEDIR}
INCLUDEFILES=*.h LIBSOURCES=*.c OUTS = *.o
libs: echo "Compiling breath_led_ip..." $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS} make clean
include: ${CP} $(INCLUDEFILES) $(INCLUDEDIR)
clean: rm -rf ${OUTS}
解决办法 - 用户可以参考官方为他们其他模块编译的Makefile,事实上那些makefile都是通用的,直接复制过来将vitis为自定义ip生成的那三个半成品Makefile替换掉就行了。
通用的Makefile如下:
|