7.11.3. 调试指南

7.11.3.1. 调试开关

7.11.3.1.1. 以太网调试开关

通过 scons --menuconfig 命令打开 zx-rtt 的配置选项如下路径 选中 zx-rtt 的打印等级开关,可以将 zx-rtt的打印等级调到最高等级(debug),然后 就可以实时观测以太网驱动内部的打印消息

Rt-Thread options --->
    RT-Thread Components --->
        Utilities --->
            [*] Enable ulog
                The static output log level. (Debug) --->

7.11.3.1.2. LwIP协议栈调试开关

通过 scons --menuconfig 命令打开 zx-rtt 的配置选项如下路径 选中 LwIP 的调试开关,一般只打开 "Enable Debugging of IP" 就可以观察到是否正常收发数据。 如有其他调试需求,可根据自身需要打开其他调试开关

Local packages options --->
    Third-party packages options --->
        LwIP: Light weight TCP/IP stack
            [*] Enable LwIP Debugging Options --->
                ...
                [*] Enable Debugging of IP
                ...

7.11.3.2. 功能验证

网络模块是否可以正常工作可以通过如下顺序排查:

  • 本机 MAC 和 PHY 的连接是否成功

  • 本机 PHY 和对端 PHY 的连接是否成功

  • 是否可以通信

7.11.3.2.1. MAC 与 PHY连接成功

MAC 与 PHY是否连接成功,主要就是观察 MAC 能否通过 MDIO 接口正常访问PHY寄存器。zx-rtt 读写 PHY 寄存器的接口为 “aicmac_read_phy_reg” 和 “aicmac_write_phy_reg”。在网卡启动 过程及启动完成后,都会不间断的访问 PHY 寄存器。

如果 MAC 与 PHY连接失败,则会有类似与以下的打印消息出现。如果出现类似打印,则需要排查 pinmux、phy-addr是否配置正确,并检查 PHY 芯片的电源、时钟、及复位引脚是否正常

[E] aicmac port0 write phy 1 reg 0 timeout

如果MAC 与 PHY正常连接,则不会有异常信息打印

7.11.3.2.2. 本机 PHY 和对端 PHY 的连接是否成功

典型的 PHY 电路都留有 PHY 的连接状态指示灯,因此判断本机 PHY 与对端 PHY 是否连接成功的主要 方法就是观察 PHY 指示灯是否正常点亮。如果插上网线后,PHY 指示灯正常点亮则说明 PHY 连接成功。 否则,则说明 PHY 连接失败,可以检查本地 PHY 和对端 PHY 是否没有打开自协商功能且强制配置 的通信速率不相符(可能性很小),并检查 PHY 芯片的时钟、电源、复位引脚是否正常。

如果使用的 PHY 电路没有预留 PHY 指示灯,则需要通过 PHY 芯片的状态寄存器去检查 PHY 的连接状态。 zx-rtt中通过 “aicphy_update_link” 接口去读取 PHY 的连接状态 如果 本机 PHY 与对端 PHY 芯片连接成功,则会有调试信息

[I] aicphy_poll_thread()635  Port 0 link UP! autoneg mode: speed 100M, full duplex, flow control on.

7.11.3.2.3. 网络可通信

经过上述的排查,MAC 和 PHY,PHY 和远端 PHY 的通路均正常,则可以进行网络通信验证

7.11.3.2.3.1. 验证方法

  • 通过主机 ping 板卡来验证是否可以通信(建议方式)

E:\code\zx-rtt>ping 192.168.1.5

Pinging 192.168.1.5 with 32 bytes of data:
Reply from 192.168.1.5: bytes=32 time=2ms TTL=255
Reply from 192.168.1.5: bytes=32 time=1ms TTL=255
Reply from 192.168.1.5: bytes=32 time=1ms TTL=255
Reply from 192.168.1.5: bytes=32 time<1ms TTL=255

Ping statistics for 192.168.1.5:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 2ms, Average = 1ms
  • 使能 ping 功能,通过板卡 ping 对端来验证是否可以通信

aic/> [I] aicphy_poll_thread()635  Port 0 link UP! autoneg mode: speed 100M, full duplex, flow control on.
aic/> ping 192.168.1.2
aic/> Reply from 192.168.1.2: time=3ms
Reply from 192.168.1.2: time=3ms
Reply from 192.168.1.2: time=3ms
Reply from 192.168.1.2: time=3ms

Ping statistics for 192.168.1.2:
    Packets: Sent = 4 Received = 4 Lost = 0(0% loss)

7.11.3.2.3.2. 问题分析

如果通信不正常,在没有对驱动进行修改的情况下,一般不会是寄存器配置的问题,可能的原因有

  • clk配置,如果使用外部 clk,则要设置 aic,use_extclk

  • clk 频率,测量 MII Data的TX/RX Clk 的频率,满足当前标准

  • 时延,如果使用的是千兆网络或百兆网络的内部时钟,确定时延的配置和硬件匹配

  • 防火墙,确认路由器,对端设备不受防火墙的隔离保护

如果以上问题均排除,则请获取日志提交原厂分析

7.11.3.3. 辅助工具

7.11.3.3.1. 数据包分析

一般使用 WiredShark 抓包工具进行数据包的分析,可以借助其分析发送和接收的数据内容,从而分析通信双方的行为

../../../_images/wireshark1.jpg

7.11.3.3.2. 网速测试

压力测试的模型是搭建一个简单的 C/S 模型,Client 以最大资源利用发送数据,Server 端接收 数据并进行相应计算

zx-rtt 自带一种可用于进行压力测试的工具:iperf1.7.0,其会以全速进行数据的收发, 并进行丢包,错包,发送速率计算等辅助工作。

网速测试因为需要验证收到的信息的准确性,因此有比较大的计算任务,所以也受 CPU 和 DDR 频率的影响

7.11.3.3.2.1. iperf1.7.0

  • server 命令

    iperf -s 以 TCP 服务端的方式监听客户端的数据,可用于测试网络接收速度

  • client 命令

    iperf -c 192.168.3.2 , 以 TCP客户端的方式和 server 192.168.3.2 进行测试,可用于 测试网络发送速度