BENCHMARK

WINC1500 Wi-Fi Module Benchmark using iperf 2.0.5

BENCH-XXXX

Prerequisites

·  Hardware Prerequisites

·  Atmel Xplained Pro Evaluation Kit

·  Atmel WINC1500 extension

·  USB Micro Cable (TypeA / MicroB)

·  Software Prerequisites

·  Atmel Studio 6.2

·  iperf project

Introduction

This document provides bandwidth information for TCP and UDP protocol. It applies to the following products:

·  SAM4S Xplained Pro

·  SAMG53 Xplained Pro

·  SAMD21 Xplained Pro

Table of Contents

Prerequisites 1

Introduction 1

Icon Key Identifiers 3

1. Benchmark configuration 4

1.1 Solution Overview 4

2. Firmware release 18 5

2.1 SAM4S Xplained Pro 5

2.2 SAMG53 Xplained Pro 7

2.3 SAMD21 Xplained Pro 9

3. Performance summary 11

4. Revision History 12

Icon Key Identifiers

Icons are used to identify different assignment sections and reduce complexity. These icons are:

  • Delivers contextual information about a specific topic
  • Highlights useful tips and techniques
  • Highlights objectives to be completed
  • Highlights the expected result of an assignment step
  • Indicates important information
  • Highlights actions to be executed out of the target when necessary

1.  Benchmark configuration

1.1  Solution Overview

The purpose of this benchmark is to measure the bandwidth of the WINC1500 Wi-Fi module with several different Atmel MCU devices.

The iperf version used is 2.0.5. Hence, it has been ported to Atmel MCU and operates as a server.

To run this project you will need to have:

·  Atmel Xplained Pro board (supported chip list below)

·  Atmel WINC1500 extension

·  Atmel Studio 6.2.1153 or above

·  Iperf project

·  Linux laptop with iperf v2.0.5 installed

The iperf project has been ported to the following Atmel MCU:

·  Atmel SAM4S Xplained Pro board

·  Atmel SAMD21 Xplained Pro board

·  Atmel SAMG53 Xplained Pro board

  • The purpose of this document is to evaluate the bandwidth of the WINC1500 Wi-Fi module for TCP and UDP protocol throughout the available WINC1500 firmware release.

2.  Firmware release 18

2.1  SAM4S Xplained Pro

CPU is running at 120Mhz and SPI is set at 60Mhz, compiled with -oS:

TCP Bandwidth / UDP Bandwidth
RX / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r
------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------
------
Client connecting to 192.168.1.4, TCP port 5001
TCP window size: 20.8 KByte (default)
------
[ 5] local 192.168.1.5 port 59733 connected with 192.168.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 5.0 sec 4.00 MBytes 6.71 Mbits/sec
[ 5] 5.0-10.0 sec 4.00 MBytes 6.71 Mbits/sec
[ 5] 0.0-10.2 sec 8.12 MBytes 6.68 Mbits/sec / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r -u -b 50m
------
Server listening on TCP/UDP port 5001
TCP window size: ??? KByte
------
[ 7] local 127.0.0.1 port 5001 connected with 192.168.1.5 port 52128
[ 7] 0.0-10.0 sec 11.78 Mbytes 9.42 Mbits/sec 31779/ 42554 (74.6%)
TX / [ 4] local 192.168.1.5 port 5001 connected with 192.168.1.4 port 1030
[ 4] 0.0- 5.0 sec 2.18 MBytes 3.66 Mbits/sec
[ 4] 5.0-10.0 sec 1.24 MBytes 2.08 Mbits/sec
[ 4] 0.0-10.2 sec 3.45 MBytes 2.84 Mbits/sec / [ 3] 0.0- 5.0 sec 8.24 MBytes 13.8 Mbits/sec 1.303 ms 43930/50578 (87%)
[ 3] 5.0-10.0 sec 8.26 MBytes 13.9 Mbits/sec 0.761 ms 44235/50895 (87%)
[ 3] 10.0-15.0 sec 8.00 MBytes 13.4 Mbits/sec 0.435 ms 45464/51917 (88%)
[ 3] 15.0-20.0 sec 8.64 MBytes 14.5 Mbits/sec 0.427 ms 42171/49140 (86%)
[ 3] 20.0-25.0 sec 7.04 MBytes 11.8 Mbits/sec 0.715 ms 49998/55674 (90%)
[ 3] 25.0-30.0 sec 6.93 MBytes 11.6 Mbits/sec 0.515 ms 50671/56262 (90%)
[ 3] 30.0-35.0 sec 7.19 MBytes 12.1 Mbits/sec 0.925 ms 49055/54858 (89%)
[ 3] 35.0-40.0 sec 6.67 MBytes 11.2 Mbits/sec 0.729 ms 51774/57152 (91%)
[ 3] 40.0-45.0 sec 7.23 MBytes 12.1 Mbits/sec 0.682 ms 49282/55112 (89%)
[ 3] 45.0-50.0 sec 7.56 MBytes 12.7 Mbits/sec 1.246 ms 47350/53448 (89%)

