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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:05
和我最近测试的结果大致相同,STM32F7 上TCP 速率3Mbps左右。而之前我测试UDP,可以到30Mbps 以上。2 c* g/ D$ O& ]
, P0 z2 \9 C3 \, Y
1、测试目的
! T9 Q' `7 r# g$ p* c  Q/ G& O7 f% [: t    在尽量保持硬件和软件一致的前提下,测试LWIP和DJYIP两个协议栈的TCP接收不同包的速度。/ F& e6 t$ N, U4 {$ x% |1 L8 X- [! x
2、测试方法( S& L& x3 w( w# v. m+ o) [
     用一块STM32F7的发送板,应用层无延迟调用TCP发送函数send(),不断发送不同大小的数据包,数据包大小范围64 ~ 1460byte,接收端每1秒统计接收到的数据包,交终端上显示接收的速度。(当然,运行LWIP和DJYIP的两块接收板,运行在相同的主频,协议栈的pbuf缓冲、TCP接收窗口大小、优先级等一致。)   
" f# O! ?) O" R# P3、软硬件平台
  @! B/ l% B: b4 b2 b! X     硬件平台$ m% x' d! I5 p$ T7 r/ t- k7 Y: Y8 C
LWIP        DJYIP
3 j3 r+ R' ~; F: ~4 f$ d运行板件        ST官方板STM32756G-EVAL2        STM32F7核心板+ ]* \! @. g# x; X# i5 P  d
运行主频        200MHz        200MHz) u" a* K" @* o. h
连接方式        与发送板直连        与发送板直连! U) x+ Z5 u) L2 T
编译调试        MDK        eclipse
% I9 l9 X* J* A$ b5 D2 T! _0 z- n     软件平台' b& G& w3 a3 N5 ^, Z
LWIP        DJYIP
7 Y2 D2 L6 w2 S* D# B网络驱动接收方式        中断        中断" f& Y, E7 d) l/ B% p$ B
pbuf大小        16kbytes        16kbytes
9 Q: B) Y, w  l& hTCP窗口      
9 _$ W3 K# `- |: s; o7 i# z1 p& q20482 @1 ^$ A- ~- _! w: n- y# Q, w
2048! W" R1 `8 `2 f, Z1 e* f
    其中,运行在STM32756G-EVAL2的LWIP的软件代码,是直接从ST官方下载的STM32Cube_FW_F7_V1.6.0版本固件库,; u" B8 d3 g: B6 O  @
编译运行在MDK5.12.
1 P4 Y1 Z1 d+ u6 _+ b
  l5 B8 {( u) ^. l4、测试步骤

4 H( a. K) G( ?& Y# D+ {# m    (1)源码编写及修改. W2 K2 b5 k' K! n
             主要是比较基础的socket编程,发送板作为TCP客户端,两块接收板作为TCP服务器,客户端板建立TCP连接后,一直- K2 }4 R. H2 p
发送程序,服务器一直接收TCP数据,并统计接收速度。
% i' C/ i2 A4 u              对STM32Cube_FW_F7_V1.6.0源码中LWIP的配置,需要修改lwipopts.h,主要修改了如下两行代码
0 h4 _! P7 g& ?
  1. #define PBUF_POOL_SIZE          11//88 s3 ~+ M2 _4 r$ U9 Y" x' L
  2. #define TCP_WND                 2048//(2*TCP_MSS)
    + }; c4 [# s0 h1 i  O- d1 E# @
  3.     (2)客户端发送. J: W2 p8 j: Z8 O$ `, i, k2 ~
  4.        while(1)   
    8 u+ d& I3 E4 ~: c
  5.       {
    3 y4 ]5 g9 e% Q: d1 k- s, H/ Q
  6.             byMsgBuf[0] = byMsgBuf[0] + 1;
    & K1 D2 N7 @9 L, h, N
  7.             if(ClientSndRand)
    2 h: |2 h! B" n2 z
  8.             {' c, \6 W6 O, C. c1 {8 x
  9.                        iMsgLen =  (int)(drand48() * TCP_PKG_LEN_MAX);% t6 a0 ~3 W9 a- Q( E2 x4 N
  10.             }
      A- d/ X, {" [2 l3 b8 r* ?; ~
  11.             else
    . [1 h8 ]5 M' T, ^
  12.             {
    # d% q' p- m9 L4 }
  13.                     iMsgLen = ClientSndLen;
    0 ~1 b" v2 ?( A& }! O+ z* L" K
  14.             }" x1 P8 l4 S( B$ H
  15.             if(iMsgLen)% b4 `( D! i* f8 f7 Z* x0 L
  16.                     iMsgLen = send(sockfd, byMsgBuf, iMsgLen, 0);* G1 m4 G# {" b
  17.     }: ~, H; _! ?. h$ m0 Y+ V% n& w
  18.     (3)服务器接收
    : p$ Z! |2 t0 C/ S2 i9 T6 S, Z
  19.           while(1)' ~  }0 c* W& B' `
  20.          {9 r# |! B- B' }/ M, R
  21.                  iMsgLen = recv( sFd, byMsgBuf, SvrRcvLen, 0);
    ( w9 d) j$ S. r5 K4 g/ V: N
  22.                  iMsgCnt += iMsgLen;
      r" J5 B$ f. T
  23.           }
复制代码
# |8 r6 E7 ]3 W
5、测试结果
. o1 j+ Y$ W' ^2 d( ]/ H       测试结果如下表所示3 o9 [$ P; x7 o% _+ {* o- X! H: ^
8 ]" x0 S  Z4 e- T* g9 t
发送包(byte)        LWIP(Mbytes/s)        DJYIP(Mbytes/s)
, V5 B; ?, b' @$ F+ u" \1400                      3.02                                 3.18
: N: {4 K6 |8 I1 y1024                       4.22                                3.16( I! O5 f; ]. |( Z. e1 x5 U* i
512                        3.07                                    36 ~8 O, ]: k9 _4 i9 `
256                        2.02                                    2.5
9 N* P6 Y( n2 r2 _9 O128                       0.2±0.2                              1.76
' }, r# ?0 b, |+ l9 W3 f' A0 ]64                          0.2±0.2                             1.12
& ^# r; u2 `0 n( t) Z1 n+ h. ^rand*1460        1M内变动        2.52. N6 N6 x6 `9 D: M
      其中,rand是产生0~1的随机数。LWIP这组数据中,1024的速度大于1400,有可能是
5 ?3 E; Y" ], P( R* t8 Y' R因为1024是2的整数次幂的原因(可能猜测)。
1 ^+ _& Z4 H* x" w: r' i# ]+ b- Y3 h, A' n2 B: K. v

7 q0 M9 J$ s, [: c
赞 收藏 评论0 发布时间:2021-12-17 12:05

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版