将 Git 与 Unified Vitis IDE 结合使用的指南

将 Git 与 Unified Vitis IDE 结合使用的指南
将 Git 与 Unified Vitis IDE 结合使用的指南

在 Vitis IDE 中开始使用 Git

与旧的基于 Eclipse 的版本相比,将 Git 与基于 VSCode 的新“Unified Vitis”IDE 结合使用会带来独特的挑战。最新版本中缺少导入/导出项目向导,导致有效管理版本控制困难。

本指南旨在解决在 Vitis 中使用 Git 时遇到的问题,包括使用绝对路径处理生成的文件以及确保不同开发系统之间的顺利协作。我们将探索使用 Git 高效管理 Vitis 项目的实用工作流程。

命令 描述
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 使用 Vitis 命令行界面运行指定的 Python 脚本来设置项目。
echo "build-vitis/" >>echo "build-vitis/" >> .gitignore 将构建目录添加到 Git 忽略文件中,以将其排除在版本控制之外。
git commit -m 使用指定的提交消息将暂存的更改提交到本地 Git 存储库。

解释 Vitis 自动化脚本

第一个脚本使用 Python 自动设置 Vitis 项目。首先导入必要的模块,特别是 vitisos。然后,它定义根路径并创建构建目录(如果不存在) os.makedirs()。该脚本设置 XSA 文件和主源目录的预期路径。接下来,它创建一个 Vitis 客户端并将工作区设置为新创建的构建目录。平台组件是用以下命令创建的 client.create_platform_component(),指定硬件、操作系统和 CPU 配置。一旦构建了平台组件,就会创建应用程序组件并将其链接到平台组件。最后,将必要的文件导入到 Vitis 项目中,并构建组件。

第二个脚本是一个 shell 脚本,用于初始化 Vitis 项目并设置 Git 集成。它定义根路径和构建目录,如果目录不存在则创建该目录。然后该脚本使用以下命令运行 Python 脚本 vitis -s tools/build_app.py 自动化项目设置。 Python 脚本运行后,shell 脚本通过导航到根目录来设置 Git 存储库,并使用以下命令初始化 Git git init,并将构建目录添加到 .gitignore 文件。它暂存相关文件 git add 并将它们提交到存储库 git commit -m。这种方法可确保将构建目录排除在版本控制之外,同时跟踪必要的项目文件。

使用 Python 自动化 Vitis 项目设置

用于处理 Vitis 项目设置和 Git 集成的 Python 脚本

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 项目初始化和源代码控制的 Shell 脚本

#!/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 或 shell 脚本等自动化脚本可以简化此过程,确保项目设置和文件管理的一致性和可重复性。

将 Git 与 Vitis IDE 结合使用的常见问题和解决方案

  1. 如何初始化 Vitis 项目的 Git 存储库?
  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. 使用 Git 时可以直接在 Vitis 中编辑源文件吗?
  12. 是的,但请确保您的 CMake 设置指向正确的源目录。 Vitis 可能无法正确识别语法突出显示的包含内容和名称。
  13. 使用脚本进行项目设置有什么好处?
  14. 脚本可确保一致且可重复的项目设置,减少手动错误并简化不同环境之间的协作。
  15. 如果发生更改,如何更新我的项目设置?
  16. 修改您的自动化脚本以反映更改并重新运行它们。这可确保正确应用所有必要的更新。
  17. 如果由于路径问题而遇到构建错误,我该怎么办?
  18. 检查您的项目设置脚本并确保正确指定所有路径。尽可能使用相对路径以避免冲突。

Vitis IDE 中高效版本控制的要点

使用新的 Unified Vitis IDE 实施版本控制涉及几个关键步骤。首先从版本控制中排除 Vitis 生成的文件夹,以避免冲突和错误。相反,应重点跟踪基本的配置文件,例如链接器脚本、CMake 文件和其他重要的项目组件。自动化脚本,特别是用 Python 编写的脚本,可以通过自动化项目设置并确保所有必要的文件位于正确的位置来显着简化此过程。

通过自动化设置,您可以确保不同系统之间的开发环境一致,从而减少出现路径相关问题的可能性。这种方法不仅简化了项目管理,还促进了开发人员之间更顺畅的协作。此外,将源文件保留在其原始目录中并使用 CMake 指向这些目录可以更轻松地进行编辑和版本控制,同时避免处理 Vitis 内部文件结构的复杂性。

总结 Vitis 和 Git 的工作流程

将 Git 与 Unified Vitis IDE 集成需要采用战略方法来有效管理版本控制。通过排除 Vitis 管理的文件夹并专注于基本配置文件,开发人员可以避免与绝对路径和 IDE 特定元数据相关的常见陷阱。自动化脚本通过提供可重复且一致的项目设置进一步增强了此过程。这些策略确保 Vitis 项目即使在复杂的开发环境中也能保持可管理性和协作性。