



























由于在linux板子上没有phytool这个工具,先移植
git clone https://github.com/wkz/phytool.git
export CROSS_COMPILE=aarch64-none-linux-gnu-
export CC=${CROSS_COMPILE}gcc

生成的产物就是phytool,然后用scp命令将其copy到板子tmp目录下
scp ./phytool/phytool root@192.168.1.202:/tmp/
怎么验证呢?可以读一下phy的id寄存器8002h,8003h,看是否是和datasheet上的值是一样的
![]()
下图中的eth0 是ifconfig里面的interface
26是因为目前我们phyad被硬件配置了0x1a = 26
1指MMD1。由于8000h-83ffh是被MMD1, MMD3, MMD30共享的,所以这里写1 or 3 or 30都是可以的。




根据上图中的公式,计算下相位delay
0x12 = 18
phase-shift = 73.8 + 0.9 * 18 = 90°
所以相位应该是delay 1/4个周期,实际测试phy发出来的波形如下。


由于phy收到后,是在自己内部进行delay的,所以不能在总线上测量到,这里仍然测量一下,如下



结果如下
![]()


按如下顺序进行对rx/tx delay寄存器的热修改。

测量的波形如下,可以发现
相对于上图中代码默认值0x8012的波形, 此时phy发出来的波形,0x8000配置值下,clk的时延变小了。

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。