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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:05
和我最近测试的结果大致相同,STM32F7 上TCP 速率3Mbps左右。而之前我测试UDP,可以到30Mbps 以上。
4 u* k6 A/ o! E% _: d# I5 b+ q
: v+ x: k* b- S1 F( E" [  P2 h& `( ]+ ?1、测试目的
) C" M6 S. q( L    在尽量保持硬件和软件一致的前提下,测试LWIP和DJYIP两个协议栈的TCP接收不同包的速度。" V% s! S. y9 A8 E" G" E
2、测试方法
( M. B% V* w4 f     用一块STM32F7的发送板,应用层无延迟调用TCP发送函数send(),不断发送不同大小的数据包,数据包大小范围64 ~ 1460byte,接收端每1秒统计接收到的数据包,交终端上显示接收的速度。(当然,运行LWIP和DJYIP的两块接收板,运行在相同的主频,协议栈的pbuf缓冲、TCP接收窗口大小、优先级等一致。)   
  }; h8 P% h2 a3、软硬件平台6 e. n( H8 w& R1 ~$ T* F5 n
     硬件平台; m7 {4 P+ p$ ?8 G
LWIP        DJYIP8 r# `. ~5 V7 B/ z
运行板件        ST官方板STM32756G-EVAL2        STM32F7核心板8 B0 u: r1 ~. S4 k  p7 x: U
运行主频        200MHz        200MHz
; ~! X) e( J* E, f1 s连接方式        与发送板直连        与发送板直连
& J/ l( V4 r" g* ^编译调试        MDK        eclipse
( y; T* E) u* h* S; |8 x     软件平台
+ y# n9 f% K6 F' K! KLWIP        DJYIP& M' S# H$ B$ t- u, P( _+ A4 ?
网络驱动接收方式        中断        中断
- i# ~+ m- U- b  }$ C7 Q3 B7 dpbuf大小        16kbytes        16kbytes
: u# ~) ~9 n; H( B3 ?- T. NTCP窗口      
# v3 n: A# o7 O6 r* l2048
7 C- r4 I0 ^6 d; B( v8 F2048
; G0 q; x' `6 O: ^    其中,运行在STM32756G-EVAL2的LWIP的软件代码,是直接从ST官方下载的STM32Cube_FW_F7_V1.6.0版本固件库,5 S, p( [1 e& W( ?: A0 U+ I7 z. f& o
编译运行在MDK5.12.* Q# J, H0 `% u
: ]( s5 F5 [4 h3 U/ y% l
4、测试步骤
# Y- |/ `( {& ?: h& D
    (1)源码编写及修改
$ I2 c' O5 a1 ~  f$ L4 a             主要是比较基础的socket编程,发送板作为TCP客户端,两块接收板作为TCP服务器,客户端板建立TCP连接后,一直( e0 Q! P/ h, j# \5 P1 \  r
发送程序,服务器一直接收TCP数据,并统计接收速度。& |1 T- h! a7 s5 h; R8 `) @
              对STM32Cube_FW_F7_V1.6.0源码中LWIP的配置,需要修改lwipopts.h,主要修改了如下两行代码
$ o/ v: B! ?$ H% h; s# p1 R  |
  1. #define PBUF_POOL_SIZE          11//8; N) G8 r8 r4 Y# {% c( E
  2. #define TCP_WND                 2048//(2*TCP_MSS)# Z; x* p8 K8 p% v
  3.     (2)客户端发送4 p8 Q# C( e. V0 W1 p( [
  4.        while(1)   
    $ ]" G' [- a: ^. Y4 H- `, ~" ]
  5.       {
    7 C( k* z8 W2 @* n4 c4 [
  6.             byMsgBuf[0] = byMsgBuf[0] + 1;
    4 m+ U6 R$ ^! K8 p9 c! M! B* ?2 \
  7.             if(ClientSndRand)
    * W5 w/ A, ?) e: y; T% P) G4 Q
  8.             {7 {% p/ G# }$ F3 k) v
  9.                        iMsgLen =  (int)(drand48() * TCP_PKG_LEN_MAX);
    ; u% v4 A; q9 \3 z$ P
  10.             }5 ^  t6 N' D8 R5 i* Q* \
  11.             else/ N% w' C* [+ E/ P7 m# Y" ~
  12.             {
    - R) `- a. c3 A& y" Q  S6 b6 T6 E
  13.                     iMsgLen = ClientSndLen;
    ) n* n" J" P# a+ V: t
  14.             }% E% Z( U; h" E0 J( ]' n
  15.             if(iMsgLen)
    + S0 P8 |  E8 m+ u: {, R  J0 Q
  16.                     iMsgLen = send(sockfd, byMsgBuf, iMsgLen, 0);# h1 v/ Y* {# g9 x( g; l
  17.     }7 p4 z4 E. {) ^1 C+ C) h' x. O. G  @
  18.     (3)服务器接收- a$ w9 u: m( E( V- S* V4 T$ H7 `% \
  19.           while(1). Y/ `# S$ Y$ S/ T# Q+ U: |
  20.          {
    # i/ v* U9 x6 r) L6 V( k$ y
  21.                  iMsgLen = recv( sFd, byMsgBuf, SvrRcvLen, 0);
    , G( z, l% S. I8 @* y% h
  22.                  iMsgCnt += iMsgLen;
    5 Q' H3 S, `6 u2 X) W
  23.           }
复制代码

' Y6 E. B0 D( ]* Q, t5、测试结果
' b4 a% ]9 |$ Z! P9 S# _# F       测试结果如下表所示  e+ Q, N0 g7 v

% n' j6 e7 D# Z( e发送包(byte)        LWIP(Mbytes/s)        DJYIP(Mbytes/s)* O; G, h% I) P- P; F- g
1400                      3.02                                 3.18/ ^1 U- S# _0 [" r, @. L
1024                       4.22                                3.161 T2 ?3 r- O( S4 v
512                        3.07                                    34 {9 B* Q  M9 E: y$ H/ x
256                        2.02                                    2.57 E7 W: R9 Y/ Q4 A! U# J; G3 J
128                       0.2±0.2                              1.76
8 U; _( X1 l+ u- |64                          0.2±0.2                             1.12
7 E$ M6 z; Y9 j) F5 z& x; Srand*1460        1M内变动        2.52
1 Q" [* g  w, G( a% O      其中,rand是产生0~1的随机数。LWIP这组数据中,1024的速度大于1400,有可能是8 ^' _8 g" x) {# Z6 A% u
因为1024是2的整数次幂的原因(可能猜测)。  K0 Y2 W3 ?; y9 g
! K$ o. l3 W8 J! n; f

5 N2 u! y, s  L" n
收藏 评论0 发布时间:2021-12-17 12:05

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版