Kom godt i gang med Git i Vitis IDE
Brug af Git med den nye "Unified Vitis" IDE, baseret på VSCode, giver unikke udfordringer sammenlignet med den ældre Eclipse-baserede version. Import/eksportprojektguiden mangler i den seneste version, hvilket forårsager vanskeligheder med at administrere versionskontrol effektivt.
Denne vejledning har til formål at løse de problemer, du støder på, mens du bruger Git i Vitis, herunder håndtering af genererede filer med absolutte stier og sikring af glat samarbejde på tværs af forskellige udviklingssystemer. Vi vil udforske en praktisk arbejdsgang til at administrere dine Vitis-projekter effektivt med Git.
Kommando | Beskrivelse |
---|---|
import vitis | Importerer Vitis API for at interagere med Vitis-projekter programmatisk. |
client.set_workspace() | Indstiller arbejdsområdebiblioteket for Vitis-klienten til at administrere projektfiler. |
client.create_platform_component() | Opretter en ny platformskomponent i Vitis-arbejdsområdet ved hjælp af specificerede hardware- og OS-parametre. |
platform.build() | Udløser byggeprocessen for den angivne platformskomponent i Vitis. |
client.create_app_component() | Opretter en ny applikationskomponent knyttet til den angivne platformskomponent i Vitis. |
comp.import_files() | Importerer nødvendige filer fra kildebiblioteket til Vitis-applikationskomponenten. |
os.makedirs() | Opretter den angivne mappestruktur, inklusive eventuelle nødvendige overordnede mapper. |
vitis -s tools/build_app.py | Kører det angivne Python-script ved hjælp af Vitis-kommandolinjegrænsefladen til at konfigurere projektet. |
echo "build-vitis/" >>echo "build-vitis/" >> .gitignore | Tilføjer build-mappen til Git ignore-filen for at udelukke den fra versionskontrol. |
git commit -m | Begår de trinvise ændringer til det lokale Git-lager med en specificeret commit-meddelelse. |
Forklaring af Vitis Automation Scripts
Det første script automatiserer opsætningen af et Vitis-projekt ved hjælp af Python. Det starter med at importere de nødvendige moduler, specifikt vitis og os. Den definerer derefter rodstien og opretter build-mappen, hvis den ikke eksisterer ved hjælp af os.makedirs(). Scriptet opsætter de forventede stier til XSA-filen og hovedkildebiblioteket. Dernæst opretter den en Vitis-klient og indstiller arbejdsområdet til den nyoprettede build-mappe. Platformkomponenten oprettes med client.create_platform_component(), der specificerer hardware-, OS- og CPU-konfigurationen. Når platformskomponenten er bygget, oprettes en applikationskomponent og linkes til platformskomponenten. Til sidst importeres de nødvendige filer til Vitis-projektet, og komponenten bygges.
Det andet script er et shell-script, der initialiserer Vitis-projektet og sætter Git-integration op. Den definerer rodstien og build-mappen, og opretter mappen, hvis den ikke eksisterer. Scriptet kører derefter Python-scriptet vha vitis -s tools/build_app.py at automatisere projektopsætningen. Efter at Python-scriptet er kørt, opsætter shell-scriptet et Git-lager ved at navigere til rodbiblioteket, initialisere Git med git init, og tilføje build-mapper til .gitignore fil. Den iscenesætter de relevante filer med git add og forpligter dem til depotet med git commit -m. Denne tilgang sikrer, at build-mapperne er udelukket fra versionskontrol, mens de nødvendige projektfiler holdes sporet.
Automatisering af Vitis Project Setup med Python
Python-script til håndtering af Vitis-projektopsætning og 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()
Håndtering af kildekontrol i Vitis-projekter
Shell-script til at strømline Vitis-projektinitialisering og kildekontrol
#!/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
Forståelse af Vitis IDE og versionskontrol
Et aspekt ved at bruge den nye "Unified Vitis" IDE med Git involverer at forstå strukturen og komponenterne i Vitis-projekter. Vitis IDE genererer adskillige filer, mange med absolutte stier, hvilket komplicerer versionskontrol. Disse filer omfatter platformskonfigurationer, hardwarebeskrivelser og IDE-specifikke metadata. Når disse filer er versionskontrollerede uden korrekt håndtering, kan udviklere stå over for problemer som byggefejl på grund af uoverensstemmende stier på tværs af forskellige systemer.
For at afbøde disse problemer er en almindelig praksis at udelukke Vitis-administrerede mapper fra versionskontrol. I stedet kopieres vigtige konfigurationsfiler såsom linker-scripts, CMake-filer og andre vigtige projektfiler manuelt til de relevante placeringer, som Vitis forventer. Denne tilgang sikrer, at kun de nødvendige filer er versionskontrollerede, hvilket reducerer risikoen for konflikter og fejl ved samarbejde med andre udviklere. Derudover kan brug af automatiseringsscripts som Python eller shell-scripts strømline denne proces og sikre, at projektopsætning og filhåndtering er konsistente og reproducerbare.
Almindelige spørgsmål og løsninger til brug af Git med Vitis IDE
- Hvordan initialiserer jeg et Git-lager til et Vitis-projekt?
- Du kan initialisere et Git-lager ved at navigere til projektets rod og køre git init. Tilføj nødvendige filer til .gitignore for at udelukke uønskede filer.
- Hvilke filer skal inkluderes i .gitignore til et Vitis-projekt?
- Inkluder IDE-specifikke mapper som build-vitis/ og build-vivado/ for at undgå versionskontrollerende autogenererede filer.
- Hvordan kan jeg automatisere opsætningen af et Vitis-projekt?
- Brug et Python-script til at automatisere opgaver såsom oprettelse af platformskomponenter og import af nødvendige filer. Kør scriptet vha vitis -s tools/build_app.py.
- Hvorfor skal jeg kopiere konfigurationsfiler manuelt?
- Vitis forventer, at visse konfigurationsfiler er på bestemte steder. Kopiering af disse filer manuelt eller via script sikrer, at IDE'en finder dem korrekt.
- Hvordan håndterer jeg platforms- og applikationsmapper i Vitis?
- Udeluk disse mapper fra versionskontrol, og brug scripts til at administrere de nødvendige filer, for at sikre konsistens og undgå stikonflikter.
- Kan jeg redigere kildefiler direkte i Vitis, mens jeg bruger Git?
- Ja, men sørg for, at din CMake-opsætning peger på de korrekte kildemapper. Vitis genkender muligvis ikke inkluderer og navne korrekt til syntaksfremhævning.
- Hvad er fordelene ved at bruge scripts til projektopsætning?
- Scripts sikrer en ensartet og gentagelig projektopsætning, hvilket reducerer manuelle fejl og forenkler samarbejdet på tværs af forskellige miljøer.
- Hvordan kan jeg opdatere mit projektopsætning, hvis der foretages ændringer?
- Rediger dine automatiseringsscripts, så de afspejler ændringerne, og kør dem igen. Dette sikrer, at alle nødvendige opdateringer anvendes korrekt.
- Hvad skal jeg gøre, hvis jeg støder på byggefejl på grund af stiproblemer?
- Tjek dine projektopsætningsscripts og sørg for, at alle stier er korrekt specificeret. Brug relative veje, hvor det er muligt for at undgå konflikter.
Nøglepunkter for effektiv versionskontrol i Vitis IDE
Implementering af versionskontrol med den nye Unified Vitis IDE involverer flere kritiske trin. Start med at udelukke Vitis-genererede mapper fra versionskontrol for at undgå konflikter og fejl. Fokuser i stedet på at spore væsentlige konfigurationsfiler såsom linker-scripts, CMake-filer og andre vitale projektkomponenter. Automatiseringsscripts, især dem, der er skrevet i Python, kan strømline denne proces betydeligt ved at automatisere projektopsætningen og sikre, at alle nødvendige filer er på de korrekte placeringer.
Ved at automatisere opsætningen kan du sikre et ensartet udviklingsmiljø på tværs af forskellige systemer, hvilket reducerer sandsynligheden for sti-relaterede problemer. Denne tilgang forenkler ikke kun projektstyring, men letter også et smidigere samarbejde mellem udviklere. Derudover giver det at beholde kildefilerne i deres originale mapper og bruge CMake til at pege på disse mapper for lettere redigering og versionskontrol, samtidig med at man undgår kompleksiteten ved at håndtere Vitis' interne filstrukturer.
Afslutning af arbejdsgangen for Vitis og Git
At integrere Git med Unified Vitis IDE kræver en strategisk tilgang til at administrere versionskontrol effektivt. Ved at ekskludere Vitis-administrerede mapper og fokusere på væsentlige konfigurationsfiler kan udviklere undgå almindelige faldgruber forbundet med absolutte stier og IDE-specifikke metadata. Automatiseringsscripts forbedrer denne proces yderligere ved at give en gentagelig og ensartet projektopsætning. Disse strategier sikrer, at Vitis-projekter forbliver håndterbare og samarbejdende, selv i komplekse udviklingsmiljøer.