2021년 8월 14일 토요일

1.5.2 스타일 시트를 사용하여 로그인 화면 만들기

 다음으로 다음 단계를 사용하여 로고를 추가합니다.

  1. 상단 패널과 수직 스페이서 사이에 Horizontal Layout을 추가하여 로고의 컨테이너 역할을 합니다.
  2. 수평 레이아웃을 추가한 후에는 레이아웃이 높이가 너무 얇아서(거의 0 높이) 위젯을 추가할 수 없다는 것을 알게 될 것입니다. 이는 레이아웃이 비어 있고 그 아래의 수직 스페이서에 의해 높이가 0이 되기 때문입니다. 이 문제를 해결하기 위해 위젯이 레이아웃에 추가될 때까지 세로 여백(layoutTopMargin 또는 layoutBottomMargin)을 일시적으로 더 크게 설정할 수 있습니다.

  3. 방금 만든 가로 레이아웃에 label을 추가하고 이름을 logo로 바꿉니다. 다음 스타일 시트에서 리소스 사용 섹션에서 로고로 사용하기 위해 레이블에 이미지를 삽입하는 방법에 대해 자세히 알아볼 것입니다. 지금은 텍스트 속성을 비우고 수평 정책 및 수직 정책 속성을 모두 고정으로 설정합니다. minimumSize 속성을 150 x 150으로 설정합니다.

  4. 레이아웃의 세로 여백을 아직 설정하지 않은 경우 다시 0으로 설정합니다.
  5. 이제 로고가 보이지 않는 것처럼 보이므로 다음 스타일 시트의 리소스 사용 섹션에서 이미지를 추가할 때까지 임시 스타일 시트를 배치하여 표시되도록 하겠습니다. 스타일 시트는 정말 간단합니다.

    << code >>

    border: 1px solid;


  6. UI는 다음과 유사해야 합니다.

1.5.1 스타일 시트를 사용하여 로그인 화면 만들기

 이전 예제에서 배운 모든 지식을 통합하고 가상의 운영 체제에 대한 로그인 화면을 만드는 방법을 배웁니다. 스타일 시트는 좋은 UI를 디자인하기 위해 마스터해야 하는 유일한 것이 아닙니다. Qt Designer의 레이아웃 시스템을 사용하여 위젯을 깔끔하게 배열하는 방법도 배워야 합니다.

  1. 작업을 시작하기 전에 그래픽 로그인 화면의 레이아웃을 디자인해야 합니다. 좋은 소프트웨어를 만들기 위해서는 기획이 매우 중요합니다. 다음은 로그인 화면이 어떻게 보이는지 보여주기 위해 만든 샘플 레이아웃 디자인입니다. 메시지를 명확하게 전달하는 한 다음과 같은 간단한 선 그리기로 충분합니다.

  2. 다시 Qt Designer로 돌아가십시오.
  3. 먼저 상단 패널에 위젯을 배치한 다음 그 아래에 로고와 로그인 양식을 배치합니다.
  4. 기본 창을 선택하고 너비와 높이를 각각 400과 300에서 800과 600으로 변경합니다. 모든 위젯을 배치할 더 큰 공간이 필요하기 때문입니다.
  5. 위젯 상자의 Display Widgets 아래에 있는 label을 클릭하여 Form편집기에 배치합니다.
  6. 레이블의 objectName 속성을 currentDateTime으로 변경하고 해당 text 속성을 2021년 08월 15일 일요일 오전 6시 20분과 같이 표시 목적으로만 현재 날짜 및 시간으로 변경합니다.

  7. 버튼 카테고리 아래의 PushButton을 클릭하여 Form편집기로 가져옵니다. 상단 패널에 두 개의 버튼이 있으므로 이 과정을 한 번 더 반복합니다. 두 버튼의 이름을 restartButton 및 shutdownButton으로 바꿉니다.

  8. Main window을 선택하고 양식 도구 모음에서 마우스를 가져갔을 때 Layout Vertical이라고 표시된 작은 아이콘 버튼을 클릭합니다. 위젯이 기본 창에 자동으로 정렬되는 것을 볼 수 있지만 아직 정확히 원하는 것은 아닙니다.

  9. 레이아웃 카테고리 아래의 Horizontal Layout 위젯을 클릭하고 메인 창으로 드래그하세요.
  10. 두 개의 Push Button과 텍스트 Label을 클릭하여 수평 레이아웃으로 드레그하여 옮깁니다. 세 개의 위젯이 가로 행으로 배열되는 것을 볼 수 있지만 세로로는 화면 중앙에 있습니다. 수평 배열은 거의 정확하지만 수직 위치는 완전히 벗어났습니다.
  11. Spacers 범주에서 Vertical Spacer를 클릭하고 끌어서 이전 단계에서 만든 수평 레이아웃 아래(빨간색 직사각형 윤곽 아래)에 놓습니다. 모든 위젯은 스페이서에 의해 맨 위로 밀려납니다.

  12. 텍스트 레이블과 두 버튼 사이에 Horizontal Spacer를 배치하여 서로 떨어져 있도록 합니다. 이렇게 하면 텍스트 레이블이 항상 왼쪽에 고정되고 버튼이 오른쪽에 정렬됩니다.

  13. 두 버튼의 Horizontal Policy 및 Vertical Policy 속성을 모두 Fixed로 설정하고 minimumSize 속성을 55 x 55로 설정합니다. 텍스트 대신 아이콘을 사용할 것이기 때문에 버튼의 text 속성을 공백으로 설정합니다. 
  14. UI는 다음과 유사해야 합니다.


