当前位置: 首页 > news >正文

从 Vivado 2017.4 到 2025.2:FPGA 软硬件协同开发流程演变与全新 BSP 生成指南

从 Vivado 2017.4 到 2025.2:FPGA 软硬件协同开发流程演变与全新 BSP 生成指南

文章目录

  • 从 Vivado 2017.4 到 2025.2:FPGA 软硬件协同开发流程演变与全新 BSP 生成指南
    • 前言
    • 一、 开发流程核心差异对比
      • 核心改变解析
    • 二、 Vivado 2025.2 下如何生成与配置 BSP
      • 步骤 1:从 Vivado 2025.2 导出硬件 (XSA)
      • 步骤 2:启动 Vitis Unified IDE
      • 步骤 3:创建 Platform Component(平台组件)以生成 BSP
      • 步骤 4:配置 BSP 参数(等同于旧版 BSP Editor)
      • 步骤 5:创建 Application Component 并使用该 BSP
    • 三、 开发建议与总结

前言

在 Xilinx/AMD 的 FPGA 开发生态中,Vivado 2017.4 是一个经典的里程碑版本,至今仍有许多高校教学和工业界存量项目在使用。然而,随着器件架构的演进以及软件技术的发展,最新的Vivado 2025.2已经在开发工作流、底层数据交互格式以及嵌入式软件开发工具链上发生了深刻的变化。

最显著的变化莫过于彻底废弃了原有的 Xilinx SDK,转而全面推行Vitis 统一软件平台(在 2025.2 中表现为基于 VS Code 架构的 Vitis Unified IDE)。

本文将客观对比这两个版本在开发流程上的主要差异,并详细演示在 2025.2 版本中如何导出硬件并生成/配置板级支持包(BSP)。


一、 开发流程核心差异对比

为了让大家直观了解这几年的技术演进,我们首先将核心差异总结如下:

对比维度Vivado 2017.4Vivado 2025.2
嵌入式开发软件Xilinx SDK(基于传统 Eclipse 架构)Vitis Unified IDE(基于 VS Code/Theia 架构)
硬件描述文件格式.hdf(Hardware Definition File).xsa(Xilinx Support Archive) 统一压缩格式
工程组织架构直接的 Application 工程 + 关联的 BSP 工程组件化架构 (Component-based):分为 Platform Component(平台组件)和 Application Component(应用组件)
底层 BSP 解析引擎基于传统的 MSS 规范及 Tcl 生成逻辑基于SDT (System Device Tree)机制,利用SDTgen提取设备树,并由Lopper生成驱动

核心改变解析

  1. 从 HDF 到 XSA
    2017.4 使用的.hdf实际上是一个包含硬件设计元数据的文件夹或简单压缩包。而 2025.2 采用的.xsa(Xilinx Support Archive)不仅包含硬件描述,还整合了更多的多核处理器拓扑结构以及元数据,是一个标准化、更易于在工具间传递的归档文件。

  2. 从 Eclipse (SDK) 到 VS Code 架构 (Vitis Unified)
    老版的 Xilinx SDK 基于 Eclipse,界面较为繁琐,且在现代高分屏下的适配以及插件生态上略显落后。2025.2 采用的 Vitis Unified IDE 基于 Theia 框架,提供了类似 VS Code 的轻量化、现代化编码体验,并支持更好的版本控制(Git 友好性)。

  3. 引入“组件化(Component)”概念
    在旧版中,我们习惯于在工作空间内直接创建 App Project 和 BSP Project。而在 2025.2 中,开发对象被抽象为“组件”。你需要先创建一个Platform Component(它负责管理硬件 XSA 并在其内部生成 BSP/Domain),然后再创建一个基于该平台的Application Component


二、 Vivado 2025.2 下如何生成与配置 BSP

在 2017.4 中,我们习惯于直接在 Vivado 中点击File -> Launch SDK自动同步并生成 BSP。在 2025.2 中,由于工具链的解耦,该流程转变为“导出 XSA 并在 Vitis 中构建 Platform Component”。

以下是具体的操作步骤:

步骤 1:从 Vivado 2025.2 导出硬件 (XSA)

  1. 在 Vivado 中完成您的 Block Design 设计,依次运行 Synthesis(综合)、Implementation(实现)并生成 Bitstream
  2. 在主菜单栏中选择File -> Export -> Export Hardware…
  3. 在弹出的向导中点击 Next,选择Include bitstream(如果需要下载和调试裸机程序,建议包含比特流),再次点击 Next。
  4. 指定导出路径和文件名(如system_wrapper.xsa),点击 Finish。

步骤 2:启动 Vitis Unified IDE

  1. 您可以在 Vivado 菜单栏中点击Tools -> Launch Vitis IDE唤醒软件。
  2. 或者在操作系统中单独运行 Vitis,指定一个文件夹作为您的Workspace(工作空间)

步骤 3:创建 Platform Component(平台组件)以生成 BSP

在 Vitis 2025.2 中,BSP 不能作为独立项目单独创建,而是作为 Platform Component 的一部分(即域 Domain)被自动生成:

  1. 进入 Vitis 主页,在 “Welcome” 页面点击Create Platform Component(或通过菜单栏File -> New Component -> Platform)。
  2. Component Name:为您的平台命名(例如custom_hw_platform),点击 Next。
  3. Hardware Specification:点击 Browse,选择在步骤 1 中导出的.xsa文件,点击 Next。
  4. Operating System & Processor
    • 选择目标操作系统(裸机开发选择standalone,亦可选择freertos等)。
    • 选择目标处理器(例如 Zynq 设备的ps7_cortexa9_0或 MicroBlaze、MPSoC 的相应核心)。
  5. 点击 Finish。此时,Vitis 会自动解析 XSA 文件并为您生成基础的 BSP。

