当前已完成内容
- D-DAQ 的PL端程序在采集卡底板上可以应用,程序执行后可以通过万兆网口将udp包数据发送至上位机,并由DPDK接收消费。

进行100_000次采样,每个udp包传输5个采样点,此时显示DPDK接收到20000个UDP包,表明所有采样点均可以传输,没有出现丢包状况。
- 使用中能聚控的程序,测试子板与主板的板间aurora协议数据传输,给子板提供正弦波信号,数据传输到上位机,上位机接收端程序显示对应通道波形。

设置的信号源正弦波频率为10Khz,采样率为2M,则2000个采样点对应一个正弦波周期。上位机显示接受的波形符合预期。
未完成内容以及规划
- aurora数据传输,应该需要使用中能聚控的相关程序与ip核,主板部分需要拓展接口将中能聚控提供的aurora协议部分与现有PL端程序对接。
- PS端相关程序未能在板卡上应用。具体在于需要根据新底板的硬件内容,对PS端程序进行修改,并且需要对用于制作linux系统的dts设备树文件进行修改,使核心板可以使用相关底板的外设。
- 底板用于PS端的万兆网口芯片不同,需要给Linux系统提供适配驱动。
如果需要将现有的PS端程序应用于板卡上,则需要:
- 修改 Vivado 工程,根据新底板原理图,调整 PS 的 MIO 分配(UART、SD、以太网等);
- 生成新的 .xsa文件;
- 利用 Vitis 生成适配新底板的system.bit(PL 配置)、zynqmp_fsbl.elf(FSBL,启动加载器)、pmufw.elf(PMU 固件,仅 Zynq MPSoC)、设备树源文件(zynqmp-mzux.dts);
- 替换米联客脚本对应目录下的文件;
- 执行脚本生成 Linux 系统。
设备树编写
设备树文件可以借助于根据 .xsa 自动生成基础设备树(如 pl.dtsi、pcw.dtsi)编写,但板级信息(如以太网 PHY 地址、I2C 从设备、用户 LED/按键的 GPIO 编号等)需要手动补充。
根据工程文件需求,设备树中,至少需要编写的内容有:
- 内存配置(memory@0),用于定义系统物理内存大小和地址范围;
- 控制台串口(serial0),用于制定系统控制台使用的串口,串口与PC相连,可以通过PC的串口调试助手等应用控制系统控制台;
- 以太网接口,包括PS端以太网和PL端以太网,用于控制系统以太网通信;
- SD卡(sdhci0),用于读取SD卡内存储的系统;
- USB 控制器(usb0),用于启用usb,可用于拓展外设;
- GPIO(&gpio),用于配置PS端的GPIO引脚;
- PL 外设节点(amba_pl),包含了所有 PL 端 IP 的描述,需要通过vitis根据.xsa文件生成;
- 其他内容。
生成设备树后,可以直接使用米联客教程的脚本,生成Linux系统。
修改设备树时,部分位置修改思路如下:
- 现有米联客板子和官方板子使用的uart串口不同,直接套用原设备树的uart串口无法连接板子控制台。此时需要更换使用新的串口。
// 米联客板子
&uart0 {
cts-override ; // 通过 cts-override 忽略硬件流控,即使板子没有连接 CTS/RTS 线,也能正常工作。
device_type = "serial";
port-number = <0>;
status = "okay"; // 在 Linux 内核中,通过 status = "okay" 和 port-number = <0> 使得内核识别它为 ttyPS0,并作为默认控制台(结合 chosen 节点中的 stdout-path = "serial0:115200n8")。
u-boot,dm-pre-reloc ; // 在 U-Boot 启动阶段,通过 u-boot,dm-pre-reloc 确保控制台早期可用
};
// 新板子(假设使用uart1)
&uart1 {
cts-override ;
device_type = "serial";
port-number = <1>;
status = "okay";
u-boot,dm-pre-reloc ;
};
- 关于PS端网口,需要关注PHY芯片的型号和PHY地址。芯片型号如果和旧板子的不同,则需要获取到新的芯片驱动,并对设备数进行修改。
调试计划流程
- 修改工程文件,实现系统运行,并可以通过控制台串口获取系统运行状态和运行结果;
- 调试PHY芯片,通过控制台读取系统日志,获取调试反馈结果;
- 运行相关程序,测试PS端数据发送功能,实现上位机接收数据;
- 安装ssd后,配置文件系统,测试系统流盘功能。
本文章使用limfx的vscode插件快速发布