我把 gmac 修改成可以在线调整 tx_delay , rx_delay 部份放到这一篇了
你可以测试看看,基本上我认為应该是调整一下,就可以解决你的问题了
我把 gmac 修改成可以在线调整 tx_delay , rx_delay 部份放到这一篇了
你可以测试看看,基本上我认為应该是调整一下,就可以解决你的问题了
天天挖坑,老是有坑在!
MQ-R 的 dts 默认没有把 gmac 使能,故要在 dts 开头处把 gmac 加上
compatible = "allwinner,d1", "arm,sun20iw1p1", "allwinner,sun20iw1p1";
aliases {
dsp0 = &dsp0;
dsp0_gpio_int= &dsp0_gpio_int;
gmac0 = &gmac0;
};
另外 DTS 默认驱动能力只有 10 , 若是非自制在同一片板子,使用开发版自行串接的,驱动能力可能不行! 故可以自上改动一些
// mq-r
gmac_pins_a: gmac@0 {
pins = "PG0", "PG1", "PG2", "PG3",
"PG4", "PG5", "PG6", "PG7",
"PG8", "PG9" , "PG10",
"PG12", "PG13", "PG14", "PG15";
function = "gmac0";
// drive-strength = <10>;
drive-strength = <40>;
};
另外很多文章中介绍使用 iperf3 来测试! 但是运行中有问题
当连接在 百兆
iperf3 -s ok
iperf3-c ok
当连接在 千兆
iperf3 -s ok
iperf3 -c 连 10兆 都达不到
若使用 make menuconfig 中改用 iperf 版本
以上都正常了!
异常
正常
接收可达 400兆
另外 tx_delay , rx_delay 在千兆中调整十分重要! 不能直接使用 dts 中默认配的那一个! 有自已编写了一些测试工具! 若有人有需求可以提供!
d1-h 和 d1s (f133) 架构是一样的,之前调试时也出过类似的问题,你可以参考下面这一篇
另外,你的版子是自已画的,还是用啥开发版吗? 那开发版有试过其他人的固件有一样的问题吗?
若是自已画的 RGMII 上的走线要尽量一样等长,不要过 via ! 并且要注意 gnd 的铺设防止串音!
若是别人的固件可以,你的固件有问题! 那就要查看看 dts 中的 tx_delay , rx_delay 的配置!
这个配合的 phy 芯片、pcb 走线 都会造成异动,不能造抄!