CPU is running at 48Mhz and SPI is set at 12Mhz, compiled with -oS:

TCP Bandwidth / UDP Bandwidth
RX / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r
------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------
------
Client connecting to 192.168.1.4, TCP port 5001
TCP window size: 20.8 KByte (default)
------
[ 5] local 192.168.1.5 port 59762 connected with 192.168.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 5.0 sec 1.75 MBytes 2.94 Mbits/sec
[ 5] 5.0-10.0 sec 1.62 MBytes 2.73 Mbits/sec
[ 5] 0.0-10.5 sec 3.50 MBytes 2.79 Mbits/sec / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r -u -b 50m
------
Server listening on TCP/UDP port 5001
TCP window size: ??? KByte
------
[ 7] local 127.0.0.1 port 5001 connected with 192.168.1.5 port 52128
[ 7] 0.0-10.0 sec 6.75 Mbytes 5.40 Mbits/sec 36496/ 42549 (85.774047%)
TX / [ 4] local 192.168.1.5 port 5001 connected with 192.168.1.4 port 1029
[ 4] 0.0- 5.0 sec 1.75 MBytes 2.94 Mbits/sec
[ 4] 5.0-10.0 sec 1.89 MBytes 3.17 Mbits/sec
[ 4] 0.0-10.4 sec 3.67 MBytes 2.95 Mbits/sec / [ 3] 0.0- 5.0 sec 5.00 MBytes 8.39 Mbits/sec 1.012 ms 1937/ 5970 (32%)
[ 3] 5.0-10.0 sec 5.11 MBytes 8.57 Mbits/sec 1.377 ms 1151/ 5271 (22%)
[ 3] 10.0-15.0 sec 4.89 MBytes 8.20 Mbits/sec 1.077 ms 2858/ 6799 (42%)
[ 3] 15.0-20.0 sec 5.19 MBytes 8.70 Mbits/sec 1.099 ms 594/ 4778 (12%)
[ 3] 20.0-25.0 sec 4.84 MBytes 8.12 Mbits/sec 1.115 ms 3099/ 7004 (44%)
[ 3] 25.0-30.0 sec 5.16 MBytes 8.65 Mbits/sec 1.132 ms 785/ 4946 (16%)
[ 3] 30.0-35.0 sec 5.20 MBytes 8.73 Mbits/sec 1.222 ms 509/ 4706 (11%)
[ 3] 35.0-40.0 sec 5.10 MBytes 8.56 Mbits/sec 0.989 ms 1179/ 5296 (22%)
[ 3] 40.0-45.0 sec 5.03 MBytes 8.44 Mbits/sec 1.080 ms 1785/ 5844 (31%)
[ 3] 45.0-50.0 sec 4.86 MBytes 8.15 Mbits/sec 1.144 ms 2950/ 6870 (43%)
  • This test gives an idea of bandwidth performance we could expect from the SAMD21 Xplained Pro if the host driver was to use DMA..

