[FPGA] Microblaze 만들기 on Arty-A7 - 2 (Vitis)

pikamon·2023년 3월 2일
0

FPGA

목록 보기
4/4
post-thumbnail

FPGA 보드에 microblaze 시스템을 만들어 올려보자. 프로세서 위에 Hello world Application을 실행시키는 것까지 해보자.


지난 글에서 Microblaze 하드웨어 시스템 구성 및 내보내기까지 진행하였다.
https://velog.io/@pikamon/FPGA-3

XSA 파일 내보내기까지 완료했다면, 이번엔 Vitis에서 해당 파일을 가져와서 Firmware Application을 만들어보자.

1. Vitis Platform 프로젝트 생성

Vitis 프로그램을 실행해서 File > New > Platform Project를 클릭한다.

Platform 프로젝트는 우리가 이전 글에서 만든 하드웨어 시스템 기반에서 프로그램을 실행하기 위한 BSP와 Runtime을 제공하는 프로젝트를 말한다.

프로젝트 이름을 적절히 입력한 후 Next를 누른다.

Create a new platfowm from hardware에서 Browse 버튼을 클릭한다.

지난 글에서 생성했던 Vivado 프로젝트 경로에 들어가서 XSA 파일을 선택한 후 열기를 누른다.

그리고 Finish를 누른다. 그러면 아래와 같이 Platform 프로젝트가 생성된다.

2. Platform 프로젝트 빌드

Platform 프로젝트를 오른쪽 클릭한 후 Build Project를 클릭하여 빌드한다.

그러면 빌드가 완료된다. 옆에 있던 Out-of-date도 사라진다.

3. Application 프로젝트 생성

Application 프로젝트는 실질적으로 우리가 하드웨어 위에서 실행할 Application 코드를 작성하고 빌드하는 프로젝트를 말한다.

Vitis에서 File > New > Application Project을 클릭한다.

Select a platform from repository에서 방금 만든 platform 프로젝트를 선택한 후 Next를 누른다.

프로젝트 이름을 적절히 입력한 후 Next를 누른다.

Domain에서 standalone on microblaze_0 선택 후 Next를 누른다.

만들 수 있는 예제 프로젝트가 많은데, Hello World 프로젝트를 선택한 후 Finish를 누른다.

4. 소스 수정

Application 프로젝트에서 hellworld.c 파일을 찾아서 연다.

그러면 위와 같이 main문 안에서 Hello World를 출력하는 코드를 볼 수 있다.

프로그램이 종료되지 않게 하기 위해 아래와 같이 cleanup_platform(); 윗 줄에 while (1); 를 추가해준다.

그리고 Ctrl + S 를 눌러 저장한다.

5. Application 프로젝트 빌드

Application 프로젝트를 오른쪽 클릭한 후 Build Project를 클릭하여 빌드한다.

그러면 빌드가 완료된다.

6. 보드에 올리기

FPGA 보드를 PC에 연결한다.
Arty-A7 보드는 USB로 UART랑 JTAG을 모두 할 수 있어 별도의 세팅이 필요하지 않다. (참고)

Vitis에서 벌레 모양 아이콘 오른쪽의 화살표를 눌러서 Debug Configurations를 누른다.

System Project Debug 를 더블 클릭하고, 생성된 디버그 configuration을 선택한 후 Debug 버튼을 누른다.

7. 실행 및 결과

Debug 버튼을 누르면 디버그용 화면으로 바뀌고, main문의 맨 첫 문장에서 멈춰있는 것을 볼 수 있다.

터미널 프로그램을 열고 Baudrate를 9600으로 설정해준다.

참고로 Baudrate가 9600인 이유는 우리가 지난 글에서 AXI UartLite를 생성할 때, Default Baudrate를 9600으로 설정해줬기 때문이다.

만약 바꾸고 싶으면 모듈에서 변경하면 된다. 또는 Application에서 Baudrate를 변경하는 API를 이용하면 된다고 한다.

Vitis에서 Resume 버튼을 눌러서 프로그램을 실행시킨다.

그러면 아래와 같이 터미널 프로그램에 문구가 출력되는 것을 볼 수 있다.

8. 코드 수정 후 재빌드

코드를 수정하려면 수정 후 재빌드를 해주어야 한다.

아래는 필자가 수정하여 출력한 결과이다.


후기

여러 번의 시행착오 끝에 겨우 성공할 수 있었다. 진행했던 내용들을 바탕으로 글까지 작성할 수 있었다. 안되는 거 붙잡고 있으면 자괴감 오지는데, 해결하고 나면 안도감이 든다.

참고

아래 페이지들을 참고하여 작성하였다.

https://blog.naver.com/chcbaram/222427182928
(좋은 글 감사합니다!)

profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs

1개의 댓글

comment-user-thumbnail
2023년 9월 18일

이 글을 보고 마음이 편안해졌습니다 감사합니다~

답글 달기