请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F7 LWIP协议栈TCP速度测试

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:05
和我最近测试的结果大致相同,STM32F7 上TCP 速率3Mbps左右。而之前我测试UDP,可以到30Mbps 以上。
* s; ]' |- Z4 ~+ G
% P, ]; b6 }  d% f5 e7 K$ J1、测试目的9 L, |$ u; d. I: R- i
    在尽量保持硬件和软件一致的前提下,测试LWIP和DJYIP两个协议栈的TCP接收不同包的速度。
* O/ ]& |4 W: M* J# e& b$ v2、测试方法4 C5 |) H; F3 B5 x- {
     用一块STM32F7的发送板,应用层无延迟调用TCP发送函数send(),不断发送不同大小的数据包,数据包大小范围64 ~ 1460byte,接收端每1秒统计接收到的数据包,交终端上显示接收的速度。(当然,运行LWIP和DJYIP的两块接收板,运行在相同的主频,协议栈的pbuf缓冲、TCP接收窗口大小、优先级等一致。)   
; {9 ?8 ]. g0 V' d1 r' F5 t4 |3、软硬件平台
! u2 l; j9 n, L2 N3 w     硬件平台6 G5 ^4 m% n! j* l# `; J' u3 C
LWIP        DJYIP
: ^( J) w, F$ }7 e  M4 `  T运行板件        ST官方板STM32756G-EVAL2        STM32F7核心板
( r- O5 v% K9 a! _( P" M/ |运行主频        200MHz        200MHz
# ?: J! l+ n, w% h3 J连接方式        与发送板直连        与发送板直连
5 I& P  D# ~( i5 }) H6 u# Y编译调试        MDK        eclipse
; F( L  J* R( B# O4 D. {  a1 n     软件平台" g2 M  o! _2 I* |$ V- d0 f
LWIP        DJYIP9 K: U2 v8 m% z: K/ k5 U) U
网络驱动接收方式        中断        中断+ a; D- }1 L& S0 c+ b+ ?9 L
pbuf大小        16kbytes        16kbytes8 ]* n' y4 A( F
TCP窗口       & ]# U; n$ D# c0 ?7 V; ?
2048
9 Q1 t' x( y8 z, G7 d8 y$ I5 ~2048
7 [7 E$ i' X6 G3 D9 H' S' d    其中,运行在STM32756G-EVAL2的LWIP的软件代码,是直接从ST官方下载的STM32Cube_FW_F7_V1.6.0版本固件库,2 n. Z6 j) x+ c$ ~$ t! R
编译运行在MDK5.12.2 R- L* k( K5 ?( k' p

  Q: Y- J1 z, I7 g: `- O4、测试步骤

+ h6 Q) g5 P2 r. [+ ?2 h3 S2 t4 W' W    (1)源码编写及修改8 R4 ~3 r. _0 P" y
             主要是比较基础的socket编程,发送板作为TCP客户端,两块接收板作为TCP服务器,客户端板建立TCP连接后,一直
1 E2 I/ k; V# `$ S4 Z. I发送程序,服务器一直接收TCP数据,并统计接收速度。( @& W! G  c9 C3 c
              对STM32Cube_FW_F7_V1.6.0源码中LWIP的配置,需要修改lwipopts.h,主要修改了如下两行代码9 e1 C! Y8 ]* b( s0 |
  1. #define PBUF_POOL_SIZE          11//8. E& g9 l; a* y  f/ B# X  W9 d
  2. #define TCP_WND                 2048//(2*TCP_MSS)
    % U' Z' W7 D: }9 y5 |6 x
  3.     (2)客户端发送& e9 j1 ^% J% ~! B
  4.        while(1)   ) \* R/ Q; Y1 [* J2 ]3 H; c3 q
  5.       {% G, ]( Y$ B; a8 X3 w9 f
  6.             byMsgBuf[0] = byMsgBuf[0] + 1;" b. O5 L: ?- j/ o  s
  7.             if(ClientSndRand)" W! I1 a- X4 H
  8.             {
    2 p# v/ K, l: d7 B' X
  9.                        iMsgLen =  (int)(drand48() * TCP_PKG_LEN_MAX);
    8 B% s5 {, C, b
  10.             }
      |7 b  O6 R4 V" g
  11.             else2 A/ O3 o/ ?& d) s" S" Z1 W
  12.             {
    ) }2 A* w3 _! _3 X9 u! G1 a7 I
  13.                     iMsgLen = ClientSndLen;
    , e2 s6 }6 m$ M+ D$ C1 R  k8 f
  14.             }
    , Q5 b* t& k) J0 ^' U
  15.             if(iMsgLen)
    ; Q5 O6 C( S$ x9 d+ T  a4 p2 m
  16.                     iMsgLen = send(sockfd, byMsgBuf, iMsgLen, 0);7 Z- |' K+ ]: q( U& C! y
  17.     }
    / h8 c: f. d) s8 e
  18.     (3)服务器接收
    ( h' x, P% ]2 Q7 [  k0 E& B+ F8 `
  19.           while(1)7 f' [& v& g: f
  20.          {
    # J3 c0 B: o5 Y, z: Y' ~
  21.                  iMsgLen = recv( sFd, byMsgBuf, SvrRcvLen, 0);
    - K; w+ V  d$ N3 P: g+ ?
  22.                  iMsgCnt += iMsgLen;) W* Q! v" d3 o% C2 _
  23.           }
复制代码

% {' o# m& A. _6 }5、测试结果- A4 m  ?; p! p9 ]5 B4 F; G
       测试结果如下表所示
& N9 P# C! N8 [/ R9 F& f; N  l2 J8 w$ k1 c! F9 t5 K3 l5 F+ v
发送包(byte)        LWIP(Mbytes/s)        DJYIP(Mbytes/s)- K8 V% j0 Y) i2 }9 j
1400                      3.02                                 3.18
( a4 P- D! E0 n# J" [& a9 g, ]1024                       4.22                                3.16/ R- }, a5 k2 {- l$ m% j4 |
512                        3.07                                    30 L% V& P* n1 }8 J: {
256                        2.02                                    2.5
, g1 P9 W# E4 p$ A1 V& O! v5 t& F$ [- M128                       0.2±0.2                              1.76
' o3 p; G0 Y$ P) a64                          0.2±0.2                             1.123 g2 U, r. ^3 P& o6 \' _* k
rand*1460        1M内变动        2.52
# v) y% e2 F8 N      其中,rand是产生0~1的随机数。LWIP这组数据中,1024的速度大于1400,有可能是# x! h0 w9 P: T$ B" a5 N# q
因为1024是2的整数次幂的原因(可能猜测)。5 T) c- f' z6 S, ^6 z( r& u7 s* f5 R
% I5 J% f( N1 j" d7 X7 r9 X

# `/ H3 e  P) n( a
收藏 评论0 发布时间:2021-12-17 12:05

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版