Komme i gang med Git i Vitis IDE
Å bruke Git med den nye "Unified Vitis" IDE, basert på VSCode, byr på unike utfordringer sammenlignet med den eldre Eclipse-baserte versjonen. Import/eksportprosjektveiviseren mangler i den nyeste versjonen, noe som forårsaker problemer med å administrere versjonskontroll effektivt.
Denne veiledningen tar sikte på å løse problemene som oppstår mens du bruker Git i Vitis, inkludert håndtering av genererte filer med absolutte baner og sikre jevnt samarbeid på tvers av ulike utviklingssystemer. Vi vil utforske en praktisk arbeidsflyt for å administrere dine Vitis-prosjekter effektivt med Git.
Kommando | Beskrivelse |
---|---|
import vitis | Importerer Vitis API for å samhandle med Vitis-prosjekter programmatisk. |
client.set_workspace() | Angir arbeidsområdekatalogen for Vitis-klienten for å administrere prosjektfiler. |
client.create_platform_component() | Oppretter en ny plattformkomponent i Vitis-arbeidsområdet ved å bruke spesifiserte maskinvare- og OS-parametere. |
platform.build() | Utløser byggeprosessen for den angitte plattformkomponenten i Vitis. |
client.create_app_component() | Oppretter en ny applikasjonskomponent knyttet til den angitte plattformkomponenten i Vitis. |
comp.import_files() | Importerer nødvendige filer fra kildekatalogen til Vitis-applikasjonskomponenten. |
os.makedirs() | Oppretter den angitte katalogstrukturen, inkludert eventuelle nødvendige overordnede kataloger. |
vitis -s tools/build_app.py | Kjører det angitte Python-skriptet ved å bruke Vitis-kommandolinjegrensesnittet for å sette opp prosjektet. |
echo "build-vitis/" >>echo "build-vitis/" >> .gitignore | Legger byggekatalogen til Git ignore-filen for å ekskludere den fra versjonskontroll. |
git commit -m | Bestiller de trinnvise endringene til det lokale Git-depotet med en spesifisert commit-melding. |
Forklaring av Vitis Automation Scripts
Det første skriptet automatiserer oppsettet av et Vitis-prosjekt ved hjelp av Python. Det starter med å importere de nødvendige modulene, spesifikt vitis og os. Den definerer deretter rotbanen og oppretter byggekatalogen hvis den ikke eksisterer ved hjelp av os.makedirs(). Skriptet setter opp de forventede banene for XSA-filen og hovedkildekatalogen. Deretter oppretter den en Vitis-klient og setter arbeidsområdet til den nyopprettede byggekatalogen. Plattformkomponenten er opprettet med client.create_platform_component(), som spesifiserer maskinvare-, OS- og CPU-konfigurasjonen. Når plattformkomponenten er bygget, opprettes en applikasjonskomponent og kobles til plattformkomponenten. Til slutt importeres de nødvendige filene inn i Vitis-prosjektet, og komponenten bygges.
Det andre skriptet er et skallskript som initialiserer Vitis-prosjektet og setter opp Git-integrasjon. Den definerer rotbanen og byggekatalogen, og oppretter katalogen hvis den ikke eksisterer. Skriptet kjører deretter Python-skriptet ved hjelp av vitis -s tools/build_app.py for å automatisere prosjektoppsettet. Etter at Python-skriptet har kjørt, setter skallskriptet opp et Git-depot ved å navigere til rotkatalogen, initialisere Git med git init, og legge til byggekataloger til .gitignore fil. Den iscenesetter de relevante filene med git add og forplikter dem til depotet med git commit -m. Denne tilnærmingen sikrer at byggekatalogene blir ekskludert fra versjonskontroll samtidig som de nødvendige prosjektfilene spores.
Automatisering av Vitis-prosjektoppsett med Python
Python-skript for håndtering av Vitis-prosjektoppsett og Git-integrasjon
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()
Administrere kildekontroll i Vitis-prosjekter
Shell-skript for å strømlinjeforme Vitis-prosjektinitialisering og kildekontroll
#!/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å Vitis IDE og versjonskontroll
Et aspekt ved å bruke den nye "Unified Vitis" IDE med Git innebærer å forstå strukturen og komponentene til Vitis-prosjekter. Vitis IDE genererer mange filer, mange med absolutte baner, noe som kompliserer versjonskontroll. Disse filene inkluderer plattformkonfigurasjoner, maskinvarebeskrivelser og IDE-spesifikke metadata. Når disse filene er versjonskontrollerte uten riktig håndtering, kan utviklere møte problemer som byggefeil på grunn av feilaktige baner på tvers av forskjellige systemer.
For å redusere disse problemene er en vanlig praksis å ekskludere Vitis-administrerte mapper fra versjonskontroll. I stedet blir viktige konfigurasjonsfiler som linkerskript, CMake-filer og andre viktige prosjektfiler manuelt kopiert til de riktige stedene som forventes av Vitis. Denne tilnærmingen sikrer at kun de nødvendige filene er versjonskontrollerte, noe som reduserer risikoen for konflikter og feil ved samarbeid med andre utviklere. I tillegg kan bruk av automatiseringsskript som Python eller shell-skript effektivisere denne prosessen, og sikre at prosjektoppsett og filbehandling er konsistente og reproduserbare.
Vanlige spørsmål og løsninger for bruk av Git med Vitis IDE
- Hvordan initialiserer jeg et Git-depot for et Vitis-prosjekt?
- Du kan initialisere et Git-depot ved å navigere til prosjektroten og kjøre git init. Legg til nødvendige filer til .gitignore for å ekskludere uønskede filer.
- Hvilke filer skal inkluderes i .gitignore for et Vitis-prosjekt?
- Inkluder IDE-spesifikke mapper som build-vitis/ og 1. 3 for å unngå versjonskontrollerende autogenererte filer.
- Hvordan kan jeg automatisere oppsettet av et Vitis-prosjekt?
- Bruk et Python-skript for å automatisere oppgaver som å lage plattformkomponenter og importere nødvendige filer. Kjør skriptet med vitis -s tools/build_app.py.
- Hvorfor må jeg kopiere konfigurasjonsfiler manuelt?
- Vitis forventer at visse konfigurasjonsfiler er på bestemte steder. Kopiering av disse filene manuelt eller via skript sikrer at IDE finner dem riktig.
- Hvordan håndterer jeg plattform- og applikasjonsmapper i Vitis?
- Ekskluder disse mappene fra versjonskontroll og bruk skript for å administrere de nødvendige filene, for å sikre konsistens og unngå banekonflikter.
- Kan jeg redigere kildefiler direkte i Vitis mens jeg bruker Git?
- Ja, men sørg for at CMake-oppsettet peker til de riktige kildekatalogene. Vitis gjenkjenner kanskje ikke inkluderer og navn riktig for syntaksutheving.
- Hva er fordelene med å bruke skript for prosjektoppsett?
- Skript sikrer et konsistent og repeterbart prosjektoppsett, reduserer manuelle feil og forenkler samarbeid på tvers av ulike miljøer.
- Hvordan kan jeg oppdatere prosjektoppsettet mitt hvis det gjøres endringer?
- Endre automatiseringsskriptene dine for å gjenspeile endringene og kjør dem på nytt. Dette sikrer at alle nødvendige oppdateringer brukes riktig.
- Hva bør jeg gjøre hvis jeg støter på byggefeil på grunn av baneproblemer?
- Sjekk skriptene for prosjektoppsett og sørg for at alle stier er riktig spesifisert. Bruk relative veier der det er mulig for å unngå konflikter.
Nøkkelpunkter for effektiv versjonskontroll i Vitis IDE
Implementering av versjonskontroll med den nye Unified Vitis IDE innebærer flere kritiske trinn. Start med å ekskludere Vitis-genererte mapper fra versjonskontroll for å unngå konflikter og feil. Fokuser i stedet på å spore viktige konfigurasjonsfiler som linkerskript, CMake-filer og andre viktige prosjektkomponenter. Automatiseringsskript, spesielt de som er skrevet i Python, kan effektivisere denne prosessen betydelig ved å automatisere prosjektoppsettet og sikre at alle nødvendige filer er på riktig plassering.
Ved å automatisere oppsettet kan du sikre et konsistent utviklingsmiljø på tvers av forskjellige systemer, noe som reduserer sannsynligheten for sti-relaterte problemer. Denne tilnærmingen forenkler ikke bare prosjektledelsen, men forenkler også smidigere samarbeid mellom utviklere. I tillegg kan det å holde kildefilene i de originale katalogene og bruke CMake for å peke til disse katalogene for enklere redigering og versjonskontroll, samtidig som man unngår kompleksiteten ved å håndtere Vitis sine interne filstrukturer.
Avslutter arbeidsflyten for Vitis og Git
Å integrere Git med Unified Vitis IDE krever en strategisk tilnærming for å administrere versjonskontroll effektivt. Ved å ekskludere Vitis-administrerte mapper og fokusere på viktige konfigurasjonsfiler, kan utviklere unngå vanlige fallgruver knyttet til absolutte baner og IDE-spesifikke metadata. Automatiseringsskript forbedrer denne prosessen ytterligere ved å gi et repeterbart og konsistent prosjektoppsett. Disse strategiene sikrer at Vitis-prosjekter forblir håndterbare og samarbeidende, selv i komplekse utviklingsmiljøer.