Guide till att använda Git med Unified Vitis IDE

Guide till att använda Git med Unified Vitis IDE
Guide till att använda Git med Unified Vitis IDE

Komma igång med Git i Vitis IDE

Att använda Git med den nya "Unified Vitis" IDE, baserad på VSCode, ger unika utmaningar jämfört med den äldre Eclipse-baserade versionen. Projektguiden för import/export saknas i den senaste versionen, vilket orsakar svårigheter att hantera versionskontroll effektivt.

Den här guiden syftar till att ta itu med de problem som uppstår när du använder Git i Vitis, inklusive hantering av genererade filer med absoluta sökvägar och säkerställa smidigt samarbete mellan olika utvecklingssystem. Vi kommer att utforska ett praktiskt arbetsflöde för att hantera dina Vitis-projekt effektivt med Git.

Kommando Beskrivning
import vitis Importerar Vitis API för att interagera med Vitis-projekt programmatiskt.
client.set_workspace() Ställer in arbetsytans katalog för Vitis-klienten för att hantera projektfiler.
client.create_platform_component() Skapar en ny plattformskomponent i Vitis-arbetsytan med hjälp av specificerade hårdvaru- och OS-parametrar.
platform.build() Utlöser byggprocessen för den angivna plattformskomponenten i Vitis.
client.create_app_component() Skapar en ny applikationskomponent kopplad till den angivna plattformskomponenten i Vitis.
comp.import_files() Importerar nödvändiga filer från källkatalogen till Vitis-applikationskomponenten.
os.makedirs() Skapar den angivna katalogstrukturen, inklusive alla nödvändiga överordnade kataloger.
vitis -s tools/build_app.py Kör det angivna Python-skriptet med hjälp av Vitis kommandoradsgränssnitt för att ställa in projektet.
echo "build-vitis/" >>echo "build-vitis/" >> .gitignore Lägger till byggkatalogen till Git ignore-filen för att utesluta den från versionskontroll.
git commit -m Bekräftar de stegvisa ändringarna till det lokala Git-förrådet med ett specificerat commit-meddelande.

Förklara Vitis Automation Scripts

Det första skriptet automatiserar installationen av ett Vitis-projekt med Python. Det börjar med att importera de nödvändiga modulerna, specifikt vitis och os. Den definierar sedan rotsökvägen och skapar byggkatalogen om den inte finns med os.makedirs(). Skriptet ställer in de förväntade sökvägarna för XSA-filen och huvudkällkatalogen. Därefter skapar den en Vitis-klient och ställer in arbetsytan till den nyskapade byggkatalogen. Plattformskomponenten skapas med client.create_platform_component(), som anger hårdvara, OS och CPU-konfiguration. När plattformskomponenten är byggd skapas en applikationskomponent och länkas till plattformskomponenten. Slutligen importeras de nödvändiga filerna till Vitis-projektet och komponenten byggs.

Det andra skriptet är ett skalskript som initierar Vitis-projektet och ställer in Git-integration. Den definierar rotsökvägen och byggkatalogen och skapar katalogen om den inte finns. Skriptet kör sedan Python-skriptet med hjälp av vitis -s tools/build_app.py för att automatisera projektinställningen. Efter att Python-skriptet körts, ställer skalskriptet upp ett Git-förråd genom att navigera till rotkatalogen, initialisera Git med git init, och lägga till byggkataloger till .gitignore fil. Det iscensätter relevanta filer med git add och binder dem till förvaret med git commit -m. Detta tillvägagångssätt säkerställer att byggkatalogerna utesluts från versionskontroll samtidigt som de nödvändiga projektfilerna spåras.

Automatisera Vitis Project Setup med Python

Python-skript för hantering av Vitis-projektinstallation och Git-integration

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()

Hantera källkontroll i Vitis-projekt

Skalskript för att effektivisera Vitis-projektinitiering och källkontroll

#!/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

Förstå Vitis IDE och versionskontroll

En aspekt av att använda den nya "Unified Vitis" IDE med Git innebär att förstå strukturen och komponenterna i Vitis-projekt. Vitis IDE genererar många filer, många med absoluta sökvägar, vilket komplicerar versionskontrollen. Dessa filer inkluderar plattformskonfigurationer, hårdvarubeskrivningar och IDE-specifika metadata. När dessa filer är versionskontrollerade utan korrekt hantering, kan utvecklare stöta på problem som byggfel på grund av felaktiga sökvägar över olika system.

