益阳市网站建设_网站建设公司_关键词排名_seo优化
2025/12/28 1:45:00 网站建设 项目流程

实战:RK3568 Android14 调试 RTL8211F 千兆以太网 (RGMII)

前言

在 RK3568 的产品定义中,千兆以太网(Gigabit Ethernet)通常是标配。‌RTL8211F是Realtek(瑞昱半导体)推出的一款高度集成的千兆以太网PHY芯片‌,支持10/100/1000Mbps自适应传输,符合IEEE 802.3标准,广泛应用于IoT设备、工业控制及消费电子领域。‌‌Realtek 的 RTL8211F 因其性价比高、兼容性好,是目前市面上最常见的 PHY 芯片之一。
本文将结合实际的硬件原理图,详细记录如何在 RK3568 (Android 14、Linux6.1) 平台上配置 RGMII 接口的千兆网卡,重点解决 PHY 地址识别 和 网络丢包(时序延迟) 两大难题。

一、硬件原理图深度解析

在写代码之前,必须先看懂原理图。以下是根据调试板原理图提取的关键信息:

1.1 接口模式 (Interface)

从原理图中可以看到 GMAC0_TXD0~3和 GMAC0_RXD0~3 以及 TXCLK、RXCLK,这表明使用的是RGMII (Reduced Gigabit Media Independent Interface)模式,而不是 RMII。
关键点:RK3568 内部集成了 GMAC 控制器,RTL8211F 充当 PHY,两者通过 RGMII 总线连接。

1.2 PHY 地址配置 (Strap Pins)

驱动能否找到网卡,全靠这个地址。原理图右侧的“PHY Address Config”表格非常关键。

RTL8211F 的设备地址由PHYAD[2:0]决定,上电瞬间通过锁存引脚电平来配置:
PHYAD0 (Pin 40, RXD3):图中 R6725 (下拉 4.7K) 焊接,R6724 (上拉) NC。 -> Bit 0 = 0
PHYAD1 (Pin 41, RXCLK):图中 R6726 (上拉 4.7K) 焊接,R6727 (下拉) NC。 -> Bit 1 = 1
PHYAD2 (Pin 42, RXDV):图中显示配置为 0 (参考表格 default)。

结论:该板子的 PHY 地址为二进制 010 (原理图标注的 3’b001,是错误的值,需以实测为准,通常原理图备注 “Default 1” 则地址为 0x1)。
注意:如果驱动报 No PHY found,请尝试地址 1 或 0。

1.3 时序延迟 (TX/RX Delay)

这是千兆网卡调试最“玄学”的地方。RGMII 协议要求时钟线 (CLK) 和数据线 (Data) 之间有 2ns 的延时以保证数据采样正确。
原理图中特意标注了:
Pull-up for additional 2ns delay to RXC (R6728)
Pull-up for additional 2ns delay to TXC (R6730)
这意味着硬件上可能已经开启了延迟。但在 RK3568 软件配置中,为了保险起见,我们通常使用 rgmii-id 模式,让 PHY 芯片在内部再次确认并自动处理这个延迟。

1.4 复位与中断

Reset:GMAC0_RSTn (Pin 30),低电平复位。
Interrupt:GMAC0_INT (Pin 32),用于连接状态变化通知(插拔网线)。

二、 内核设备树驱动配置 (Kernel Config)

打开 kernel-6.1/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi,配置 GMAC0 节点。

&gmac0{phy-mode="rgmii";clock_in_out="output";snps,reset-gpio=<&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us=<020000100000>;assigned-clocks=<&cru SCLK_GMAC0_RX_TX>,<&cru SCLK_GMAC0>;assigned-clock-parents=<&cru SCLK_GMAC0_RGMII_SPEED>,<&cru CLK_MAC0_2TOP>;assigned-clock-rates=<0>,<125000000>;pinctrl-names="default";pinctrl-0=<&gmac0_miim&gmac0_tx_bus2&gmac0_rx_bus2&gmac0_rgmii_clk&gmac0_rgmii_bus>;tx_delay=<0x2f>;rx_delay=<0x2c>;phy-handle=<&rgmii_phy0>;status="okay";};&mdio0{rgmii_phy0:phy@1{compatible="ethernet-phy-ieee802.3-c22";reg=<0x1>;};};

三、 调试步骤与问题排查

3.1 确认 PHY 是否被识别

系统启动后,查看日志:

dmesg|grep-i eth dmesg|grep-i rtl

成功标志:看到类似 RTL8211F Gigabit Ethernet 以及 Link is Up 的日志。
失败标志:No PHY found 或 Generic PHY(说明驱动没匹配上,或地址错了)。

3.2 检查网络连接

rk3568_t:/$ ifconfig eth0 up eth0 Link encap:Ethernet HWaddr ce:7e:e7:30:dd:5a Driver rk_gmac-dwmac UP BROADCAST MULTICAST MTU:1500Metric:1RX packets:0errors:0dropped:0overruns:0frame:0TX packets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX bytes:0TX bytes:0Interrupt:43rk3568_t:/$ ifconfig eth0192.168.1.100rk3568_t:/$ ping192.168.1.28PING192.168.1.28(192.168.1.28):56data bytes64bytes from192.168.1.28:seq=0ttl=128time=1.970ms64bytes from192.168.1.28:seq=1ttl=128time=1.126ms64bytes from192.168.1.28:seq=2ttl=128time=1.158ms64bytes from192.168.1.28:seq=3ttl=128time=1.049ms64bytes from192.168.1.28:seq=4ttl=128time=1.053ms64bytes from192.168.1.28:seq=5ttl=128time=0.997ms64bytes from192.168.1.28:seq=6ttl=128time=1.026ms64bytes from192.168.1.28:seq=7ttl=128time=1.139ms64bytes from192.168.1.28:seq=8ttl=128time=1.178ms^C---192.168.1.28ping statistics---9packets transmitted,9packets received,0%packet loss round-trip min/avg/max=0.997/1.188/1.970ms

3.3 性能与丢包测试 (关键)

能 Ping 通不代表网卡正常。RGMII 时序不对会导致大量丢包或速率跑不满。
查看丢包统计:

ifconfig eth0 # 关注 RX packets 下面的 errors 和 dropped 计数

压测:
使用 iperf3 进行内网测速。

iperf-c192.168.1.28------------------------------------------------------------Client connecting to192.168.1.28,TCP port5001TCP window size:162KByte(default)------------------------------------------------------------[3]local192.168.1.100port40236connected with192.168.1.28port5001[ID]Interval Transfer Bandwidth[3]0.0-10.0sec114MBytes989.4Mbits/sec

RK3568 千兆网正常应该能跑到 900Mbps+。如果只有 10Mbps 或者几百 Mbps 且波动大,说明 TX/RX Delay 不对。

3.4 调整 Delay (如果丢包)

如果 rgmii-id 丢包,可以尝试修改 DTS 中的 tx_delay 和 rx_delay 值。
范围:0x00 ~ 0x7F
经验值:RK3568 + RTL8211F 常用搭配为 tx_delay = 0x2f / rx_delay = 0x2x (仅供参考,需以实测为准)。

总结

调试 RTL8211F 的核心在于:确认地址(看电阻贴片情况)和 搞定延时(配置 rgmii-id 或微调 delay 值)。一旦这两点对上了,RK3568 的千兆网络就能稳定运行。

希望这篇结合原理图的实战记录能帮到你!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询