2.2  SAMG53 Xplained Pro

CPU is running at 48Mhz and SPI is set at 48Mhz, compiled with -oS:

TCP Bandwidth / UDP Bandwidth
RX / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r
------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------
------
Client connecting to 192.168.1.4, TCP port 5001
TCP window size: 20.8 KByte (default)
------
[ 5] local 192.168.1.5 port 59733 connected with 192.168.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 5.0 sec 3.38 MBytes 5.66 Mbits/sec
[ 5] 5.0-10.0 sec 3.38 MBytes 5.66 Mbits/sec
[ 5] 0.0-10.4 sec 6.88 MBytes 5.54 Mbits/sec / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r -u -b 50m
------
Server listening on TCP/UDP port 5001
TCP window size: ??? KByte
------
[ 7] local 127.0.0.1 port 5001 connected with 192.168.1.5 port 52128
[ 7] 0.0-10.0 sec 8.49 Mbytes 6.79 Mbits/sec 34833/ 42523 (81.915672%)
TX / [ 4] local 192.168.1.5 port 5001 connected with 192.168.1.4 port 1030
[ 4] 0.0- 5.0 sec 2.14 MBytes 3.58 Mbits/sec
[ 4] 5.0-10.0 sec 1.51 MBytes 2.54 Mbits/sec
[ 4] 0.0-10.0 sec 3.68 MBytes 2.93 Mbits/sec / [ 3] 0.0- 5.0 sec 8.19 MBytes 13.7 Mbits/sec 0.783 ms 2884/ 9486 (30%)
[ 3] 5.0-10.0 sec 8.14 MBytes 13.6 Mbits/sec 1.050 ms 3119/ 9681 (32%)
[ 3] 10.0-15.0 sec 8.14 MBytes 13.7 Mbits/sec 0.633 ms 3264/ 9829 (33%)
[ 3] 15.0-20.0 sec 8.28 MBytes 13.9 Mbits/sec 1.176 ms 2265/ 8945 (25%)
[ 3] 20.0-25.0 sec 7.99 MBytes 13.4 Mbits/sec 1.072 ms 3956/10397 (38%)
[ 3] 25.0-30.0 sec 7.58 MBytes 12.7 Mbits/sec 0.655 ms 5769/11883 (49%)
[ 3] 30.0-35.0 sec 6.99 MBytes 11.7 Mbits/sec 1.829 ms 8201/13843 (59%)
[ 3] 35.0-40.0 sec 7.76 MBytes 13.0 Mbits/sec 0.940 ms 5042/11303 (45%)
[ 3] 40.0-45.0 sec 7.44 MBytes 12.5 Mbits/sec 0.843 ms 6357/12356 (51%)
[ 3] 45.0-50.0 sec 7.89 MBytes 13.2 Mbits/sec 0.622 ms 4398/10762 (41%)

CPU is running at 48Mhz and SPI is set at 12Mhz, compiled with -oS:

