调试指南
调试开关
Rt-Thread options --->
RT-Thread Components --->
Utilities --->
[*] Enable ulog
The static output log level. (Debug) --->
"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
...
Drivers options --->
lwIP example --->
[ ] Enable MQTT protocol test command
[ ] Enable iperf test cmd
[ ] Enable ethernet loopback test command
-
- Enable MQTT protocol test command
-
可用于测试 lwIP 的 MQTT 功能, 需要打开 Using MQTT protocol 选项
-
- Enable iperf test command
-
可用于测试 lwIP 的以太网 TCP 上下行网速
-
- Enable ethernet loopback test command
-
可用于以太网的回环测试,需要插入回环网线
功能验证
网络模块是否可以正常工作可以通过如下顺序排查:
-
本机 MAC 和 PHY 的连接是否成功
-
本机 PHY 和对端 PHY 的连接是否成功
-
是否可以通信
MAC 与 PHY 是否连接成功,主要就是观察 MAC 能否通过 MDIO 接口正常访问 PHY 寄存器。Luban-Lite 读写 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 正常连接,则不会有异常信息打印
典型的 PHY 电路都留有 PHY 的连接状态指示灯,因此判断本机 PHY 与对端 PHY 是否连接成功的主要 方法就是观察 PHY 指示灯是否正常点亮。如果插上网线后,PHY 指示灯正常点亮则说明 PHY 连接成功。 否则,则说明 PHY 连接失败,可以检查本地 PHY 和对端 PHY 是否没有打开自协商功能且强制配置 的通信速率不相符(可能性很小),并检查 PHY 芯片的时钟、电源、复位引脚是否正常。
如果使用的 PHY 电路没有预留 PHY 指示灯,则需要通过 PHY 芯片的状态寄存器去检查 PHY 的连接状态。 Luban-Lite 中通过 “aicphy_update_link” 接口去读取 PHY 的连接状态 如果 本机 PHY 与对端 PHY 芯片连接成功,则会有调试信息
[I] aicphy_poll_thread()635 Port 0 link UP! autoneg mode: speed 100M, full duplex, flow control on.
经过上述的排查,MAC 和 PHY,PHY 和远端 PHY 的通路均正常,则可以进行网络通信验证
-
通过主机 ping 板卡来验证是否可以通信(建议方式)
E:\code\newstlubanlite\Luban-Lite>ping 192.168.1.5 Pinging 192.168.1.5 with 32 bytes of data: Reply from 192.168.1.5: bytes=32time=2ms TTL=255 Reply from 192.168.1.5: bytes=32time=1ms TTL=255 Reply from 192.168.1.5: bytes=32time=1ms TTL=255 Reply from 192.168.1.5: bytes=32 time<1ms TTL=255 Ping statistics for192.168.1.5: Packets: Sent=4, Received=4, Lost=0(0% loss), Approximate round trip timesin 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 for192.168.1.2: Packets: Sent=4Received=4Lost=0(0% loss)
如果通信不正常,在没有对驱动进行修改的情况下,一般不会是寄存器配置的问题,可能的原因有
-
clk 配置,检查 MAC 使用的内外部时钟是否正确
-
clk 频率,测量 MII Data 的 TX/RX Clk 的频率,满足当前标准
-
时延,如果使用的是千兆网络或百兆网络的内部时钟,确定时延的配置和硬件匹配
-
防火墙,确认路由器,对端设备不受防火墙的隔离保护
如果以上问题均排除,则请获取日志提交原厂分析
辅助工具
一般使用 WiredShark 抓包工具进行数据包的分析,可以借助其分析发送和接收的数据内容,从而分析通信双方的行为
压力测试的模型是搭建一个简单的 C/S 模型,Client 以最大资源利用发送数据,Server 端接收 数据并进行相应计算
Luban-Lite 自带一种可用于进行压力测试的工具:iperf1.7.0,其会以全速进行数据的收发, 并进行丢包,错包,发送速率计算等辅助工作。
网速测试因为需要验证收到的信息的准确性,因此有比较大的计算任务,所以也受 CPU 和 DDR 频率的影响
-
- server 命令
-
iperf -s 以 TCP 服务端的方式监听用户端的数据,可用于测试网络接收速度
-
- client 命令
-
iperf -c 192.168.3.2 , 以 TCP 用户端的方式和 server 192.168.3.2 进行测试,可用于 测试网络发送速度