임베디드를 좋아하는 조금 특이한 개발자?

[KV260][Vitis] pmod GPIO xsa 기반 Vitis IDE 개발 환경 구축 본문

FPGA/Vitis

[KV260][Vitis] pmod GPIO xsa 기반 Vitis IDE 개발 환경 구축

Gordon_ 2026. 10. 2. 07:55
반응형

- 개발 환경

Vitis 2026.01

- 이전 포스트

https://littlebitodd-developer.tistory.com/126

 

[FPGA][Vivado] Kira KV260 보드에서 GPIO를 구현을 위한 프로젝트 구성

- 개발 환경Vivado 2026.01- 소스 코드https://github.com/MainForm/kv260-pmod-gpio-hw GitHub - MainForm/kv260-pmod-gpio-hwContribute to MainForm/kv260-pmod-gpio-hw development by creating an account on GitHub.github.com1. 서론 저는 보드를 새

littlebitodd-developer.tistory.com

- 소스 코드

https://github.com/MainForm/kv260-pmod-gpio-sw

 

GitHub - MainForm/kv260-pmod-gpio-sw

Contribute to MainForm/kv260-pmod-gpio-sw development by creating an account on GitHub.

github.com


1. 서론

  이전 포스트에서는 Vivado를 통해 KV260의 PL(Programmable Logic)를 구성하고 하드웨어 정보가 있는 XSA 파일까지 생성하였습니다. 이번 포스트는 해당 XSA 파일를 기반으로 PS(Processing System)에서 제어하기 위한 프로그램을 개발하는 방법을 알아보겠습니다.

 

  AMD에서는 PS에 동작하기 위한 어플리케이션을 개발하는 방법을 2가지 제공하고 있습니다. 하나는 이번 포스트에서 실습하게 될 Vitis IDE를 통한 어플리케이션 개발이고, 또 다른 하나는 EDF를 통한 커스텀 리눅스를 통한 개발입니다. 2가지 방법 모두 적절히 원하는 어플리케이션의 개발 크기에 따라 선택하여 사용하면 됩니다.

-  Vitis IDE를 통한 어플리케이션의 개발

  개발 하려는 어플리케이션의 크기가 작고 RTOS와 같이 실시간이 요구되는 기능이 필요하다면 Vitis IDE를 이용하여 개발하여야 하빈다. 

-  EDF를 통한 커스텀 리눅스 빌드

  어플리케이션에서 다양한 라이브러리를 사용하여야 하는 경우와 GUI 어플리케이션 개발등이 필요한 경우 사용합니다. 또한, ROS와 같이 로봇 관련 개발을 할때도 사용됩니다.

 

2. Vitis IDE 개발 환경 구축

  Vitis IDE에서 개발하기 위해서는 Platform와 Application을 따로 생성하여야합니다. 따로 생성하는 이유는 하드웨어에 독립적인 Platform을 Application으로부터 독립적으로 나누어, Application 단독으로 다른 Platform에서도 동작 할 수 있도록 호환성을 높이기 위함입니다. 그러므로 Vitis IDE에서 Platform은 BSP(Board Support Package)와 같은 것이라고 생각해도 됩니다.

 

2.1. Vitis Platform 생성

 

개발 하려는 보드의 PL를 디자인한 XSA파일을 선택합니다. 만약 Vivado에서 XSA파일을 생성하지 않으신 분은 제가 Github에 배포하는 XSA파일이 있으니 해당 파일을 다운받으시기 바랍니다.

https://github.com/MainForm/kv260-pmod-gpio-hw/releases/tag/v1.0.0

 

Release v1.0.0 - KV260 PMOD GPIO Hardware Platform · MainForm/kv260-pmod-gpio-hw

v1.0.0 - KV260 PMOD GPIO Hardware Platform Initial release of the hardware platform for controlling a KV260 PMOD GPIO pin from the Zynq UltraScale+ MPSoC Processing System. Hardware Configuration ...

github.com

 

위 까지 따라하셨다면 Platform은 생성되었습니다. 

 

  생성한 Platform를 Build합니다.

 

2.2. Vitis Application 생성

 

 

2.2.1. Vitis Application 코드 추가

 

https://github.com/MainForm/kv260-pmod-gpio-sw/blob/master/src/kv260_gpio_test/src/main.c

#include "xgpio.h"
#include "xparameters.h"
#include "xstatus.h"
#include "xil_printf.h"
#include "sleep.h"

int main(void)
{
    XGpio Gpio;
    int Status;

    xil_printf("AXI GPIO LED Test Start\r\n");

    Status = XGpio_Initialize(&Gpio, XPAR_XGPIO_0_BASEADDR);
    if (Status != XST_SUCCESS) {
        xil_printf("GPIO initialization failed\r\n");
        return XST_FAILURE;
    }

    XGpio_SetDataDirection(&Gpio, 1, 0x0);

    while (1) {
        XGpio_DiscreteWrite(&Gpio, 1, 0x1);
        usleep(5000);   // 5 ms

        XGpio_DiscreteWrite(&Gpio, 1, 0x0);
        usleep(5000);   // 5 ms
    }

    return 0;
}

 

 

2.2.2. Vitis Application 디버깅

 

2.2.2. Vitis Application 출력

 제대로 GPIO가 출력되는 것을 확인할 수 있습니다.

 

 

3. 결론

  지금까지 하여 KIRA KV260 보드에서 하나의 어플리케이션까지 개발을 완료하였습니다. 하지만, KIRA KV260 보드가 제 활약을 하는 것은 EDF를 통한 커스텀 리눅스로 개발하는 것이 제 목적입니다. 이를 통해 PCAM 카메라를 연결하고 Yolo를 DSP로 추론하여 마지막으로 QT 어플리케이션으로 GUI로 결과를 출력하는 것이 하나의 개인 프로젝트로 생각하고 있습니다. 그러므로 다음은 KIRA KV260 개발 보드에서 동작하는 커스텀 리눅스를 빌드하기 위해 EDF를 사용해 볼 예정입니다.

 

반응형