跳转至

9.eth_speed_test

功能:udp上传下载测速(实际测试程序运行在内部flash与外部flash速度不一致)

  • 1k packet size测试

内部flash测试 接收满速,发送只有59.9 Mbits/sec

外部flash测试 接收满速,发送只有16.9 Mbits/sec

构建外部flash

1
2
3
  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=

下载

west flash

前提

测试ubuntu是否能ping通板子(连接上会打印出ip信息)

ping 192.168.1.59

在 Ubuntu 安装并使用 iperf2

1
2
3
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(板子收)

板子:

zperf udp download 5001

Ubuntu(向板子发 UDP 流;务必指定速率):

iperf -u -c 192.168.1.59 -p 5001 -l 1K -t 10 -b 90M

结果

  • 外部flash
[  1] 0.0000-10.0005 sec   112 MBytes  94.4 Mbits/sec
  • 内部flash
[  1] 0.0000-10.0000 sec   112 MBytes  94.4 Mbits/sec

UDP(板子发)

Ubuntu:

iperf -u -s -p 5001

板子(向 Ubuntu 发 UDP 流,指定速率):

zperf udp upload 192.168.1.19 5001 10 1K 90M

结果

  • 内部flash
[  1] 0.0000-10.0541 sec  20.2 MBytes  16.9 Mbits/sec   0.047 ms 0/21207 (0%)
  • 内部flash
[  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:

iperf -u -s -p 5001

板子(向 Ubuntu 发 UDP 流,指定速率):

  • packet size 1460,连续测试30s以检测是否掉包
zperf udp upload 192.168.1.19 5001 30 1460 90M

结果(packet size 1460 未掉包但速度下降)

  • 内部flash
[  6] 0.0000-30.0433 sec   167 MBytes  46.6 Mbits/sec   0.081 ms 0/119984 (0%)