Посібник із використання Git з Unified Vitis IDE

Посібник із використання Git з Unified Vitis IDE
Посібник із використання Git з Unified Vitis IDE

Початок роботи з Git у Vitis IDE

Використання Git із новою «Unified Vitis» IDE, заснованою на VSCode, створює унікальні труднощі порівняно зі старою версією на основі Eclipse. Майстер імпорту/експорту проектів відсутній в останній версії, що спричиняє труднощі в ефективному керуванні контролем версій.

Метою цього посібника є вирішення проблем, які виникають під час використання Git у Vitis, включаючи обробку згенерованих файлів із абсолютними шляхами та забезпечення безперебійної співпраці між різними системами розробки. Ми розглянемо практичний робочий процес для ефективного керування вашими проектами Vitis за допомогою Git.

Команда опис
import vitis Імпортує Vitis API для програмної взаємодії з проектами Vitis.
client.set_workspace() Встановлює каталог робочої області для клієнта Vitis для керування файлами проекту.
client.create_platform_component() Створює новий компонент платформи в робочій області Vitis, використовуючи вказані параметри обладнання та ОС.
platform.build() Запускає процес збірки для зазначеного компонента платформи у Vitis.
client.create_app_component() Створює новий компонент програми, пов’язаний із вказаним компонентом платформи у Vitis.
comp.import_files() Імпортує необхідні файли з вихідного каталогу в компонент програми Vitis.
os.makedirs() Створює вказану структуру каталогів, включаючи всі необхідні батьківські каталоги.
vitis -s tools/build_app.py Запускає вказаний сценарій Python за допомогою інтерфейсу командного рядка Vitis для налаштування проекту.
echo "build-vitis/" >>echo "build-vitis/" >> .gitignore Додає каталог збірки до файлу ігнорування Git, щоб виключити його з контролю версій.
git commit -m Закріплює поетапні зміни до локального сховища Git із вказаним повідомленням про фіксацію.

Пояснення сценаріїв автоматизації Vitis

Перший скрипт автоматизує налаштування проекту Vitis за допомогою Python. Вона починається з імпорту необхідних модулів, зокрема vitis і os. Потім він визначає кореневий шлях і створює каталог збірки, якщо він не існує за допомогою os.makedirs(). Сценарій встановлює очікувані шляхи для файлу XSA та основного вихідного каталогу. Потім він створює клієнт Vitis і встановлює робочу область для новоствореного каталогу збірки. Компонент платформи створюється за допомогою client.create_platform_component(), вказуючи конфігурацію обладнання, ОС і ЦП. Після створення компонента платформи створюється компонент програми, який пов’язується з компонентом платформи. Нарешті необхідні файли імпортуються в проект Vitis, і компонент збирається.

Другий сценарій — це сценарій оболонки, який ініціалізує проект Vitis і налаштовує інтеграцію Git. Він визначає кореневий шлях і каталог збірки, створюючи каталог, якщо він не існує. Потім сценарій запускає сценарій Python за допомогою vitis -s tools/build_app.py для автоматизації налаштування проекту. Після виконання сценарію Python сценарій оболонки встановлює репозиторій Git шляхом переходу до кореневого каталогу та ініціалізації Git за допомогою git initі додавання каталогів збірки до .gitignore файл. Він етапує відповідні файли з git add і фіксує їх у сховищі з git commit -m. Цей підхід гарантує, що каталоги збірки виключаються з контролю версій, водночас відстежуючи необхідні файли проекту.

Автоматизація налаштування проекту Vitis за допомогою Python

Сценарій Python для налаштування проекту Vitis та інтеграції Git

import vitis
import os

ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
VITIS_BUILD_DIR_PATH = os.path.join(ROOT_PATH, "build-vitis")
os.makedirs(VITIS_BUILD_DIR_PATH, exist_ok=True)
EXPECTED_XSA_FILE_PATH = os.path.join(ROOT_PATH, "build-vivado", "mydesign.xsa")
COMPONENT_NAME = "MyComponent"
MAIN_SRC_PATH = os.path.join(ROOT_PATH, "src")

client = vitis.create_client()
client.set_workspace(path=VITIS_BUILD_DIR_PATH)

PLATFORM_NAME = "platform_baremetal"
platform = client.create_platform_component(
    name=PLATFORM_NAME,
    hw=EXPECTED_XSA_FILE_PATH,
    os="standalone",
    cpu="mycpu"
)

platform = client.get_platform_component(name=PLATFORM_NAME)
status = platform.build()

comp = client.create_app_component(
    name=COMPONENT_NAME,
    platform=os.path.join(VITIS_BUILD_DIR_PATH, PLATFORM_NAME, "export", PLATFORM_NAME, f"{PLATFORM_NAME}.xpfm"),
    domain="mydomainname"
)

comp = client.get_component(name=COMPONENT_NAME)
status = comp.import_files(
    from_loc=MAIN_SRC_PATH,
    files=["CMakeLists.txt", "UserConfig.cmake", "lscript.ld", "NOTUSED.cpp"],
    dest_dir_in_cmp="src"
)

comp.build()

Управління керуванням джерелом у проектах Vitis

Сценарій оболонки для оптимізації ініціалізації проекту Vitis і керування джерелами

#!/bin/bash

ROOT_PATH=$(pwd)
VITIS_BUILD_DIR_PATH="$ROOT_PATH/build-vitis"
mkdir -p "$VITIS_BUILD_DIR_PATH"
EXPECTED_XSA_FILE_PATH="$ROOT_PATH/build-vivado/mydesign.xsa"
COMPONENT_NAME="MyComponent"
MAIN_SRC_PATH="$ROOT_PATH/src"

