T527 RTL8211F_JL2101B-N040C 以太网PHY调试
文章目录
- 1、环境介绍
- 2、前言
- 3、T527 GMAC 资源
- 4、原理图查看
- 5、内核配置
- 6、设备树配置
- 7、测试
- 7.1、GMAC
- 7.2、GMAC200
- 8、delay参数调试
- 8.1、GMAC Rx/Txdelay最优值调试
- 8.2、GMAC2XX Rx/Txdelay最优值调试
- 8.3、设备树修改
- 9、常见问题
- 9.1、找不到phy
- 9.2、吞吐速率不达标
- 10、参考文章
- 11、总结
1、环境介绍
硬件:t527板卡
软件:原厂t527-tina5.0-aiot-v1.4 sdk(buildroot,Linux 5.15)
2、前言
景略 JL2101B-N040C 可以 P2P 替换 RTL8211F。本次调试实际使用的是RTL8211F。
3、T527 GMAC 资源
T527 包含两个千兆以太网控制器,分别是 GMAC、GMAC200。以下是 AI 根据 T527 数据手册总结出的区别:
GMAC 使用 AHB 总线比 GMAC‑2XX 的 AXI 总线带宽少 10~40M 左右。
4、原理图查看
以下是 T527板卡 关于以太网部分的原理图,共有两个以太网接口:
相关信息总结如下:
ETH0:
- 使用 GMAC 控制器;
- RESET 引脚为 PH8;
- PHY Address:001;
ETH1:
- 使用 GMAC200 控制器;
- RESET 引脚为 PJ10;
- PHY Address:002;
5、内核配置
GMAC 配置:
CONFIG_AW_GMAC
CONFIG_AW_GMAC_MDIO
GMAC2XX 配置:
CONFIG_AW_STMMAC_ETH
6、设备树配置
&mdio0 {status = "okay";gmac0_phy0: ethernet-phy@1 {reset-gpios = <&pio PH 8 GPIO_ACTIVE_LOW>; // 根据原理图配置};
};&gmac0 {phy-mode = "rgmii";pinctrl-names = "default", "sleep";pinctrl-0 = <&gmac0_pins_default>;pinctrl-1 = <&gmac0_pins_sleep>;sunxi,phy-clk-type = <1>; // 0:使用soc内置的25M时钟,1:使用外部25M时钟。根据原理图配置tx-delay = <1>;rx-delay = <5>;gmac3v3-supply = <®_cldo3>; // 根据soc的PH组io电压来配置status = "okay";
};&gmac1_phy0 {reg = <0x2>; // 根据原理图的 PHY Address 来配置,默认是0x1 reset-gpios = <&pio PJ 10 GPIO_ACTIVE_LOW>;
};&gmac1 {phy-mode = "rgmii";pinctrl-names = "default", "sleep";pinctrl-0 = <&gmac1_pins_default>;pinctrl-1 = <&gmac1_pins_sleep>;//aw,soc-phy25m; // 使用soc内置的25M时钟。根据原理图配置tx-delay = <1>;rx-delay = <5>;dwmac3v3-supply = <®_dcdc4>; // 根据soc的PJ组io电压来配置status = "okay";
};
7、测试
7.1、GMAC
使能 eth0 log:
ifconfig eth0 up
插入网线 log:
获取 IP,联网测试:
udhcpc -i eth0
ping baidu.com
7.2、GMAC200
使能 eth1 log:
ifconfig eth1 up
插入网线 log:
获取 IP,联网测试:
udhcpc -i eth1
ping baidu.com
8、delay参数调试
如果 ping 不通,可能是rx/txdelay值不正确。
8.1、GMAC Rx/Txdelay最优值调试
# 进入操作目录
cd /sys/devices/platform/soc\@3000000/4500000.gmac0
# 调整rxdelay参数
echo val > rx_delay
# 调整txdelay参数
echo val > tx_delay
8.2、GMAC2XX Rx/Txdelay最优值调试
GMAC2XX 的 Rx/Txdelay最优值调试会比较方便,直接操作接口即可:
echo > /sys/devices/platform/soc@3000000/4510000.ethernet/calibrate
8.3、设备树修改
最后将delay值填到设备树即可:
9、常见问题
9.1、找不到phy
up节点失败,提示找不到phy:
检查设备树配置,包括时钟配置,phy地址配置。检查phy芯片供电是否正常。本次调试中,因为设备树中没有正确配置gmac200控制器的phy地址,出现过该错误。
更多常见问题及解决思路请参考:《Linux_EMAC_开发指南.pdf》
9.2、吞吐速率不达标
使用 iperf3 对两个千兆网口进行上传与下载速率测试时,发现上传速率均不达标,只有600Mbits/sec左右。
根本原因如下:
- CPU占用过高,导致测试结果异常;
- 线材原因;
- phy模块的tx-delay和rx-delay值不是最优的;
- DDR带宽不足;
- 硬件问题;
解决方法如下:
- 降低CPU占用,检查内核是否开启了SLUB_DEBUG/KASAN/LOCKDEP等会影响系统负载的内核调试机制,可关闭这些调试机制再测试iperf。本人在内核配置中关闭SLUB_DEBUG后,iperf3测试正常,各网口上传速率达标。
- 更换支持千兆的线材;
- 调整tx/rx delay;
- 适当调高ddr频率,注意该DDR频率需要满足DDR稳定性测试要求;
- 找硬件工程师解决;
10、参考文章
- 《Linux_EMAC_开发指南.pdf》
- 全志客户服务平台 FAQ ID:FAQ2625(以太网TX-RX吞吐不达标排查方法)
11、总结
本文主要记录在 T527 下调试 RTL8211F 的过程。