För att mildra dessa problem är en vanlig praxis att utesluta Vitis-hanterade mappar från versionskontroll. Istället kopieras viktiga konfigurationsfiler som länkskript, CMake-filer och andra viktiga projektfiler manuellt till lämpliga platser som förväntas av Vitis. Detta tillvägagångssätt säkerställer att endast nödvändiga filer är versionskontrollerade, vilket minskar risken för konflikter och fel när man samarbetar med andra utvecklare. Dessutom kan användning av automatiseringsskript som Python eller skalskript effektivisera denna process, vilket säkerställer att projektinställningar och filhantering är konsekventa och reproducerbara.

Vanliga frågor och lösningar för att använda Git med Vitis IDE

  1. Hur initierar jag ett Git-förråd för ett Vitis-projekt?
  2. Du kan initiera ett Git-förråd genom att navigera till projektets rot och köra git init. Lägg till nödvändiga filer till .gitignore för att utesluta oönskade filer.
  3. Vilka filer ska ingå i .gitignore för ett Vitis-projekt?
  4. Inkludera IDE-specifika mappar som build-vitis/ och build-vivado/ för att undvika versionskontrollerande autogenererade filer.
  5. Hur kan jag automatisera installationen av ett Vitis-projekt?
  6. Använd ett Python-skript för att automatisera uppgifter som att skapa plattformskomponenter och importera nödvändiga filer. Kör skriptet med vitis -s tools/build_app.py.
  7. Varför måste jag kopiera konfigurationsfiler manuellt?
  8. Vitis förväntar sig att vissa konfigurationsfiler finns på specifika platser. Att kopiera dessa filer manuellt eller via skript säkerställer att IDE hittar dem korrekt.
  9. Hur hanterar jag plattforms- och applikationsmappar i Vitis?
  10. Uteslut dessa mappar från versionskontroll och använd skript för att hantera nödvändiga filer, för att säkerställa konsekvens och undvika sökvägskonflikter.
  11. Kan jag redigera källfiler direkt i Vitis när jag använder Git?
  12. Ja, men se till att din CMake-installation pekar på rätt källkataloger. Vitis kanske inte känner igen inkluderar och namn korrekt för syntaxmarkering.
  13. Vilka är fördelarna med att använda skript för projektinstallation?
  14. Skript säkerställer en konsekvent och repeterbar projektuppställning, vilket minskar manuella fel och förenklar samarbete mellan olika miljöer.
  15. Hur kan jag uppdatera min projektkonfiguration om ändringar görs?
  16. Ändra dina automatiseringsskript för att återspegla ändringarna och kör dem igen. Detta säkerställer att alla nödvändiga uppdateringar tillämpas korrekt.
  17. Vad ska jag göra om jag stöter på byggfel på grund av sökvägsproblem?
  18. Kontrollera dina projektinstallationsskript och se till att alla sökvägar är korrekt specificerade. Använd relativa vägar där det är möjligt för att undvika konflikter.

Nyckelpunkter för effektiv versionskontroll i Vitis IDE

Att implementera versionskontroll med den nya Unified Vitis IDE innebär flera viktiga steg. Börja med att utesluta Vitis-genererade mappar från versionskontroll för att undvika konflikter och fel. Fokusera istället på att spåra viktiga konfigurationsfiler som länkskript, CMake-filer och andra viktiga projektkomponenter. Automatiseringsskript, särskilt de som är skrivna i Python, kan avsevärt effektivisera denna process genom att automatisera projektinställningen och se till att alla nödvändiga filer finns på rätt plats.

Genom att automatisera installationen kan du säkerställa en konsekvent utvecklingsmiljö över olika system, vilket minskar sannolikheten för vägrelaterade problem. Detta tillvägagångssätt förenklar inte bara projektledning utan underlättar också smidigare samarbete mellan utvecklare. Att dessutom behålla källfilerna i sina ursprungliga kataloger och använda CMake för att peka på dessa kataloger möjliggör enklare redigering och versionskontroll, samtidigt som man undviker komplexiteten med att hantera Vitis interna filstrukturer.

Avsluta arbetsflödet för Vitis och Git

Att integrera Git med Unified Vitis IDE kräver ett strategiskt tillvägagångssätt för att hantera versionskontroll effektivt. Genom att utesluta Vitis-hanterade mappar och fokusera på viktiga konfigurationsfiler kan utvecklare undvika vanliga fallgropar i samband med absoluta sökvägar och IDE-specifik metadata. Automatiseringsskript förbättrar denna process ytterligare genom att tillhandahålla en repeterbar och konsekvent projektuppsättning. Dessa strategier säkerställer att Vitis-projekt förblir hanterbara och samarbetsvilliga, även i komplexa utvecklingsmiljöer.