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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:05
和我最近测试的结果大致相同,STM32F7 上TCP 速率3Mbps左右。而之前我测试UDP,可以到30Mbps 以上。
* C! a( ]: Z4 o# G/ b0 [! S: X5 m8 V$ r) o" N9 ?
1、测试目的" K( x0 G8 G4 c6 V3 R: ?4 V0 s
    在尽量保持硬件和软件一致的前提下,测试LWIP和DJYIP两个协议栈的TCP接收不同包的速度。. x7 `' x2 y3 J1 n1 R. P$ I/ }
2、测试方法
3 h+ M! f5 _9 v     用一块STM32F7的发送板,应用层无延迟调用TCP发送函数send(),不断发送不同大小的数据包,数据包大小范围64 ~ 1460byte,接收端每1秒统计接收到的数据包,交终端上显示接收的速度。(当然,运行LWIP和DJYIP的两块接收板,运行在相同的主频,协议栈的pbuf缓冲、TCP接收窗口大小、优先级等一致。)   
% U: k5 B" n2 i" o- D! N3、软硬件平台" R- q+ g0 k  O
     硬件平台
5 g& z0 l/ }8 {8 K, \8 l1 g( bLWIP        DJYIP2 l0 j) g- ^- g8 O9 }2 ~
运行板件        ST官方板STM32756G-EVAL2        STM32F7核心板/ E, A2 N$ d8 |2 D
运行主频        200MHz        200MHz2 |% D8 L8 v* ?) S. M6 m
连接方式        与发送板直连        与发送板直连
, n: p! |% x+ O% g# J编译调试        MDK        eclipse
# Q5 X( k; j) x' f1 h1 R3 O' j     软件平台; M) e1 I" Q6 v
LWIP        DJYIP6 U. l' |1 ~, F; h, H0 c
网络驱动接收方式        中断        中断
" A' Y# N4 B% W$ a8 {pbuf大小        16kbytes        16kbytes
" _2 g5 P/ B. GTCP窗口       9 H" Z& {- Z& u! E3 ~* G0 h0 e/ t1 L
2048
4 U( s$ h# m& Z$ t6 A3 c( O$ a2048$ d+ [' U% g6 O/ D- |
    其中,运行在STM32756G-EVAL2的LWIP的软件代码,是直接从ST官方下载的STM32Cube_FW_F7_V1.6.0版本固件库,$ H! n, B3 Q% K5 {# W
编译运行在MDK5.12.
" O" a! O7 G& b& r0 [) o$ W& I
8 l. Z) \8 m1 l1 s, h, i4、测试步骤
- p7 F( q6 B+ m1 P' a$ I! k
    (1)源码编写及修改1 C7 O/ c9 A- P9 w! a( V- ]
             主要是比较基础的socket编程,发送板作为TCP客户端,两块接收板作为TCP服务器,客户端板建立TCP连接后,一直
/ K7 H/ r$ [7 K2 c4 N% Q发送程序,服务器一直接收TCP数据,并统计接收速度。
% C0 A  B0 A) R" @# J0 |8 ^1 ~              对STM32Cube_FW_F7_V1.6.0源码中LWIP的配置,需要修改lwipopts.h,主要修改了如下两行代码2 x+ C* I9 Z" {1 f6 d/ b4 N
  1. #define PBUF_POOL_SIZE          11//88 w0 M) T+ G; F/ K6 S" v
  2. #define TCP_WND                 2048//(2*TCP_MSS)/ B1 Y1 s; a7 G- V: J! ?- B
  3.     (2)客户端发送
    2 W3 \, z+ ^1 F
  4.        while(1)   
    " T3 E$ G8 l+ p9 T- n4 s7 o
  5.       {
    " K3 F& i! d' n) ]
  6.             byMsgBuf[0] = byMsgBuf[0] + 1;$ D# _, d- Q, M1 p) L
  7.             if(ClientSndRand)4 J5 h( m% @7 O6 z2 S
  8.             {% }% A+ K* }/ p2 ]
  9.                        iMsgLen =  (int)(drand48() * TCP_PKG_LEN_MAX);  ~! I* Z" G$ _% Q8 D- n0 J
  10.             }
    , {( f1 d+ u9 f' J
  11.             else
    1 m' o- E/ a$ t! ^8 e! c; L
  12.             {
    4 l( \& L( u9 K( |! V) L5 ~
  13.                     iMsgLen = ClientSndLen;8 ]0 E1 a" R7 J0 z; l+ z# H
  14.             }
    * h) d4 B: o4 G0 |4 }& X, C
  15.             if(iMsgLen)5 e# L8 G& n6 K4 ], B7 A( Q
  16.                     iMsgLen = send(sockfd, byMsgBuf, iMsgLen, 0);
    2 K. }& y5 X, `! M5 T
  17.     }
    + ^; {& k3 P* \' Y& h  e: q
  18.     (3)服务器接收; U/ J% W2 J2 R# I; Q
  19.           while(1)% c, U# N& v% O# u
  20.          {
    , c$ L- u8 Y* X$ @! p2 c0 h
  21.                  iMsgLen = recv( sFd, byMsgBuf, SvrRcvLen, 0);
    2 W/ U3 i( y2 }8 |* Z
  22.                  iMsgCnt += iMsgLen;
    " u# m- X3 b* }1 b) A
  23.           }
复制代码
  I0 {3 i6 C% n7 W7 ]
5、测试结果
! N$ P: s% d  u, j- J; T/ n2 k" I       测试结果如下表所示
! S9 I* U5 H+ a9 g9 F/ h  ]
" y5 s+ a8 j4 V0 G4 ^* W" ?发送包(byte)        LWIP(Mbytes/s)        DJYIP(Mbytes/s)
6 w/ H7 b9 Y  R) ^" \1400                      3.02                                 3.18
: A/ g9 C8 J$ h. o$ D1024                       4.22                                3.160 T6 M6 k) F) g4 o) A# n
512                        3.07                                    32 s7 P* H4 F! ]& ?, R
256                        2.02                                    2.5
% m, n) o! }8 _3 o$ n( O128                       0.2±0.2                              1.767 C! k( C- v( s5 {! ?
64                          0.2±0.2                             1.12
' \% C$ y  z+ f3 o  l; I. W; Crand*1460        1M内变动        2.52* A4 I% L! `: z/ `" m
      其中,rand是产生0~1的随机数。LWIP这组数据中,1024的速度大于1400,有可能是7 A0 C2 n. Y5 P& i- E7 m' Y
因为1024是2的整数次幂的原因(可能猜测)。
% R6 j& s% [% h% F* ?) `; K. G% L& d0 [( ~0 f/ M
4 O' _* w- g8 l
收藏 评论0 发布时间:2021-12-17 12:05

举报

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