- Published on
Custom IP Vitis Compile Error 기록
- Authors
- Name
- JaeHyeok CHOI
- none
Failed to build the bsp sources for domain - standalone_domain 에러
커스텀 IP를 만들어서 Vitis App을 만들려던 와중 컴파일 에러가 떴다.
"Compiling ax_pwm..."
cc1.exe: fatal error: *.c: Invalid argument
compilation terminated.
make[2]: *** [Makefile:18: libs] Error 1
make[1]: *** [Makefile:46: ps7_cortexa9_0/libsrc/ax_pwm_v1_0/src/make.libs] Error 2
make: *** [Makefile:18: all] Error 2
Failed to build the bsp sources for domain - standalone_domain
Failed to generate the platform.
Reason: Failed to build the zynq_fsbl application.
invoked from within
"::tcf::eval -progress {apply {{msg} {puts $msg}}} {tcf_send_command tcfchan#0 xsdb eval s es {{platform active pwm_ip; platform generate }}}"
(procedure "::tcf::send_command" line 4)
invoked from within
"tcf send_command $::xsdb::curchan xsdb eval s es [list "platform active $PLATFORM_NAME; platform generate $target"]"
invoked from within
"if { $iswindows == 1 } {
set XSDB_PORT [lindex $argv 0]
set PLATFORM_NAME [lindex $argv 1]
set arglen [llength $argv]
set lastind..."
(file "C:/Xilinx/Vitis/2022.1\scripts\vitis\util\buildplatform.tcl" line 11)
에러 내용은 bsp 소스를 빌드하는 것에 실패했다는 것.
경로를 추적해보니, 내가 Custom 해준 pwm ip가 문제였다.
문제를 검색해본 결과 AMD에서 해결안을 내준 것이 있었다.
이 이슈는 주로 커스텀으로 만들어준 경우 Makefile의 경로가 문제될 수 있다는 것.
원본 Makefile
INCLUDEFILES=*.h
LIBSOURCES=*.c
OUTS = *.o
libs:
echo "Compiling myip"
$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
$(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS)
make clean
include:
${CP} $(INCLUDEFILES) $(INCLUDEDIR)
clean:
rm -rf ${OUTS}
수정
INCLUDEFILES=*.h
LIBSOURCES=*.c
OUTS = *.o
OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c)))
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}
하지만 이 해결책도 똑같은 원인만 내뱉을 뿐이었다.
그 중 cc1.exe: fata error: *.c invalid argument
에러에 대한 검색을 해보니 한 블로그에서 답을 얻을 수 있었다.
원인
Vitis에서 Custom IP를 사용할 경우, 빌드시에 이와 같은 오류가 빈번하게 발생한다고 한다. 특히, 다음의 환경에서다: Windows 10, Vivado 2022.02, Vitis 2022.2.0 (64-bit)
오류 내용
cc1.exe: fatal error: *.c: Invalid argument
compilation terminated.
make[2]: *** [Makefile:18: libs] Error 1
make[1]: *** [Makefile:46: ps7_cortexa9_0/libsrc/axi4_v1_0/src/make.libs] Error 2
make: *** [Makefile:18: all] Error 2
또한, 이렇게 되면 헤더파일들을 include 할 수 없다는 오류도 발생하게 된다.
해결책
주된 원인은 Makefile의 invalid argument 때문이다. Makefile의 argument가 잘못되어서 경로고 뭐고 전부 다 뒤틀린 것.
이렇게 되어 있는 Makefile을,
...
INCLUDEFILES=*.h
LIBSOURCES=*.c
...
아래와 같이 수정해 준다.
...
INCLUDEFILES=$(wildcard *.h)
LIBSOURCES=$(wildcard *.c *.cpp)
...
그러면 기적적으로 컴파일이 된다!