第3章:Xilinx平台(Platform)详解
说实话,很多刚接触Vitis的朋友,第一个卡住的地方就是“平台”这个概念。我记得第一次用Vitis时,对着“xilinx_zcu104_base”这个平台文件发了好一会儿呆——这到底是个什么东西?为什么非要它不可?
今天我们就把它彻底讲透。
3.1 什么是硬件平台?
先打个比方。你写C程序时,需要操作系统提供API。你写嵌入式软件时,需要MCU的HAL库。那在Vitis里做异构计算呢?你需要一个“硬件平台”。
硬件平台,说白了就是一块板子的“硬件抽象层”。它描述了:
- 板子上有哪些IP核(比如DDR控制器、UART、GPIO)
- 这些IP核的地址映射关系
- 时钟频率、复位信号等硬件参数
- PS(处理系统)和PL(可编程逻辑)之间的连接方式
我习惯把平台理解成“板子的身份证”。你给Vitis一个平台文件,它就知道:哦,你要在ZCU104上跑,DDR地址从0x80000000开始,时钟是100MHz,UART挂在0xFF000000上……
3.2 Xilinx官方平台:xilinx_zcu104_base
Xilinx为每块官方开发板都提供了基础平台。以ZCU104为例,它的官方平台叫xilinx_zcu104_base。
这个平台里有什么?我拆开给你看:
- PS配置:双核Cortex-A53,频率1.2GHz,L1/L2 Cache配置
- DDR内存:4GB DDR4,地址范围0x80000000 - 0xFFFFFFFF
- 外设接口:UART、I2C、SPI、GPIO、USB、Ethernet
- PL侧接口:AXI总线、时钟、中断
- 启动模式:QSPI Flash、SD卡、JTAG
嗯,这里要注意:官方平台只是一个“最小系统”。它保证你能跑起来,但不会给你太多花哨的功能。我在项目中遇到过,有人直接用官方平台做产品原型,结果发现缺少某个自定义IP的驱动——这就是没理解平台的边界。
3.3 平台文件组成:XSA 和 XPFM
一个完整的平台,由两个核心文件组成。你想想看,就像一辆车需要发动机和方向盘——缺一不可。
| 文件类型 | 扩展名 | 作用 | 谁生成的 |
|---|---|---|---|
| 硬件描述文件 | .xsa | 描述硬件配置(IP、地址、时钟等) | Vivado |
| 平台元数据文件 | .xpfm | 描述平台信息(名称、版本、依赖等) | Vitis |
XSA文件(Xilinx Shell Archive)是Vivado导出的硬件快照。它包含了:
- Block Design的完整配置
- 所有IP核的寄存器地址
- 时钟和复位网络
- 中断连接关系
XPFM文件(Xilinx Platform)是平台的“说明书”。它告诉Vitis:
- 这个平台叫什么名字
- 支持哪些操作系统(裸机、Linux、FreeRTOS)
- 有哪些可用的软件库
- 启动方式是什么
3.4 导入与选择平台
实际操作中,导入平台有两种方式。我一般用第二种,因为更灵活。
方式一:从XSA创建平台
1. 打开Vitis
2. 点击 File → New → Platform Project
3. 选择 "Create from hardware specification (XSA)"
4. 浏览到你的 .xsa 文件
5. 设置平台名称(比如 my_zcu104_platform)
6. 点击 Finish
方式二:使用预编译平台
1. 打开Vitis
2. 点击 File → New → Application Project
3. 在 Platform 页面,点击 "Add"
4. 浏览到 .xpfm 文件所在目录
5. 选择对应的平台
6. 继续创建你的应用
选择平台时,我建议你注意这几点:
- 确认平台名称和板子型号一致(别把ZCU102的平台用在ZCU104上)
- 检查平台支持的OS类型(裸机还是Linux)
- 查看平台版本号(新版本可能修复了旧bug)
C:\Xilinx\Vitis\2023.2\platforms\(Windows)或 /opt/Xilinx/Vitis/2023.2/platforms/(Linux)。你可以直接复制出来用。
3.5 平台结构图
下面这张图,是我自己总结的平台组成关系。你看一眼就能明白:
这张图其实已经说得很清楚了。XSA是“硬件本身”,XPFM是“硬件的说明书”。没有XSA,Vitis不知道硬件长什么样;没有XPFM,Vitis不知道怎么用这个硬件。
3.6 实战建议
最后,给你几个实战中的建议:
- 第一次用,别自己造平台。直接用官方提供的
xilinx_zcu104_base,省时省力。 - 平台文件要备份。我习惯把XSA和XPFM放在同一个文件夹,命名带上日期,比如
zcu104_base_20240301。 - 版本要匹配。Vivado 2023.2导出的XSA,最好用Vitis 2023.2来导入。跨版本可能会有兼容问题。
- 学会看平台日志。导入平台时,Vitis会输出详细的日志。如果报错,先看日志——80%的问题都能自己解决。
好了,这一章的内容就到这里。记住我说的:平台是Vitis开发的基石,花点时间把它搞懂,后面会顺畅很多。