TCP Bandwidth / UDP Bandwidth
RX / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r
------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------
------
Client connecting to 192.168.1.4, TCP port 5001
TCP window size: 20.8 KByte (default)
------
[ 5] local 192.168.1.5 port 59762 connected with 192.168.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 5.0 sec 1.75 MBytes 2.94 Mbits/sec
[ 5] 5.0-10.0 sec 1.75 MBytes 2.94 Mbits/sec
[ 5] 0.0-10.7 sec 3.62 MBytes 2.83 Mbits/sec / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r -u -b 50m
------
Server listening on TCP/UDP port 5001
TCP window size: ??? KByte
------
[ 7] local 127.0.0.1 port 5001 connected with 192.168.1.5 port 52128
[ 7] 0.0-10.0 sec 6.42 Mbytes 5.14 Mbits/sec 36814/ 42543 (86.533622%)
TX / [ 4] local 192.168.1.5 port 5001 connected with 192.168.1.4 port 1029
[ 4] 0.0- 5.0 sec 2.12 MBytes 3.55 Mbits/sec
[ 4] 5.0-10.0 sec 631 KBytes 1.03 Mbits/sec
[ 4] 0.0-10.1 sec 2.75 MBytes 2.29 Mbits/sec / [ 3] 0.0- 5.0 sec 4.91 MBytes 8.24 Mbits/sec 1.021 ms 2780/ 6742 (41%)
[ 3] 5.0-10.0 sec 4.85 MBytes 8.13 Mbits/sec 0.998 ms 3180/ 7089 (45%)
[ 3] 10.0-15.0 sec 4.71 MBytes 7.91 Mbits/sec 0.895 ms 4079/ 7880 (52%)
[ 3] 15.0-20.0 sec 5.09 MBytes 8.54 Mbits/sec 1.434 ms 1500/ 5607 (27%)
[ 3] 20.0-25.0 sec 5.15 MBytes 8.64 Mbits/sec 1.102 ms 1244/ 5400 (23%)
[ 3] 25.0-30.0 sec 5.04 MBytes 8.46 Mbits/sec 1.540 ms 1866/ 5931 (31%)
[ 3] 30.0-35.0 sec 5.22 MBytes 8.76 Mbits/sec 0.973 ms 803/ 5016 (16%)
[ 3] 35.0-40.0 sec 5.07 MBytes 8.51 Mbits/sec 1.280 ms 1713/ 5803 (30%)
[ 3] 40.0-45.0 sec 4.97 MBytes 8.34 Mbits/sec 0.767 ms 2459/ 6467 (38%)
[ 3] 45.0-50.0 sec 4.81 MBytes 8.07 Mbits/sec 1.023 ms 3457/ 7336 (47%)
  • This test gives an idea of bandwidth performance we could expect from the SAMD21 Xplained Pro if the host driver was to use DMA.

2.3  SAMD21 Xplained Pro

  • The SAMD21 port is not optimized as the SPI implementation is based on polling. Hence, performances are more impacted by optimization level. For this test only, several optimization levels will be tested.

CPU is running at 48Mhz and SPI is set at 12Mhz, compiled with –oS:

TCP Bandwidth / UDP Bandwidth
RX / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r
------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------
------
Client connecting to 192.168.1.4, TCP port 5001
TCP window size: 20.8 KByte (default)
------
[ 5] local 192.168.1.5 port 59762 connected with 192.168.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 5.0 sec 768 KBytes 1.26 Mbits/sec
[ 5] 5.0-10.0 sec 768 KBytes 1.26 Mbits/sec
[ 5] 0.0-11.8 sec 1.62 MBytes 1.16 Mbits/sec / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r -u -b 50m
------
Server listening on TCP/UDP port 5001
TCP window size: ??? KByte
------
[ 7] local 127.0.0.1 port 5001 connected with 192.168.1.5 port 52128
[ 7] 0.0-10.0 sec 2.68 Mbytes 2.14 Mbits/sec 39985/ 42274 (94.585327%)
TX / [ 4] 0.0- 5.0 sec 741 KBytes 1.21 Mbits/sec
[ 4] 5.0-10.0 sec 992 KBytes 1.62 Mbits/sec
[ 4] 0.0-10.0 sec 1.69 MBytes 1.42 Mbits/sec / [ 3] 0.0- 5.0 sec 1.23 MBytes 2.06 Mbits/sec 4.932 ms 10/ 1002 (1%)
[ 3] 5.0-10.0 sec 1.23 MBytes 2.07 Mbits/sec 4.780 ms 6/ 1002 (0.6%)
[ 3] 10.0-15.0 sec 1.24 MBytes 2.08 Mbits/sec 4.870 ms 4/ 1002 (0.4%)
[ 3] 15.0-20.0 sec 1.23 MBytes 2.07 Mbits/sec 4.922 ms 10/ 1005 (1%)
[ 3] 20.0-25.0 sec 1.24 MBytes 2.08 Mbits/sec 4.451 ms 4/ 1002 (0.4%)
[ 3] 25.0-30.0 sec 1.23 MBytes 2.06 Mbits/sec 4.832 ms 10/ 1002 (1%)
[ 3] 30.0-35.0 sec 1.24 MBytes 2.08 Mbits/sec 4.910 ms 5/ 1003 (0.5%)
[ 3] 35.0-40.0 sec 1.24 MBytes 2.07 Mbits/sec 4.910 ms 5/ 1002 (0.5%)
[ 3] 40.0-45.0 sec 1.24 MBytes 2.08 Mbits/sec 4.963 ms 3/ 1001 (0.3%)
[ 3] 45.0-50.0 sec 1.24 MBytes 2.08 Mbits/sec 4.902 ms 4/ 1004 (0.4%)
[ 3] 50.0-55.0 sec 1.24 MBytes 2.07 Mbits/sec 4.933 ms 5/ 1002 (0.5%)

