一、Vitis R5核风扇温控
1.1 Vitis平台工程
定位:依托 Vivado 导出的 XSA 硬件文件生成,是硬件、驱动、底层操作系统的统一基础工程,可被多个应用工程复用,支撑 Zynq 异构多核开发。
搭建流程:
图形界面:设置工作目录 → 导入 XSA → 配置硬件资源与底层库 → 编译工程。
命令行模式:通过 sdtgen 生成设备树、empyro 生成 BSP 文件,脱离 IDE 完成构建。
1.2 Vitis 应用工程
依赖关系:必须绑定已完成编译的平台工程才能创建。
搭建流程:关联平台工程 → 选定运行核心域 → 添加用户源码 → 编译、在线调试。
二、OpenAMP 异构多核通信完整方案
2.1 基础概念
AMP(非对称多核):
Zynq MPSoC 架构分工:
APU (A53 主核):运行 Linux,负责复杂业务、网络交互;
RPU (R5 从核):运行裸机 / FreeRTOS,承担硬实时控制、高速采集、故障保护。
OpenAMP 框架作用:解决多核间三大核心需求,包含三大组件:
libmetal:硬件抽象层,屏蔽芯片与系统底层差异;
remoteproc:远程核生命周期管理,实现 R5 固件加载、启停与资源隔离;
RPMsg:基于 VirtIO 协议的核间双向消息通信总线。
2.2 OpenAMP完整开发三步流程
(1) Vitis 侧工程搭建
分别完成平台工程、R5 端 OpenAMP 应用工程构建,生成 R5 固件 elf 文件。
(2) Petalinux Linux 系统构建
a. 基于 sdtgen 设备树创建 ZynqMP 类型 Petalinux 工程,导入硬件描述;
petalinux-create project -n petalinux --template zynqMP
cd petalinux
petalinux-config --get-hw-description ../sdt_outdir/
b. 配置系统参数,修改设备树声明多核共享内存、核间中断;
c. 编译生成 BOOT.BIN 系统启动文件;
petalinux-build
petalinux-package boot --u-boot --fpga --force
d. 交叉编译 Linux 端测试程序 echo_test。
(3) 板卡 SD 卡联调测试
a. 制作 SD 启动卡,放入 Linux 镜像、R5 固件 elf、Linux 测试程序;
b. 开发板 SD 模式启动,Linux 端通过 remoteproc 节点加载并启动 R5 固件;
c. 运行 Linux 测试程序,完成 APU 与 RPU 跨核消息通信验证。
# 将 openamp_echo_test.elf 拷贝到 /lib/firmware
cp -rf /home/petalinux/openamp_echo_test.elf /lib/firmware/
# 将 openamp_echo_test.elf 加载到 RPU
echo openamp_echo_test.elf > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
# 执行 echo_test 程序,开始测试
/home/petalinux/echo_test
💡 完整视频讲解可前往 ALINX 视频号进行直播回看
更多细节欢迎关注我们黑金云课堂全年免费直播课, 黑金云课堂八月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!
| 系列 | 内容定位 |
|---|---|
| Verilog开发 | 硬件描述语言基础、逻辑设计、仿真调试 |
| Vitis开发 | Zynq软硬件协同、外设驱动、网络协议栈 |
| Linux开发 | 嵌入式Linux系统移植、驱动编写、应用开发 |
23