Inflearn brand logo image

인프런 커뮤니티 질문&답변

yunsuk977님의 프로필 이미지
yunsuk977

작성한 질문수

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

build project 관련 질문입니다!

작성

·

844

1

안녕하세요. 먼저 양질의 강의 제공해주신 점 감사드립니다. 잘 보고있습니다.

다름이 아니라 LAB 08 axi_lite 실습 도중 질문이 생겨 질문을 드립니다.

일단 저의 실습 환경을 말씀드리자면, 제가 현재 사용중인 FPGA board는 KC705 board이고, 맛비님이 vitis를 사용하시는 것과 달리 저는 xilinx SDK를 사용 중입니다. FPGA는 local 컴퓨터에 연결되어 있고, Vivado와 xilinx sdk는 hera 서버 컴퓨터의 linux 환경에서 실습을 진행하고 있습니다. Mobaxterm을 이용하여 서버컴퓨터와 로컬컴퓨터를 연결중인 상황입니다.

그래서 hardware target을 지정할 때 Xilinx hw_server 프로그램을 이용하여 서버컴퓨터에서 실행중인 vivado와 sdk가 로컬 컴퓨터에 연결된 FPGA KC 705 board를 인식할 수 있도록 실습환경을 세팅하고 있습니다.

이러한 상황에서 lab08 axi_lite 실습을 진행하는데, 마지막 build project가 진행되지 않습니다. 실행 로그를 캡쳐하여 첨부하겠습니다. 발생하는 오류는 elf file이 recipe for target을 failed한다고 뜨면서 오류가 발생하는 것 같은데, 이러한 오류에 대해서 아무리 구글링해도 해결방법을 찾을 수가 없네요.. 그래서 맛비님께 도움을 요청드리고자 질문을 올립니다..

아래는 제가 발생한 오류에 대한 설명입니다. 최대한 자세하게 설명해보겠습니다.

우선 발생하는 오류에 대한 console창의 안내문은 다음과 같습니다.

Makefile에서 디버깅 오류가 발생했다고 뜨는 부분은 아래와 같습니다.

hardware target connection은 대한 것은 아래와 같습니다.

JTAG를 통해 board가 인식되기는 하나, testconnection 또는 OK를 눌렀을 때 우측 상단에 뜨는 창처럼 'not reachable'하다고 뜹니다. Connection에 대한 SDK log는 아래와 같구요. SDK에서 FPGA board를 인식하는 것 같기는 합니다.

build project를 실패하고나서 그냥 run 해보면 아래와 같은 SDK log가 뜹니다. 아래 log를 보면 SDK에서 FPGA를 인식하는 것 같기는 하구요..

제가 run한 C code는 맛비님이 제공해주신 코드에서 sleep만 주석처리 한 것입니다. sleep을 인식을 못하는 것 같더라고요.. 이것도 이유를 잘 모르겠습니다.

최대한 오류가 발생하는 것에 대해서 자세하게 적었는데 혹시 이 상황의 해결에 대한 조언을 구할 수 있었으면 좋겠습니다. 혹시 제가 추가로 맛비님께 보여드려야 하는 것이라든지 아니면 제가 해봐야하는 것들이 있다면 알려주시면 정말 감사하겠습니다.

 

+추가) 아 실수로 오류 관련 사진 하나를 더 안올렸습니다! 함께 첨부합니다!

+ 수정 2) 버전 적는 것을 까먹어서 추가합니다. vivado sdk 모두 2018.3 버전입니다!

 

답변 1

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

사용하시는 FPGA 보드가, Zynq 대신, kintex 계열로 확인이 되구요.

첫번째 저의 질문은 8장까지 오시면서, Microblaze 로 전부 다 따라하셨는지 궁금합니다.

 

Microblaze 는 잘 모르지만, 답변을 달아 보겠습니다.

(보드의 차이에서 오는 Error 는 제가 정확한 답변을 드리기 어렵다. 라는 점은 양해를 부탁드립니다.)

1. Sleep 함수에서의 에러

Vitis 에서 사용한 C code 를 SDK 에서 사용 가능하다 생각하구요. 

sleep 함수를 사용하는 header 만 추가된다면 해결이 가능하지 않을까 생각합니다.

https://stackoverflow.com/questions/14818084/what-is-the-proper-include-for-the-function-sleep

다음 링크를 보시면, 다음 header 를 추가해보세요.

#include <unistd.h>

(안해봐서 잘 모르겠지만, header 만 추가된다면 해결될 것 같아요.)

 

2. Makefile 의 error

8장까지 잘 따라오셨다 가정하고 답변 드리면,

microblaze 에서도 SW 를 올리기위한 메모리 공간 (Code section 이고, .text 영역임.)이 필요합니다. 

에러 문구를 보면,

fit 이 안된다 + .text + 88848 bytes 라는 문구로 짐작했을때, code section 부분의 크기가 부족해서 안올라가지 않을까? 생각합니다.
그래서, microblaze 에서 사용하기 위한 Memory size 를 키워야 하지 않을까 라는 생각이 듭니다.

두가지가 보장되어야 한다 생각합니다.

1. microblaze 사용시의 물리적 RAM (아마도 BRAM 을 사용하지 않을까 생각되는데) 늘려본다. (방법은 찾아보기)

2. sdk 에서 linker script 파일 (lscript.ld) 의 메모리 영역을 키워본다. (방법은 찾아보기)

해당 솔루션의 근거는 다음 링크의 내용과 같습니다.

https://japan.xilinx.com/html_docs/xilinx2017_1/SDK_Doc/index.html?q=/html_docs/xilinx2017_1/SDK_Doc/SDK_tasks/task_generatinglinkerscriptforapp_advancedtab.html

적용해보시고 알려주세요 :)

 

 

yunsuk977님의 프로필 이미지
yunsuk977
질문자

안녕하세요. 빠르게 답변주셔서 감사합니다!

맛비님이 말씀해주신대로 memory size가 부족해서 발생하는 문제였고, microblaze core memory size를 늘리니 해결되었습니다.

맛비님 질문에 답변해드리자면 처음 강의부터 KC705 board로 강의를 따라가고 있습니다. 디테일한 부분에서 강의와 다른 부분이 많지만 제 나름대로 방법을 찾아가면서 큰 flow를 따라가자는 생각으로 강의를 수강하고 있습니다.

감사합니다 :)

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

해결하셨다니 다행이에요 :)

FPGA 를 사용해보신 경험이 있으신가보군요.

microblaze 로 하실 생각을 대단하십니다.

즐공하세요 :)

 

yunsuk977님의 프로필 이미지
yunsuk977

작성한 질문수

질문하기