教程前言很多新手做Zynq多网口开发只熟悉PS端原生网口但工业项目中往往需要拓展更多以太网口此时就需要用到PL端AXI以太网方案。✅ 软硬件环境硬件平台米联客 H3-CZ08P-7100Zynq7100软件环境Vivado2021.1 Vitis2021.1 米联客Ubuntu交叉编译虚拟机串口环境下载地址 https://www.uisrc.com/t-3177.html一、PL多网口方案原理Zynq PS端原生网口数量有限无法满足多网口拓展需求。PL端通过例化AXI Ethernet IP核实现拓展网口硬件层面为纯FPGA逻辑电路通过AXI4总线和PS端ARM内核数据交互。二、Vivado工程搭建TCL快速搭建官方提供现成TCL工程脚本无需手动搭建BD一键导入即可完成PL网口硬件配置零出错。三、导出带比特流XSA硬件文件硬件工程编译完成后必须导出带比特流的XSA文件否则Vitis无法识别PL网口硬件资源。打开米联客配套soc_prj工程双击system.bd块设计文件2. 双击ZYNQ7020 IP核采用米联客默认PS配置开启DDR、SD、UART、GPIO全部基础外设3. 点击菜单栏Generate Bitstream编译生成PL比特流文件4. 依次点击菜单File → Export → Export Hardware弹窗勾选Include bitstream导出至soc_hw文件夹最终生成system_wrapper.xsa硬件描述文件。打开后为下图界面点击Next下一步选择包括比特文件这一选项然后点击下一步这里是提醒在导出硬件文件前刷新比特文件点击Yes选择导出位置选择好后点击Finish开始导出打开导出文件夹就能看到如下的硬件文件以.xsa结尾四、Vitis工程搭建与设备树修改核心步骤4.1 添加官方设备树模板4.2. 打开Vitis软件新建工作空间并命名为soc_sdk2. 点击Xilinx → Software Repositories导入配套device-tree-xlnx设备树模板3. 新建平台工程File → New → Platform Project工程名设置为soc_base导入上一步生成的xsa文件4. 操作系统选择device_tree5. 点击编译按钮自动生成fsbl.elf、system_wrapper.bit、基础设备树文件备用。4.3 PL网口设备树适配重中之重Linux默认不识别PL端AXI网口必须手动修改设备树注册网卡设备、匹配PHY地址。4.3.1 修改网口别名打开system-top.dts修改ethernet别名区分PS网口与PL拓展网口aliases {ethernet0 gem3; // PS原生网口ethernet1 axi_ethernet_0; // PL拓展AXI网口rtc0 rtc;serial0 uart0;i2c0 i2c1;spi0 qspi;usb0 usb0;};4.3.2 读取硬件PHY地址查看底板原理图通过PHYAD0~PHYAD2引脚电平计算PHY地址例引脚电平 010 → 对应PHY地址为0x2根据自己硬件灵活修改。4.3.3 添加PL网口设备树节点参考Xilinx官方AXI以太网驱动规范在pl.dtsi同级添加完整网口配置axi_ethernet_0 {phy-handle phy0;xlnx,txlane0-placement 0x0;xlnx,txlane1-placement 0x0;mdio {#address-cells 1;#size-cells 0;phy0: ethernet-phy2 {reg 0x2;device_type ethernet-phy;};};};五、系统镜像制作与SD卡烧录5.1 替换核心启动文件将Vitis生成的system_wrapper.bit重命名为system.bit将fsbl.elf重命名为zynqmp_fsbl.elf拷贝至开发包路径uisrc-lab-xlnx/boards/mz7x/ubuntu/output/files覆盖旧文件。5.2一键编译系统镜像进入开发包目录加载环境变量执行脚本编译source scripts/mz7xcfg.sh# 编译Uboot./make_uboot.sh# 编译内核./make_kernel.sh# 生成完整启动镜像./create_image.sh5.3SD卡分区与烧录# 分区格式化SD卡./make_parted.sh# 烧录系统镜像./deploy_image.sh输入虚拟机识别的SD卡盘符如sdb确认后自动完成烧录烧录完成执行sync同步后拔出SD卡。六、板级上电测试与功能验证6.1 硬件启动配置H3-CZ08P-7100拨码切换为SD卡启动插入烧录好的SD卡、连接双网口网线、串口、电源上电启动。6.2 网口设备识别系统启动完成后执行网卡查看命令ifconfig正常输出eth0PS网口、eth1PL拓展网口双网口同时被系统识别6.3 链路连通性测试分别配置双网口静态IP执行ping测试双网口均可正常通信、无丢包PL多网口方案搭建完成。七、常见问题与官方驱动限制说明结合Xilinx官方AXI以太网驱动文档汇总本实验常见问题PL网口无法识别大概率PHY地址填写错误、设备树未覆盖更新、XSA未带比特流网口识别但ping不通MDIO总线配置异常、PHY硬件复位异常、网线链路问题大文件传输丢包AXI以太网驱动默认不支持暂停帧流控双向大流量传输会出现RX溢出不支持软件时间戳AXI以太网驱动仅支持硬件时间戳无法使用软件PTP授时。