CPU is running at 48Mhz and SPI is set at 12Mhz, compiled with –o1:

TCP Bandwidth / UDP Bandwidth
RX / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r
------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------
------
Client connecting to 192.168.1.4, TCP port 5001
TCP window size: 20.8 KByte (default)
------
[ 5] local 192.168.1.5 port 59762 connected with 192.168.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 5.0 sec 768 KBytes 1.26 Mbits/sec
[ 5] 5.0-10.0 sec 768 KBytes 1.26 Mbits/sec
[ 5] 0.0-11.4 sec 1.62 MBytes 1.20 Mbits/sec / thibault@ubuntu:~$ iperf -c 192.168.1.4 -i 5 -r -u -b 50m
------
Server listening on TCP/UDP port 5001
TCP window size: ??? KByte
------
[ 7] local 127.0.0.1 port 5001 connected with 192.168.1.5 port 52128
[ 7] 0.0-10.0 sec 2.66 Mbytes 2.13 Mbits/sec 40290/ 42538 (94.715316%)
TX / [ 4] local 192.168.1.5 port 5001 connected with 192.168.1.4 port 1029
[ 4] 0.0- 5.0 sec 763 KBytes 1.25 Mbits/sec
[ 4] 5.0-10.0 sec 909 KBytes 1.49 Mbits/sec
[ 4] 0.0-10.0 sec 1.64 MBytes 1.37 Mbits/sec / [ 3] 0.0- 5.0 sec 1.19 MBytes 2.00 Mbits/sec 4.794 ms 15/ 977 (1.5%)
[ 3] 5.0-10.0 sec 1.21 MBytes 2.02 Mbits/sec 5.037 ms 5/ 977 (0.51%)
[ 3] 10.0-15.0 sec 1.20 MBytes 2.02 Mbits/sec 5.248 ms 6/ 977 (0.61%)
[ 3] 15.0-20.0 sec 1.21 MBytes 2.03 Mbits/sec 5.021 ms 3/ 978 (0.31%)
[ 3] 20.0-25.0 sec 1.21 MBytes 2.03 Mbits/sec 5.021 ms 3/ 977 (0.31%)
[ 3] 25.0-30.0 sec 1.21 MBytes 2.03 Mbits/sec 5.043 ms 2/ 977 (0.2%)
[ 3] 30.0-35.0 sec 1.20 MBytes 2.02 Mbits/sec 5.458 ms 7/ 976 (0.72%)
[ 3] 35.0-40.0 sec 1.21 MBytes 2.03 Mbits/sec 4.959 ms 2/ 978 (0.2%)
[ 3] 40.0-45.0 sec 1.21 MBytes 2.02 Mbits/sec 5.002 ms 4/ 977 (0.41%)
[ 3] 45.0-50.0 sec 1.21 MBytes 2.03 Mbits/sec 5.055 ms 4/ 978 (0.41%)
  • To ensure good TCP TX performances, the send function call must NOT be made from the SOCKET_MSG_SENT callback. It is advised to put the function call directly in the program main loop (where function m2m_wifi_handle_events is periodically called).

3.  Performance summary

The following table gives an overview of the best possible performances according to the previous test reports: