1. 为什么你的RK3566板子网速不稳?聊聊RGMII时序那点事儿
最近在调试一块基于RK3566核心板的自研主板,外挂了一颗RTL8211F千兆以太网PHY芯片。硬件焊接完,系统跑起来,网口灯也亮了,心里正美呢,结果一测速,问题来了:网络时断时续,iperf打流丢包严重,ping大包偶尔超时。这感觉就像你新买了一条超六类网线,满心期待万兆速度,结果连百兆都跑不满,别提多郁闷了。
折腾了半天软件配置,最后发现,根子很可能出在RGMII接口的时序上。RK3566的GMAC(千兆媒体访问控制器)和外部PHY芯片通过RGMII(简化千兆媒体独立接口)总线通信,这个接口对时钟和数据线的时序要求非常严格。简单来说,它就像两个人用超快的语速对话,如果一方说话稍微快一点或者慢一点(时序偏移),另一方就可能听错或漏听几个字(数据错位或丢失),整个对话(数据传输)就乱套了。
那怎么调整这个“说话的节奏”呢?答案就是配置 tx_delay 和 rx_delay 这两个参数,业内常称为“延迟线”(Delayline)配置。它们本质上是数字延迟单元,可以精细地调整TX(发送)和RX(接收)数据信号相对于时钟信号的相位,也就是让数据和时钟的边沿对齐在最佳采样点上。原始文章里直接给了一组值(比如tx_delay = <0x15>),但那可能只适用于他特定的板子和布线。你的PCB走线长度、层叠结构、PHY芯片型号甚至温度变化,都会影响最佳延迟值。所以,盲抄参数大概率不好使,我们必须掌握一套科学的方法,给自己的板子“把脉”,找到专属的“黄金参数”。
这套方法的核心,就是利用RK3566 SDK内核驱动提供的延迟线扫描功能。它能自动遍历所有可能的延迟值组合,并通过内部回环测试找出那些能让通信稳定工作的“绿洲”。接下来,我就带你走一遍这个从扫描、解读到测试、固化的完整实战流程,手把手教你搞定RGMII时序调试。
2. 动手前的准备:理解你的战场与环境
在开始敲命令之前,我们得先搞清楚调试的对象和环境,避免做无用功。
2.1 硬件连接与关键检查点
首先,确认你的硬件连接。我用的PHY是RTL8211F,地址通过硬件上下拉电阻配置为0x01。这里有个硬件巨坑我踩过:RTL8211F芯片旁边通常有个滤波电容C15(具体位置看你的原理图)。如果这个电容焊上了,它的内部1.05V稳压输出(REGOUT)就可能没电压,导致PHY芯片无法正常工作。所以,务必检查并确保C15是空贴的。我的板子一开始就是这里栽了跟头,排查了半天电源才发现。
其次,时钟方向。在RGMII模式中,125MHz的参考时钟可以由MAC提供给PHY,也可以由PHY提供回MAC。我的设计是 clock_in_out = "input"


220

被折叠的 条评论
为什么被折叠?



