RK3566平台YT8512C百兆以太网卡DTS配置与调试实战

张开发
2026/6/22 9:51:31 15 分钟阅读
RK3566平台YT8512C百兆以太网卡DTS配置与调试实战
1. RK3566平台与YT8512C网卡基础认知最近在调试RK3566开发板的YT8512C百兆以太网卡时踩了不少坑。这个组合在嵌入式设备中很常见但网卡驱动调试总是让人头疼。先说说这两个核心组件RK3566是瑞芯微推出的中高端ARM处理器四核Cortex-A55架构主打低功耗和多媒体处理能力YT8512C则是裕太微电子的一款百兆PHY芯片采用RMII接口性价比很高。为什么需要关注DTS配置因为Linux内核通过设备树Device Tree来识别硬件。当系统启动时uboot会把编译好的dtb文件传给内核内核根据这个硬件地图加载对应驱动。YT8512C作为外接PHY芯片其工作模式、时钟配置、复位时序等关键参数都通过DTS文件定义。我遇到过最典型的问题就是时钟配置错误导致网卡无法识别后面会详细说明。2. DTS配置全解析2.1 时钟树配置要点先看最关键的时钟配置部分gmac1_clkin { clock-frequency 50000000; // 必须与PHY芯片实际时钟匹配 status okay; };这个50MHz时钟源是RMII接口的基准时钟。YT8512C需要外部提供50MHz时钟通过晶振或时钟发生器实测中发现如果这里填错数值会出现[dhd] CFG80211-ERROR)等看似不相关的错误。我曾误写成25MHz结果网卡完全无法初始化。2.2 GMAC节点配置细节完整的GMAC配置应该包含这些关键参数gmac1 { phy-mode rmii; // 必须与PHY芯片接口类型一致 clock-in-out input; // YT8512C作为时钟接收方 snps,reset-gpio gpio4 RK_PC2 GPIO_ACTIVE_LOW; snps,reset-active-low; // 复位电平极性 snps,reset-delays-us 0 20000 100000; // 复位时序三要素 assigned-clocks cru SCLK_GMAC1_RX_TX, cru SCLK_GMAC1; assigned-clock-parents cru SCLK_GMAC1_RMII_SPEED, gmac1_clkin; pinctrl-names default; pinctrl-0 gmac1m0_miim gmac1m0_clkinout gmac1m0_rx_bus2 gmac1m0_tx_bus2 gmac1m0_rx_er; phy-handle rmii_phy1; status okay; };其中最容易出问题的是reset-delays-us参数它定义了复位信号的三个时间复位前延迟0us复位脉冲宽度20ms复位后稳定时间100ms实测发现YT8512C对复位时序很敏感如果第三个值小于80ms可能会出现stmmac_hw_setup: DMA engine initialization failed错误。2.3 MDIO总线与PHY声明PHY芯片需要通过MDIO总线注册mdio1 { rmii_phy1: phy0 { compatible ethernet-phy-ieee802.3-c22; reg 0x0; // PHY地址需与硬件设计一致 }; };特别注意reg参数要与硬件设计的PHY地址匹配YT8512C的地址由硬件管脚决定常见值为0或1。地址错误会导致内核找不到PHY芯片。3. 典型错误排查指南3.1 DMA初始化失败分析当看到如下错误时rk_gmac-dwmac fe010000.ethernet: Failed to reset the dma rk_gmac-dwmac fe010000.ethernet eth0: stmmac_hw_setup: DMA engine initialization failed建议按以下步骤排查检查时钟配置用示波器测量YT8512C的XI引脚25MHz晶振输入和TXC引脚50MHz输出验证复位时序确保reset-gpio配置正确用逻辑分析仪抓取复位信号波形测量电源PHY芯片的3.3V和1.2V供电必须稳定3.2 PHY通信异常处理如果内核日志出现PHY not found或timeout waiting for PHY重点检查MDIO总线是否正常用mdio-tool工具读取PHY寄存器硬件连接测量MDIO/MDC信号质量排查虚焊问题PHY地址确认DTS中的reg值与硬件匹配4. 硬件调试实战技巧4.1 信号测量要点用示波器测量关键信号时要注意晶振波形YT8512C的XI引脚应有25MHz正弦波幅度500mVTXC输出不接网线时应输出50MHz方波接上网线后可能变为25MHz与协商模式有关复位信号reset引脚拉低时间需10ms上电复位过程要完整4.2 软件辅助调试方法在内核启动后可以通过这些命令辅助调试# 查看PHY寄存器 mdio-tool -v /dev/mdio1 read 0x0 0x1 # 强制设置网卡速度 ethtool -s eth0 speed 100 duplex full autoneg off # 查看DMA状态 dmesg | grep dma5. 网络功能验证调试成功后需要验证物理层插拔网线时应有eth0: link up/down日志网络层执行ifconfig eth0 192.168.1.100后能ping通同网段设备系统集成在Android系统中需要添加ro.vendor.ethernet_settingstrue属性才能显示以太网设置界面6. 经验总结调试YT8512C这类PHY芯片时建议先确保硬件正常工作上电测量所有电源引脚电压确认晶振起振检查复位信号时序然后再聚焦软件配置对照原理图核对DTS中的GPIO编号用示波器验证时钟频率与DTS配置一致通过mdio-tool读取PHY ID寄存器0x2和0x3确认通信正常最后提醒一个容易忽略的点RK3566的GMAC1和GMAC2时钟树是独立的如果使用其他GMAC端口需要同步修改assigned-clock-parents的配置。

更多文章