vitis2023.1使用自定义IP时工程报错的解决办法

1. 问题描述

  • 在vitis2023.1使用自定义ip生成的工程会出现如下报错:
    在这里插入图片描述

2. 解决办法

  • 查看编译过程,定位报错位置
    在这里插入图片描述

    这个错误在整个编译过程中一共出现了三次,事实上这段程序在整个编译过程中一共编译了三次。

  • 搜索"Compiling axi_lite_slave…", 如下就是报错Makefile的位置,均是vitis为我自定义ip生成的Makefile.
    在这里插入图片描述
  • 自动生成的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 axi_lite_slave..."
    	$(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如下
    DRIVER_LIB_VERSION = 1.0
    COMPILER=
    ARCHIVER=
    CP=cp
    COMPILER_FLAGS=
    EXTRA_COMPILER_FLAGS=
    LIB=libxil.a
    
    CC_FLAGS = $(COMPILER_FLAGS)
    ECC_FLAGS = $(EXTRA_COMPILER_FLAGS)
    
    RELEASEDIR=../../../lib/
    INCLUDEDIR=../../../include/
    INCLUDES=-I./. -I$(INCLUDEDIR)
    
    SRCFILES:=$(wildcard *.c)
    
    OBJECTS = $(addprefix $(RELEASEDIR), $(addsuffix .o, $(basename $(wildcard *.c))))
    
    libs: $(OBJECTS)
    
    DEPFILES := $(SRCFILES:%.c=$(RELEASEDIR)%.d)
    
    include $(wildcard $(DEPFILES))
    
    include $(wildcard ../../../../dep.mk)
    
    $(RELEASEDIR)%.o: %.c
    	${COMPILER} $(CC_FLAGS) $(ECC_FLAGS) $(INCLUDES) $(DEPENDENCY_FLAGS) $< -o $@
    
    .PHONY: include
    include: $(addprefix $(INCLUDEDIR),$(wildcard *.h))
    
    $(INCLUDEDIR)%.h: %.h
    	$(CP) $< $@
    
    clean:
    	rm -rf ${OBJECTS}
    	rm -rf $(DEPFILES)
    
    

3. 总结

这个问题并不是一个bug,而是官方希望使用者自行为自定义IP编写驱动和Makefile。灵活性增加了,但同时也对使用者提出了更高的要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值