用RK3568自制底板狂丢包?5分钟教你用Delayline一键复活网口
发布时间:2025-7-31 17:10
发布者:秦彻呀呀呀
在使用飞凌嵌入式RK3568核心板搭配自制底板时,由于PCB走线与参考设计存在差异,常导致RGMII接口时序异常,进而出现网口不通或频繁丢包的情况。本文将为大家提供一套简单高效的调试方案,通过三步操作即可解决此类问题。 1 测试条件① 硬件:飞凌嵌入式RK3568核心板; ② 系统:Linux4.19.206; ③ 底板:用户自制底板,且底板设计基本遵循飞凌提供的RK3568核心板参考原理图,但PCB走线存在差异; ④ 问题:网口无法连接或网络丢包现象严重。 ![]() 2 调试步骤① 确认系统节点(以RK3568为例) •进入目录:/sys/devices/platform/fe300000.ethernet •确认存在以下关键节点:
② 扫描Delayline窗口(获取中间值) 重要提示:如果使用RTL8211E PHY 芯片,测试前务必拔掉网线! •使用1000M (千兆)速率进行扫描: •记录这两个值。 ③ 测试扫描得到的Delayline值 •将步骤2中扫描得到的tx_delay和rx_delay值写入rgmii_delayline节点进行临时配置: 必须 确保phy_lb回环测试通过 (pass)。这是后续操作的基础。如果测试失败,可能需要重新扫描或检查硬件。 ④ 固化配置到设备树(DTS)并烧写固件 •在 phy_lb 测试通过后,将测试有效的 tx_delay 和 rx_delay 值写入设备树源文件(DTS)中的GMAC节点。 •找到RK3568的DTS文件中定义gmac的部分(通常在rk3568.dtsi或板级DTS文件中)。 •修改tx_delay和rx_delay属性值为测试通过的值: &gmac {assigned-clocks = <&cru SCLK_RMII_SRC>;assigned-clock-parents = <&clkin_gmac>;clock_in_out = "input";phy-supply = <&vcc_lan>;phy-mode = "rgmii";pinctrl-names = "default";pinctrl-0 = <&rgmii_pins>;snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;snps,reset-active-low;snps,reset-delays-us = <0 10000 50000>;tx_delay = <0x2e>; //替换为扫描测试得到的有效tx_delay值(十六进制)rx_delay = <0x0f>; //替换为扫描测试得到的有效rx_delay值(十六进制)status = "okay";};•重新编译包含修改后DTS的内核或完整固件。 •将新固件烧录到 RK3568核心板。 ⑤ 最终验证 •设备启动后,进行网络连接测试: 使用ping命令测试网络连通性和稳定性。 使用iperf3等工具进行网络带宽和性能测试,检查是否还存在丢包。 •一般情况下,完成以上步骤并验证通过后,网口不通或丢包问题应得到解决。 3 重要提示① 操作风险: 修改RGMII delayline 参数是底层硬件调优。错误的参数可能导致网口完全失效。强烈建议在操作前备份原始固件和DTS文件。 ② 测试必要性: 步骤3 (phy_lb回环测试)必须通过才能将参数写入 DTS。跳过此测试直接固化参数风险极高。 ③ 硬件差异: 此方法主要解决因PCB走线差异引起的时序问题。如果自制底板与参考设计差异很大,或者存在其他硬件故障,此方法可能无效。 ④参数值: 示例中的0x2e和0x0f仅为说明格式,必须使用phy_lb_scan扫描并结合phy_lb测试验证得到的实际有效值。 4 总结当用RK3568自制底板遇到因PCB走线差异导致的RGMII时序跑偏问题时,使用“扫描-验证-固化”三步急救:echo扫描最佳tx/rx_delay → phy_lb回环验证 → DTS一键写入,即可让崩溃的网口原地复活。 飞凌嵌入式FET3568-C核心板基于Rockchip RK3568处理器开发设计,该处理器是Rockchip面向于AIoT和工业市场打造的一款高性能、低功耗、功能丰富的国产化应用处理器。四核64位Cortex-A55架构,主频高达2.0GHz,且内置1TOPS算力NPU,而且经过了严苛的环境温度测试、压力测试、长期稳定性运行测试,确保其工作的稳定可靠。 |
网友评论