步骤 4:配置 BSP 参数(等同于旧版 BSP Editor)

在开发中,我们经常需要开启某些库(例如文件系统xilffs、轻量级网络协议栈lwip)或修改外设的驱动配置,具体操作如下:

  1. 在左侧Explorer视图中,展开刚创建的 Platform 文件夹,双击打开配置文件vitis-comp.json
  2. 在主视窗的平台管理界面中,定位到您的 Domain(例如standalone on ps7_cortexa9_0)。
  3. Quick Links栏目下方,点击Board Support Package链接。
  4. 此时右侧会展现 BSP 配置界面:
    • Modify BSP Settings:在此处勾选您需要启用的库。
    • Drivers:在此处可以查看硬件外设对应的驱动版本并修改其配置参数。
  5. 配置修改完成后,按下快捷键Ctrl + S保存更改。
  6. 右键点击您的 Platform Component,在菜单中选择Build进行编译。编译完成后,BSP 相关的库文件和驱动就完全生成并编译就绪了。

步骤 5:创建 Application Component 并使用该 BSP

  1. 点击菜单栏File -> New Component -> Application
  2. 输入应用组件的名称(如hello_world_app),点击 Next。
  3. 在选择 Platform 的页面,勾选您刚才创建并编译好的Platform Component,点击 Next。
  4. 选择对应的 Domain(即您配置了对应 BSP 的那个处理器核心域),点击 Next。
  5. 选择模板(例如Hello World),点击 Finish。
  6. 此时,您的应用工程就已经与该 BSP 正确关联。右键应用组件选择Build,即可编译出可执行文件。

三、 开发建议与总结

从旧版的 Vivado + SDK 流程迁移到现代的 Vivado + Vitis Unified 流程,开发者可能需要一些时间来适应新的 UI 交互和“组件化”概念。

  • 版本控制友好:新版的 Vitis Unified 更加贴近软件工程实践,项目结构清晰,不再像 Eclipse 版本那样容易因为相对路径问题导致工作空间损坏。建议在使用 2025.2 时将.xsavitis-comp.json等关键配置文件纳入 Git 进行版本管理。
  • 驱动迁移注意:由于底层采用了系统设备树(SDT)进行硬件描述,部分自定义 IP 的驱动生成机制可能与旧版有所不同。如果是老项目移植,建议阅读 AMD 官方提供的移植白皮书,以应对底层Lopper工具链在解析某些老旧 IP 驱动时可能出现的微调需求。
http://www.jsqmd.com/news/1071717/

相关文章:

  • XMEGA EBI接口SDRAM时序配置详解:从60000ms超时到稳定运行
  • ATA6289低功耗传感器接口芯片寄存器配置与SPI驱动实战指南
  • 2026最新易学入门 App 推荐:新手必看的易学排盘软件选择指南
  • SAM3S HSMCI接口SD卡驱动开发:从硬件配置到FATFS集成的实战指南
  • AVR XMEGA A3U嵌入式开发实战:从GPIO、AES加密到ADC高精度采集
  • 莫小琳2547102109
  • ATmega329P/3290P JTAG编程与调试全攻略:从硬件连接到高级调试
  • 07 - Prisma 入门配置指南
  • 爬虫实战教程:如何使用Python抓取TikTok的评论数据?
  • 从木匠到英伟达供应商:鹤壁企业42年三次产业逃亡,借AI算力实现逆袭
  • DMA技术如何优化嵌入式系统性能:ADC到USART数据传输实战
  • 为什么选 bf16 而不是 fp16,AMD Instinct 架构下的精度与性能权衡
  • OpenAI Whisper内网无网络环境运行 | 开源Whisper本地化部署运行 | 语音识别ASR本地化
  • Meltwater报告揭示的趋势:合规公关正在全球兴起
  • ssl证书用完了怎么办?推荐看看这个
  • 单细胞NMF非负矩阵分解降维及亚群分析应用
  • SAM7X以太网MAC高级功能:哈希过滤与VLAN标签处理实战
  • “无主权路由”的奇袭:Sakana AI 如何在地缘政治夹缝中完成技术突围?
  • 基于ATAK51003-V1的汽车无钥匙进入系统开发实战指南
  • AT24MAC芯片实战:硬件唯一ID在嵌入式设备身份认证与量产中的应用
  • 社区直播选软件,老板别只会看“花架子”,这三点才是真正的“铁门槛”
  • Atmel ATA820x UHF接收器:ASK/FSK双模、低功耗与高灵敏度设计实战
  • MPLAB Harmony加密库实战:从ECC/RSA到3DES/SHA的嵌入式安全开发指南
  • Article A (EN)
  • 你的agent简历上缺的不是技术栈,缺的是Know-how
  • 齐纳二极管芯片CD52xx系列选型与应用实战指南
  • 2026年首脑培训学校口碑怎么样
  • 2026年同城外卖优惠新趋势:供应商如何脱颖而出
  • AT42QT2160电容触摸芯片I2C配置实战:从通信基础到抗干扰调优
  • KeePassXC:本地优先的开源密码管理器