9.eth_speed_test
功能:udp上传下载测速(实际测试程序运行在内部flash与外部flash速度不一致)
内部flash测试 接收满速,发送只有59.9 Mbits/sec
外部flash测试 接收满速,发送只有16.9 Mbits/sec
构建外部flash
| west build -p always -b art_pi -d build 9.eth_speed_test -- \
-DCONFIG_BOOTLOADER_MCUBOOT=y \
-DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE="\"$HOME/zephyrproject/bootloader/mcuboot/root-rsa-2048.pem\""
|
构建内部flash
- DDTC_OVERLAY_FILE 为空art_pi.overlay不会参与构建
| west build -p always -b art_pi -d build 9.eth_speed_test -- \
-DDTC_OVERLAY_FILE=
|
下载
前提
测试ubuntu是否能ping通板子(连接上会打印出ip信息)
在 Ubuntu 安装并使用 iperf2
| sudo apt update
sudo apt install iperf # 注意是 iperf(2.x),不是 iperf3
iperf -v
|
如 Ubuntu 开了防火墙,做“服务器”时放行端口:
| sudo ufw allow 5001/tcp
sudo ufw allow 5001/udp
|
“download”=从对端下载到板子(对板子是接收流)
“upload”=从板子上传到对端(对板子是发送流)
UDP(板子收)
板子:
Ubuntu(向板子发 UDP 流;务必指定速率):
| iperf -u -c 192.168.1.59 -p 5001 -l 1K -t 10 -b 90M
|
结果
| [ 1] 0.0000-10.0005 sec 112 MBytes 94.4 Mbits/sec
|
| [ 1] 0.0000-10.0000 sec 112 MBytes 94.4 Mbits/sec
|
UDP(板子发)
Ubuntu:
板子(向 Ubuntu 发 UDP 流,指定速率):
| zperf udp upload 192.168.1.19 5001 10 1K 90M
|
结果
| [ 1] 0.0000-10.0541 sec 20.2 MBytes 16.9 Mbits/sec 0.047 ms 0/21207 (0%)
|
| [ 1] 0.0000-10.0200 sec 71.5 MBytes 59.9 Mbits/sec 0.043 ms 27/75019 (0.036%)
|
上述测试中存在丢包
1K 是 每个 UDP 数据包的负载大小(packet size),约等于 1024 字节
将每个 UDP 数据包的负载大小调大,常见以太网 MTU=1500 时,UDP 负载最大不超过约 1472 字节 以避免分片
UDP(板子发)
Ubuntu:
板子(向 Ubuntu 发 UDP 流,指定速率):
- packet size 1460,连续测试30s以检测是否掉包
| zperf udp upload 192.168.1.19 5001 30 1460 90M
|
结果(packet size 1460 未掉包但速度下降)
| [ 6] 0.0000-30.0433 sec 167 MBytes 46.6 Mbits/sec 0.081 ms 0/119984 (0%)
|