调试步骤
- 阅读对应PHY的技术手册,弄清楚MDIO使用条款
- 测试PHY的外部供电是否正常,包含系统的电源供电和PHY的复位管脚适配,可以用示波器查看电源上电时序
- 加载驱动,PHY与MAC确保MDIO的通讯正常,只有通讯正常MAC才能正常识别到PHY。可以用示波器在PHY侧获取MDIO/MDC波形分析
- 针对某些PHY,需要通过MDIO写入相关配置参数。建议在写入前后各读取一次寄存器的值,确保配置写入成功
- 测试数据信号线上是否有数据,即测试SGMII或RGMII信号线
- 一般PHY均支持回环模式,可以将PHY设置为回环模式来验证MAC到PHY侧的链路是否ok
网口phy/mac调试方法
PHY 寄存器读写调试
路径: /sys/bus/mdio_bus/devices/stmmac-0:00,其中 stmmac-0:00 表示 PHY 地址是 0。
/sys/bus/mdio_bus/devices/stmmac-0:00/phy_registers
// 写 往 Reg0 写入 0xabcd
echo 0x00 0xabcd > /sys/bus/mdio_bus/devices/stmmac-0:00/phy_registers
// 读
cat /sys/bus/mdio_bus/devices/stmmac-0:00/phy_registers
查看PHY是否识别
// cat /sys/bus/mdio_bus/devices/usb-005:002:01/phy_id
root@linaro-alip:/sys/bus/mdio_bus/devices/usb-005:002:01# cat phy_id
0x0007c132 (1100 0001 0011 0010)
例LAN7800 Datesheet
该网卡的PHY ID:
[15:0]:0007h
[15:10]: 110000b(30h) [9:4]:010011b(13h) [3:0]:不定
网口性能测试iperf
进行 iperf测试(宽带和丢包测试)
Windows下载iperf工具:https://iperf.fr/iperf-download.php
1、UDP
Windows —— 开发板
Windows 作为服务器端:D:\360安全浏览器下载\iperf-2.0.9-win64\iperf-2.0.9-win64\iperf.exe iperf -c 192.168.1.249 -i 10 -l 16k -b 1000m -u
开发板作为客户端:iperf -s -i 1 -l 16k -b 1000m -u
2、TCP
Windows —— 开发板
Windows作为客户端: D:\360安全浏览器下载\iperf-2.0.9-win64\iperf-2.0.9-win64\iperf.exe iperf -c 192.168.1.249 -i 10 -l 16k -w 2000k -b 1000m -p 5002
开发板作为服务器端:iperf -s -i 1 -l 16k -w 2000k -b 1000m -p 5002
-c : 以客户端模式运行,连接到主机
-i : 带宽周期报告间隔n秒
-l : 设置读写缓冲区大小(TCP)或长度(UDP)为n (TCP默认128K, UDP默认1470)
-w : TCP窗口大小(套接字缓冲区大小)
-b : 设置目标读速率为n bits/sec。TCP仅用于服务器。
-p : 端口将侦听/连接到的服务器端口设置为n(默认为5001)
-s : 以服务器模式运行
-t :发送时间
解析UDP
Receiving 16000 byte datagrams :接收一个包的数据为16000字节
Interval : 时间间隔
Transfer : 实际接收每秒数据
Bandwidth :带宽
Jitter : 实际使用时间
Lost/Total : 丢包/总包
Datagrams :丢包率
Transfer x8 = Bandwidth
Total x 接收一个包的数据字节 = Transfer
注:0.0-10.0 sec 950 MBytes 797 Mbits/sec 0.087 ms 2147355430/2147417665 (1e+02%) 总包数超出了Total范围 32位(iperf源码里设置)