vitis -s tools/build_app.py

# After running the Python script, set up Git repository
cd "$ROOT_PATH"
git init
echo "build-vitis/" >> .gitignore
echo "build-vivado/" >> .gitignore
git add src/ tools/ .gitignore
git commit -m "Initial commit with project structure and scripts"

# Script end

Розуміння Vitis IDE та керування версіями

Одним з аспектів використання нової «Unified Vitis» IDE з Git є розуміння структури та компонентів проектів Vitis. Vitis IDE створює численні файли, багато з яких мають абсолютні шляхи, що ускладнює контроль версій. Ці файли містять конфігурації платформи, опис апаратного забезпечення та метадані IDE. Коли ці файли контролюються версіями без належної обробки, розробники можуть зіткнутися з такими проблемами, як помилки збирання через невідповідність шляхів у різних системах.

Щоб пом’якшити ці проблеми, загальною практикою є виключення папок, якими керує Vitis, із контролю версій. Натомість ключові файли конфігурації, такі як сценарії компонування, файли CMake та інші важливі файли проекту, копіюються вручну у відповідні місця, очікувані Vitis. Такий підхід гарантує, що лише необхідні файли контролюються версіями, зменшуючи ризик конфліктів і помилок під час співпраці з іншими розробниками. Крім того, використання сценаріїв автоматизації, таких як Python або сценаріїв оболонки, може оптимізувати цей процес, гарантуючи послідовність і відтворюваність налаштування проекту та керування файлами.

Поширені запитання та рішення щодо використання Git з Vitis IDE

  1. Як ініціалізувати репозиторій Git для проекту Vitis?
  2. Ви можете ініціалізувати репозиторій Git, перейшовши до кореня проекту та запустивши його git init. Додати необхідні файли в .gitignore щоб виключити непотрібні файли.
  3. Які файли слід включити в .gitignore для проекту Vitis?
  4. Включайте спеціальні папки IDE, наприклад build-vitis/ і build-vivado/ щоб уникнути автоматично створених файлів із керуванням версіями.
  5. Як я можу автоматизувати налаштування проекту Vitis?
  6. Використовуйте сценарій Python для автоматизації таких завдань, як створення компонентів платформи та імпорт необхідних файлів. Запустіть сценарій за допомогою vitis -s tools/build_app.py.
  7. Чому мені потрібно копіювати конфігураційні файли вручну?
  8. Vitis очікує, що певні конфігураційні файли будуть у певних місцях. Копіювання цих файлів вручну або за допомогою сценарію гарантує, що IDE знайде їх правильно.
  9. Як працювати з папками платформи та програм у Vitis?
  10. Виключіть ці папки з контролю версій і використовуйте сценарії для керування необхідними файлами, забезпечуючи послідовність і уникаючи конфліктів шляхів.
  11. Чи можу я редагувати вихідні файли безпосередньо у Vitis, використовуючи Git?
  12. Так, але переконайтеся, що ваші налаштування CMake вказують на правильні вихідні каталоги. Vitis може не правильно розпізнавати включення та імена для підсвічування синтаксису.
  13. Які переваги використання сценаріїв для налаштування проекту?
  14. Сценарії забезпечують узгоджену та повторювану настройку проекту, зменшуючи кількість помилок вручну та спрощуючи співпрацю в різних середовищах.
  15. Як я можу оновити налаштування проекту, якщо внесено зміни?
  16. Змініть свої сценарії автоматизації, щоб відобразити зміни, і повторно запустіть їх. Це гарантує правильне застосування всіх необхідних оновлень.
  17. Що мені робити, якщо я зіткнувся з помилками збирання через проблеми зі шляхом?
  18. Перевірте сценарії налаштування проекту та переконайтеся, що всі шляхи вказано правильно. Використовуйте відносні шляхи, де це можливо, щоб уникнути конфліктів.

Ключові моменти для ефективного контролю версій у Vitis IDE

Реалізація контролю версій за допомогою нової IDE Unified Vitis включає кілька важливих кроків. Щоб уникнути конфліктів і помилок, почніть із виключення створених Vitis папок із керування версіями. Натомість зосередьтеся на відстеженні основних конфігураційних файлів, таких як сценарії компонування, файли CMake та інші важливі компоненти проекту. Сценарії автоматизації, особливо ті, що написані на Python, можуть значно спростити цей процес, автоматизувавши налаштування проекту та гарантуючи, що всі необхідні файли знаходяться в правильному місці.

Автоматизуючи налаштування, ви можете забезпечити узгоджене середовище розробки в різних системах, зменшуючи ймовірність проблем, пов’язаних із шляхом. Такий підхід не тільки спрощує керування проектом, але й сприяє плавній співпраці між розробниками. Крім того, збереження вихідних файлів у їхніх оригінальних каталогах і використання CMake для вказівки на ці каталоги дозволяє легше редагувати та керувати версіями, уникаючи при цьому складнощів роботи з внутрішніми файловими структурами Vitis.

Підсумок робочого процесу для Vitis і Git

Інтеграція Git з Unified Vitis IDE вимагає стратегічного підходу для ефективного керування версіями. Виключивши папки, якими керує Vitis, і зосередивши увагу на основних конфігураційних файлах, розробники можуть уникнути поширених пасток, пов’язаних із абсолютними шляхами та метаданими IDE. Сценарії автоматизації ще більше покращують цей процес, забезпечуючи повторюване та послідовне налаштування проекту. Ці стратегії гарантують, що проекти Vitis залишаються керованими та спільними навіть у складних середовищах розробки.