1.4 기본 스타일 시트 사용자 정의

이전 레시피(1.3 Qt Designer에서 스타일시트 사용하기)에서 Qt Designer를 사용하여 위젯에 스타일 시트를 적용하는 방법을 배웠습니다. 몇 가지 다른 유형의 위젯을 만들고 학습을 위해 위젯의 스타일 속성을 변경하여 작업을 더 진행해 보겠습니다.

그러나 이번에는 위젯에 하나씩 스타일을 적용하지 않고 main window에 스타일 시트를 적용하고 다른 모든 위젯에 계층 구조를 상속하도록 하는 것이 스타일 시트를 장기적으로 유지 관리에 용이 합니다.

다음 예제에서는 캔버스에서 다양한 유형의 위젯 형식을 지정하고 스타일 시트에 일부 코드를 추가하여 모양을 변경합니다.

  1. 이전 레시피(1.3 Qt Designer에서 스타일시트 사용하기)에서 Push Button에 적용한 스타일 시트를 제거합니다. Push Button의 스타일 시트를 선택하고 styleSheet 속성 옆에 있는 작은 화살표 버튼을 클릭하여 스타일 시트를 제거합니다. 이 버튼은 속성을 기본값으로 되돌립니다.
  2. 위젯 상자에서 Form편집기로 line edit, combo box, horizontal slider, radio button, check box 위젯들을 하나씩 드래그하여 UI에 추가합니다.

  3. 간단하게 하기 위해 Object Inspector에서 menuBar, statusBar를 UI 삭제합니다. menuBar 및 statusBar를 선택하고 마우스 오른쪽 버튼을 클릭한 다음 제거를 선택합니다. 이제 UI가 다음과 유사해야 합니다.

  4. Form 편집기나 Object Inspector에서 MainWindow을 선택한 다음 마우스 오른쪽 버튼을 클릭하고 Change styleSheet를 선택하여 Edit Style Sheet 창을 엽니다. 스타일 시트에 다음을 삽입하십시오.

    << code >>

    border: 2px solid gray;

    border-radius: 10px;

    padding: 0 8px;

    background: yellow;


  5. 두꺼운 테두리와 함께 모든 것이 노란색으로 덮여 있는 UI를 볼 수 있습니다. 이는 앞의 스타일 시트에 선택기가 없기 때문입니다. 즉, 스타일이 계층 구조 아래까지 기본 창의 자식 위젯에 적용됩니다. 이를 변경하려면 다른 방법을 시도해 보겠습니다.

  6. 이번에는 PushButton만 앞의 코드에서 설명한 스타일을 가져오고 다른 모든 위젯은 기본 스타일로 되돌리겠습니다. UI에 푸시 버튼을 몇 개 더 추가하면 모두 동일하게 보일 것입니다.

    << code >>

    QPushButton {

    border: 2px solid gray;

    border-radius: 10px;

    padding: 0 8px;

    background: yellow;

    }


  7. 이것은 QPushButton 클래스를 사용하여 모든 위젯에 스타일을 적용하도록 선택기에 구체적으로 지시하기 때문에 발생합니다. 다음 코드와 같이 스타일 시트에서 이름을 언급하여 푸시 버튼 중 하나에만 스타일을 적용할 수도 있습니다.

    << code >>

    QPushButton#pushButton_3 {

    border: 2px solid gray;

    border-radius: 10px;

    padding: 0 8px;

    background: yellow;

    }



  8. 이 방법을 이해하면 스타일 시트에 다음 코드를 추가할 수 있습니다.

    << cdoe >>

    QPushButton {

    color: red;

    border: 0px;

    padding: 0 8px;

    background: white;

    }


    QPushButton#pushButton_2 {

    border: 1px solid red;

    border-radius: 10px;

    }


  9. 이 코드는 기본적으로 모든 푸시 버튼의 스타일과 pushButton_2 버튼의 일부 속성을 변경합니다. pushButton_3의 스타일 시트를 그대로 유지합니다. 이제 버튼은 다음과 같이 보일 것입니다.

    << code >>

    QPushButton {

    color: red;

    border: 0px;

    padding: 0 8px;

    background: white;

    }


    QPushButton#pushButton_2 {

    border: 1px solid red;

    border-radius: 10px;

    }


    QPushButton#pushButton_3 {

    border: 2px solid gray;

    border-radius: 10px;

    padding: 0 8px;

    background: yellow;

    }


  10. 첫 번째 스타일 시트 세트는 QPushButton 유형의 모든 위젯을 테두리와 빨간색 텍스트가 없는 흰색 직사각형 버튼으로 변경합니다. 두 번째 스타일 시트 세트는 pushButton_2라는 특정 QPushButton 위젯의 테두리만 변경합니다. pushButton_2의 배경색과 텍스트 색상은 각각 흰색과 빨간색으로 유지됩니다. 두 번째 스타일 시트 세트에서 재정의하지 않았기 때문에 적용할 수 있으므로 첫 번째 스타일 시트 세트에 설명된 스타일로 돌아갑니다. 모든 QPushButton 위젯에. 세 번째 스타일 시트 세트에서 Color 속성을 설정하지 않았기 때문에 세 번째 버튼의 텍스트도 빨간색으로 변경되었습니다.
  11. 다음 코드를 사용하여 범용 선택기를 사용하는 다른 스타일 시트 세트를 만듭니다.

    << code >>

    *{

    background: qradialgradient(cx: 0.3, cy: -0.4, fx: 0.3, fy: -0.4, radius: 1.35, stop: 0 #fff, stop: 1 #888);

    color: rgb(255, 255, 255);

    border: 1px solid #ffffff;

    }


    QPushButton {

    color: red;

    border: 0px;

    padding: 0 8px;

    background: white;

    }


    QPushButton#pushButton_2 {

    border: 1px solid red;

    border-radius: 10px;

    }


    QPushButton#pushButton_3 {

    border: 2px solid gray;

    border-radius: 10px;

    padding: 0 8px;

    background: yellow;

    }


  12. 범용 선택기는 유형에 관계없이 모든 위젯에 영향을 미칩니다. 따라서 앞의 스타일 시트는 모든 위젯의 배경에 그라디언트 색상을 적용하고 해당 텍스트를 흰색인 1픽셀 실선 윤곽선으로 흰색으로 설정합니다. 색상 이름을 쓰는 대신 rgb 함수(rgb(255, 255, 255)) 또는 16진수 코드(#ffffff)를 사용하여 색상 값을 지정할 수 있습니다.
  13. 이전과 마찬가지로 앞의 스타일 시트는 푸시 버튼에 영향을 주지 않습니다. 왜냐하면 우리는 이미 고유한 스타일을 부여했으며, 이는 범용 선택기에 설명된 일반 스타일을 재정의할 것입니다. Qt에서는 위젯에 영향을 미치는 하나 이상의 스타일이 있을 때 더 구체적인 스타일이 궁극적으로 사용됩니다.  이제 UI가 다음과 같이 표시됩니다.


1.3 Qt Designer에서 스타일시트 사용하기

 이 예에서는 스타일 시트와 리소스를 사용하여 프로그램의 모양과 느낌을 변경하고 보다 전문적으로 보이게 하는 방법을 배웁니다. Qt를 사용하면 웹 디자이너가 웹사이트를 장식하는 데 사용하는 CSS(Cascading Style Sheets)와 매우 유사한 Qt 스타일 시트라는 스타일 시트 언어를 사용하여 그래픽 사용자 인터페이스(GUI)를 장식할 수 있습니다.


  1. Qt Creator를 열고 새 프로젝트를 만듭니다. Qt Creator를 처음 사용하는 경우 New Project라는 버튼을 클릭하거나  File | New File or Project 클릭 합니다.
  2. Projects 창에서 Application을 선택하고 Qt Widgets Application을 선택합니다.

  3. 프로젝트 이름과 위치를 입력하라는 창이 나타납니다. 

  4. 프로젝트 이름과 위치를 지정하고Next을 여러 번 클릭하고 마침 버튼을 클릭하여 프로젝트를 생성합니다. 지금은 기본 설정을 그대로 사용하겠습니다. 프로젝트가 생성되면 가장 먼저 표시되는 것은 모드 선택기 패널이라고 하는 창 왼쪽에 여러개의 아이콘이 있는 패널 입니다. 

  5. 모드 선택기 패널 옆에 있는 사이드바 패널에서 나열된 모든 소스 파일을 볼 수 있습니다. 여기에서 편집할 파일을 선택할 수 있습니다. 이 경우 프로그램의 UI 디자인을 시작하려고 하기 때문에 Forms/mainwindow.ui을 클릭합니다.
  6. mainwindow.ui 파일을 두 번 클릭하면 다른 인터페이스가 갑자기 나타나는 것을 볼 수 있습니다. Qt Creator는 실제로 열려고 하는 파일에서 .ui 확장자를 감지했기 때문에 스크립트 편집기에서 UI 편집기(Qt Designer)로 전환합니다.  모드 선택기 패널에서 강조 표시된 버튼이 편집 버튼에서 디자인 버튼으로 변경되었음을 알 수 있습니다. 모드 선택기 패널의 상단에 있는 버튼 중 하나를 클릭하여 스크립트 편집기로 다시 전환하거나 다른 도구로 변경할 수 있습니다.

  7. 위젯 상자(Buttons 범주 아래)에서 Push Button을 Form편집기의 main window으로 끌어서 UI에 푸시 버튼을 추가해 보겠습니다. 푸시 버튼을 선택된 상태로 유지하면 창 오른쪽의 속성 편집기에서 이 버튼의 모든 속성을 볼 수 있습니다. 스크롤하여 styleSheet라는 속성을 찾습니다. 여기에서 위젯에 스타일을 적용할 수 있습니다. 위젯은 스타일 시트를 설정하는 방법에 따라 자식이나 손자에게 재귀적으로 상속되거나 상속되지 않을 수 있습니다. 또는 양식 편집기에서 UI의 위젯을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 스타일시트 변경...을 선택할 수 있습니다.

  8. styleSheet 속성의 입력 필드를 클릭하여 스타일 시트 코드를 직접 작성하거나 입력 필드 옆에 있는 … 버튼을 클릭하여 스타일 시트에 대한 코드를 작성할 수 있는 Edit Style Sheet 창을 열 수 있습니다. 창 상단에는 속성 이름이 기억나지 않는 경우 코딩을 시작하는 데 도움이 되는 Add Resource, Add Gradient, Add Color및 Add Font와 같은 여러 버튼이 있습니다. 스타일 시트 편집 창을 사용하여 간단한 스타일링을 시도해 보겠습니다.

  9. Add Color의 아래 화살표를 클릭하여 color를 선택하고 원하는 색상을 선택합니다.
  10. 스타일 시트 편집 창의 텍스트 필드에 코드 줄이 추가되었습니다. 제 경우에는 다음과 같습니다.

  11. OK 버튼을 클릭하면 Push Button의 텍스트가 빨간색으로 변경되어야 합니다.

이전 섹션에서 우리는 C++ 코딩을 통해 Qt 위젯에 스타일 시트를 적용하는 방법에 대해 논의했습니다. 대부분의 경우 프로그램의 UI 디자인을 담당하는 사람은 프로그래머가 아니라 사용자 친화적인 UI 디자인을 전문으로 하는 UI 디자이너입니다. 이 경우 UI 디자이너가 코드를 어지럽히지 않고 다른 도구로 프로그램의 레이아웃과 스타일 시트를 디자인하도록 하는 것이 좋습니다. Qt는 Qt Creator라는 올인원 편집기를 제공합니다.

Qt Creator는 스크립트 편집기, 컴파일러, 디버거, 프로파일러 및 UI 편집기와 같은 여러 도구로 구성됩니다. Qt Designer라고도 하는 UI 편집기는 디자이너가 코드를 작성하지 않고도 프로그램의 UI를 디자인할 수 있는 완벽한 도구입니다.



2021년 1월 18일 월요일

이클립스 설치 및 한글 패치

운영체제 정보 : Ubuntu 18.04.2

이클립스 설치 버전 : 2019-03

이클립스 2019-03 다운로드




 sudo apt-get install openjdk-8-jdk




운영체제 정보 : Ubuntu 16.04.1

이클립스 설치 버전 : 2019-12(4.14.0)

우분투 소프트웨어 설치 매니져에서 eclipse














한글 패치
https://godh.tistory.com/6 참고



Petalinux NTP 추가(Zturn)

1. 기본적으로 petalinux에서 제공해주고있다. 

$ vi /project-spec/meta-user/recipes-core/images/petalinux-image-full.bbappend

IMAGE_INSTALL_append = " ntp"

추가한다.

2. rootfs 설정

$ petalinux-config -c rootfs 

user packages --> [*] ntp

설정 후 빠져나간다.

3. rootfs 빌드

$ petalinux-build -c rootfs && petalinux-build



========================================================

1. 없을 경우 직접 설치함으로서 가능하지만 의존성의 문제를 잘 해결해야한다. 

2. petalinux에서 사용하는 Yocto 버전 확인

petalinux 설치 디렉토리로 이동하여 아래 명령을 이용하여 버전을 확인한다.

$find . -name poky.conf -print0 | xargs --null grep -HEi 'DISTRO_CODENAME =|DISTRO_VERSION ='


3. https://layers.openembedded.org/layerindex/branch/rocko/layer/meta-networking/ 사이트에 이동하여 NTP를 찾아 Yocto버전에 맞는 NTP의 ntp_%.bbappend 파일과 recipes-support/ntp/ntp_4.2.8p10.bb 파일을 

4. 


2021년 1월 13일 수요일

Ubuntu 20.04 에 Vivado 2018.04 (petalinux 2018.03)설치시 문제점 해결

방금 Ubuntu 20.04에 vivado를 설치했습니다.

웹 설치 프로그램 Java GUI 문제를 해결하려면 1 단계 Ubuntu 버전 이름을 20.04에서 18.04로 일시적으로 변경합니다.


sudo vi / etc / os-release>


NAME = "Ubuntu"
# VERSION = "20.04.1 LTS (Focal Fossa)"
VERSION = "18.04.4 LTS (Bionic Beaver)"


2 단계, libtinfo.so.5 오류 수정 :-


"응용 프로그램 별 초기화 실패 :"librdi_commontasks.so "파일을로드 할 수 없음 : libtinfo.so.5 : 공유
개체 파일을 열 수 없음 : 해당 파일 또는 디렉터리가 없습니다."

sudo apt 업데이트
sudo apt install libtinfo-dev
sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5



petalinux 2018  설치시 발생되는  python관련 오류는 

/var/lib/dpkg/status 파일을 수정함으로서 설치할수 있다.

파일 내용중 아래와 같은 부분을 찾을수 있다.

Package: python2

Status: install ok installed

Priority: optional

Section: python

Installed-Size: 136

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>

Architecture: amd64

Multi-Arch: allowed

Source: python-defaults

Version: 2.7.17-2ubuntu4

Replaces: python (<< 2.7.15-2), python-dev (<< 2.6.5-2)

Provides: python-ctypes, python-email, python-importlib, python-profiler, python-wsgiref

Depends: python2.7 (>= 2.7.17~rc1-1~), libpython2-stdlib (= 2.7.17-2ubuntu4)

Pre-Depends: python2-minimal (= 2.7.17-2ubuntu4)

.....

이부분을 복사하고 붙여넣기 한 다음 이름만 python으로 변경해준다.
Package: python




environment: line 311: ((: 10#30+ > 10#24: syntax error: operand expected (error token is "> 10#24")
environment: line 315: ((: 10#30+ < 10#24: syntax error: operand expected (error token is "< 10#24")

2021년 1월 6일 수요일

TI 6678 부트로더 만들기

  1.  장치에 연결 후 아래 파일(eeprom 이미지) 로드
    1. C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\eeprom\evmc6678l\bin\eepromwriter_evm6678l.out
  2. 메모리 브라우저를 이용하여 IBL 이미지 로드(0x0C000000)
    1. C:\ti\pdk_c667x_2_0_16\packages\ti\boot\ibl\src\make\bin\i2crom_0x51_c6678_le.bin
  3. 아래 경로에 i2crom_0x51_c6678_le.bin 파일의 이름을 app.bin으로 변경 후 복사
    1. C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\eeprom\evmc6678l\bin\
  4. run
  5. 와료 되면 장치 전원 OFF -> ON

부트로더에서 사용하는 파라미터 로드
  1. 장치 연결 후 아래 파일(i2cparam_0x51_c6678_le_0x500.out)로드
    1. C:\ti\pdk_c667x_2_0_16\packages\ti\boot\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out
  2. Gel파일 로드(i2cConfig.gel)
    1. 기본적으로 i2cConfig.gel 파일이지만 설정 변경이 필요하면 수정해준다.
    2. C:\ti\pdk_c667x_2_0_16\packages\ti\boot\ibl\src\make\bin\i2cConfig.gel
  3. run
  4. 아래와 같이 스크립트를 실행하고 콘솔창에서 엔터를 쳐준다.
    1. 메뉴 -> Scripts -> EVM c6678L IBL -> setConfig_c6678_main




2021년 1월 4일 월요일

TI 6678 이미지 NOR에 쓰기

생성된 이미지를 NOR메모리에 쓰기

  1. msys 툴 사용하여 이미지 생성(C:\MinGW\MinGW\msys\1.0\msys)
    1. msys를 실행후 경로를 D:\projects\MTTS\MCR\SCB\Image 이동한다.
    2. 명령을 실행한다. <설정 관련 파일  maptoolCfg_SCB_C6678_bypass_prelink참고>  $ python maptool.py maptoolCfg_SCB_C6678_bypass_prelink.json bypass-prelink
    3. D:\projects\MTTS\MCR\SCB\Image\images\app.out 파일을 app.bin으로 확장자를 변경하고 C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\nor\evmc6678l\bin 경로로 복사한다.
  2. 장치를 NO BOOT모드로 켠다.
  3. CCS -> GEL Files Load (evmc6678l.gel)
  4. 장치 연결
  5. 이미지 로드(C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\nor\evmc6678l\bin\norwriter_evm6678l.out)
  6. Memory Browser -> Load Memory의 app.bin파일을 로드한다. 로드 잘소는 DDR의 0x8000_0000
  7. 프로그램을 Run한다.
  8. 완료 후 전원을 끄고 NOR BOOT모드 변경 후 보드에 전원을 인가한다. 







2020년 10월 6일 화요일

EDMA

Tool 정보 : ccsv9

Board 정보 : EVM C6678 


사용 라이브러리 및 Products : 

Products : c667x PDK(2.0.16), SYS/BIOS (6.76.3.01), EDMA3 Low Level Driver

라이브러리 : 


시험 설명 

DDR3 메모리에 데이터를 기록해 놓고 MSMCSRAM 메모리로 DMA를 통한 데이터 전송을 시험하낟.

소스코드 위치

https://github.com/pcw1029/tms320C6678/tree/edma

설정(XGCONF)




























결과 화면





VITIS Git + Doxygen Config

 Doxygen Configure 1. Vitis 메뉴의 Window->Preference의 C/C++ -> Editor의 Documentation tool comments 기본 설정값을 Doxygen으로 변경 설정 후 함수 바로 위에서 /...