3、Vitis工程创建与管理:创建Vitis应用工程、理解workspace与project结构、导入与导出工程设置

说实话,很多刚接触Vitis的朋友,第一反应就是——这玩意儿跟SDK有啥区别?

我当年从SDK切换到Vitis时,也懵了好一阵。界面变了,工程结构也变了。但用久了你会发现,Vitis其实更灵活,也更贴近现代嵌入式开发流程。

这一章,咱们就聊聊Vitis工程的那些事儿。怎么创建、怎么管理、怎么迁移。嗯,都是实战中绕不开的坑。

3.1 理解Workspace与Project结构

先搞清楚两个概念:Workspace 和 Project。

Workspace,说白了就是一个工作目录。你所有的工程、配置文件、编译产物,都放在这里面。我习惯把每个项目单独建一个Workspace,比如 D:/workspace/vitis/uart_demo。这样不同项目之间不会互相干扰。

Project呢,就是具体的应用工程。一个Workspace里可以放多个Project。比如你做一个摄像头项目,可能有 camera_app、camera_test、camera_boot 三个工程。

核心结构:

  • workspace/ — 根目录
  • workspace/.metadata/ — Eclipse配置信息,别手欠去删
  • workspace/project_name/ — 你的应用工程
  • workspace/project_name/src/ — 源代码
  • workspace/project_name/_ide/ — IDE自动生成的编译脚本
  • workspace/project_name/Debug/ — 编译产物

我曾经有个同事,把.metadata文件夹删了,结果整个Workspace打不开。嗯,血的教训。

3.2 创建Vitis应用工程

创建工程其实不难,但有几个关键点要注意。

3.2.1 从硬件平台创建

你首先得有一个硬件平台文件(.xsa)。这个文件是Vivado导出的,包含了PS配置、DDR信息、外设地址映射等。

操作步骤:

  1. 打开Vitis,选择Workspace路径
  2. 点击 File → New → Application Project
  3. 选择 Create a new platform from hardware (XSA)
  4. 导入你的.xsa文件
  5. 给工程起个名字,比如 led_control
  6. 选择模板(Hello World、Empty Application等)
  7. 点击Finish

小技巧: 我一般选Empty Application,然后自己加源文件。模板工程里有很多冗余代码,清理起来反而麻烦。

3.2.2 理解BSP与平台

创建工程时,Vitis会自动生成一个 Board Support Package (BSP)。这个BSP其实就是底层驱动库的集合。你想想看,如果没有BSP,你得自己写UART、GPIO、IIC的驱动,那得多累。

BSP的结构:

  • ps7_cortexa9_0/ — 处理器相关的驱动
  • standalone_*/ — 板级支持包配置
  • include/ — 头文件
  • lib/ — 编译好的库文件

我个人习惯在BSP设置里把 stdin 和 stdout 指向UART,这样printf就能直接输出到串口终端。调试起来方便很多。

3.3 导入与导出工程设置

实际项目中,你不可能一个人开发。团队协作时,工程设置的一致性就特别重要。

3.3.1 导出工程

Vitis支持导出为 Archive 格式(.zip)。

操作:

  • 右键工程 → Export → Archive File
  • 勾选你要导出的文件
  • 选择保存路径

导出的zip里包含了源码、BSP配置、链接脚本、编译选项。别人拿到后直接导入就能编译。

注意: 导出时记得勾选 Resolve project dependencies。否则导入后可能找不到依赖的库。

3.3.2 导入工程

导入就更简单了:

  1. File → Import → Existing Projects into Workspace
  2. 选择 Select archive file
  3. 浏览到你的.zip文件
  4. 点击Finish

导入后,Vitis会自动解压并重建工程结构。如果一切顺利,你直接点Build就能编译通过。

但这里有个坑——路径问题。我曾经导入一个工程,编译报错说找不到链接脚本。查了半天,发现是工程里引用了路径 C:/Users/xxx/workspace/...。换到另一台电脑上,路径变了,自然就找不到。

所以我的建议是:所有路径都用相对路径。在工程设置里,把 Library search path 和 Include path 都改成 ${workspace_loc:/...} 这种形式。

3.4 工程管理实战经验

最后分享几个我踩过的坑,希望能帮你少走弯路。

  • 不要手动修改 .metadata — 那是Vitis的配置缓存,改了容易出问题
  • 定期清理工程 — 右键 → Clean,能解决很多莫名其妙的编译错误
  • 版本控制 — 我习惯把 src/、BSP/、.project、.cproject 提交到Git,其他自动生成的文件忽略掉
  • 多工程管理 — 如果Workspace里工程太多,可以建文件夹分类。比如 app/、test/、boot/

避坑指南: 我曾经在导入工程后直接编译,结果报错说找不到 xparameters.h。后来发现是BSP没有重新生成。解决办法:右键BSP → Regenerate BSP Sources。嗯,这个操作我至少教过三个新人。

好了,关于Vitis工程创建与管理,就聊这么多。说白了,就是三个字——熟能生巧。多建几个工程,多导几次,自然就顺手了。

Vitis工程创建与管理 — 知识体系 Workspace Application Project BSP (板级支持包) .metadata 工程目录 编译产物 src/ 源码 _ide/ 脚本 Debug/ 输出 驱动库 配置 链接脚本 核心操作 创建工程 导入/导出 BSP管理

可可精品资料库