以太网模板一:
PHY VCC_LAN有没供电,PHY 25M 晶振是否起振和频偏,MAC CLK 50M或者125M是否存在
PHYRSTB脚是否复位,复位时间多少,示波器看一下
&gmac{ snps,reset-delays-us = <0 100000 100000>; 设拉低再拉高100毫秒测试
MDC脚 CLK是否超过2M(读写phy寄存器才有)
dmesg |grep pinctrl 或 find / -name pinmux-pins
cat pinmux-pins 检查引脚是否被复用
若MAC提供CLK cat /d/clk/clk_summary|grep mac 查看clk设置
io-domain是否匹配也确认一下
logic电压确认 cat /d/regulator/vdd_log/voltage echo 1050000 > voltage
以太网模板二:
千兆调一下TX RX delay
跑百兆有没有问题
频率计读phy 晶振或 CPU晶振 频偏多大
MAC IO驱动电流增大
logic电压确认 cat /d/regulator/vdd_log/voltage echo 1050000 > voltage
ddr 频率确认 cat /d/clk/clk_summary |grep ddr
iperf测试吞吐
不同状态出问题对比phy_register的值
busybox udhcpc -i eth0”或“dhcptool eth0运行获取IP
disable eee phy功能
还不行查RT45眼图电平是否达标或其它硬件排查
以太网模板三:
概率性获取不到ip(表现为dhcp timeout)
第一种是开关机,解决:确认reset引脚先拉低延时再拉高延时
第二种是不断插拔,解决:确认一下logic电压,tx rx delay修改吞吐测试,io电流加大,dhcp延时加一下,或者是变压器硬件的原因
第三种是休眠唤醒之后或者长时间概率性,解决:disable eee patch可能是phy的原因节能标准不一致,确认logic电压,驱动唤醒函数,还不行ifconfig eth0 down/up 补丁
以太网模板四:
TX=27;RX=0X24配后再测吞吐量
千兆吞吐量要跑上去,DDR必须是800M
logic电压是根据ddr的频率调整,改变logic电压变相改变ddr频率
TX上不去是DDR不够,定频到800M,TX就上去了
驱动强度的还是改一下
cat clk_summary |grep ddr
sclk_ddrc就是DDR的频率
cat /sys/kernel/debug/opp/opp_summary
cd /sys/class/devfreq/dmc/
echo userspace > governor
echo 800000000 > userspace/set_freq
以太网模板五(疑难):
出问题后板子不重启,保留环境。同时录下面日志(3288W为例)
测试时录个包tcpdump -i eth0 -s 0 -w /data/1.pcap&
1、Iomux
io -4 -l 12 0xFF77002C
ff77002c: 00003333 00003333 00003333 // 低 16bit
ff770038: 00003333 // 第 0-11bit
ff77003c: 00000033 // 第 4-7bit
2、Cat /d/clk/clk_summary
3、mac controller
io -4 -l 0x1000 0xFF290000
ff290000: 00610c8c 00000004 00000001 02000002
ff290010: 00000100 000005e1 00000000 00000000
ff290020: 00001035 00000000 00000000 00000000
ff290030: 00000000 00000000 00000000 00000001
ff290040: 80000e17 10b76ac4 00000000 00000000
ff290050: 00000000 00000000 00000000 00000000
ff290060: 00000000 00000000 00000000 00000000
ff290070: 00000000 00000000 00000000 00000000
ff290080: 00000000 00000000 00000000 00000000
ff290090: 00000000 00000000 00000000 00000000
ff2900a0: 00000000 00000000 00000000 00000000
0 4 8 c 四个四个一起看,一组一组,以后看的时候就非常清晰,所以起始地址最后一位一定要0
4、CRU
io -4 -r 0xFF760180
5、Grf
io -4 -r 0xFF770248
6、cat phy reg
kernel 3.10
find ./ -name phy_reg
cat phy_reg
kernel 4.4
find ./ -name phy_registers
cat phy_registers
主要检查寄存器状态及写下去的情况
以太网模板六:
内部分频提供clk不稳定
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -2343,6 +2343,10 @@
bias-disable;
drive-strength = <13>;
};
+ pcfg_pull_none_19ma: pcfg-pull-none-19ma {
+ bias-disable;
+ drive-strength = <19>;
+ };
pcfg_output_high: pcfg-output-high {
output-high;
@@ -2367,13 +2371,13 @@
rgmii_pins: rgmii-pins {
rockchip,pins =
/* mac_txclk */
- <3 17 RK_FUNC_1 &pcfg_pull_none_13ma>,
+ <3 17 RK_FUNC_1 &pcfg_pull_none_19ma>,
/* mac_rxclk */
<3 14 RK_FUNC_1 &pcfg_pull_none>,
/* mac_mdio */
<3 13 RK_FUNC_1 &pcfg_pull_none>,
/* mac_txen */
- <3 12 RK_FUNC_1 &pcfg_pull_none_13ma>,
+ <3 12 RK_FUNC_1 &pcfg_pull_none_19ma>,
/* mac_clk */
<3 11 RK_FUNC_1 &pcfg_pull_none>,
/* mac_rxdv */
@@ -2385,17 +2389,17 @@
/* mac_rxd0 */
<3 6 RK_FUNC_1 &pcfg_pull_none>,
/* mac_txd1 */
- <3 5 RK_FUNC_1 &pcfg_pull_none_13ma>,
+ <3 5 RK_FUNC_1 &pcfg_pull_none_19ma>,
/* mac_txd0 */
- <3 4 RK_FUNC_1 &pcfg_pull_none_13ma>,
+ <3 4 RK_FUNC_1 &pcfg_pull_none_19ma>,
/* mac_rxd3 */
<3 3 RK_FUNC_1 &pcfg_pull_none>,
/* mac_rxd2 */
<3 2 RK_FUNC_1 &pcfg_pull_none>,
/* mac_txd3 */
- <3 1 RK_FUNC_1 &pcfg_pull_none_13ma>,
+ <3 1 RK_FUNC_1 &pcfg_pull_none_19ma>,
/* mac_txd2 */
- <3 0 RK_FUNC_1 &pcfg_pull_none_13ma>;
+ <3 0 RK_FUNC_1 &pcfg_pull_none_19ma>;
};
&gmac {
phy-supply = <&vcc_phy>;
phy-mode = "rmii";
clock_in_out = "output";
snps,reset-gpio = <&gpio3 16 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 20000 100000>;
//assigned-clocks = <&cru SCLK_RMII_SRC>;
//assigned-clock-parents = <&clkin_gmac>;
assigned-clocks = <&cru SCLK_MAC>, <&cru SCLK_RMII_SRC>;
assigned-clock-rates = <50000000>;
assigned-clock-parents = <&cru PLL_NPLL>, <&cru SCLK_MAC>;
pinctrl-names = "default";
pinctrl-0 = <&rmii_pins>;
tx_delay = <0x28>;
rx_delay = <0x11>;
status = "okay";
};
&cru {
assigned-clocks = <&cru PLL_NPLL>;
assigned-clock-rates = <1000000000>;
};
以太网模板七:
jubom frame 巨型帧设置
ifconfig eth0 down
ifconfig eht0 mtu 9000
ifconfig eth0 up
以太网模板八:
ip ro
ip ru
route -n
ifconfig hw ether 50:96:dc:74:fd:5d
关于mdio读不到phy的问题
1、用示波器触发模式去量mdio mdc 一开始会有波形,如果其中一个脚没有,那可能是复用了或者io的域电压没有配置对,还有clk不能太高
2、有可能是片选的地址不对,硬件设置为1但是实际给的是0