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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:05
和我最近测试的结果大致相同,STM32F7 上TCP 速率3Mbps左右。而之前我测试UDP,可以到30Mbps 以上。. k, a7 S" N# J. m; c: c

! T. N! Q/ ]$ z1 N3 J1、测试目的
* ]" Y. j- E& c/ A& Q% P) g    在尽量保持硬件和软件一致的前提下,测试LWIP和DJYIP两个协议栈的TCP接收不同包的速度。
4 B) q* ^/ J" Q% s9 k2、测试方法: B, x3 \% Z* M7 ?( Z- K
     用一块STM32F7的发送板,应用层无延迟调用TCP发送函数send(),不断发送不同大小的数据包,数据包大小范围64 ~ 1460byte,接收端每1秒统计接收到的数据包,交终端上显示接收的速度。(当然,运行LWIP和DJYIP的两块接收板,运行在相同的主频,协议栈的pbuf缓冲、TCP接收窗口大小、优先级等一致。)   7 j/ h  V) b# U; K9 _( h/ L6 T+ h9 Q
3、软硬件平台
& w; a; f& u" B7 n8 m/ r; ]6 S+ ]     硬件平台" }5 f( l" @5 G1 P) f; O/ w  B& Y
LWIP        DJYIP5 w5 \/ z0 }1 ?0 m. w' s
运行板件        ST官方板STM32756G-EVAL2        STM32F7核心板* W$ U6 H7 r+ }: u6 }+ p7 a& ]7 u3 ^
运行主频        200MHz        200MHz3 w9 s# ~" z- y6 R; k
连接方式        与发送板直连        与发送板直连; Y( F( h7 @+ \
编译调试        MDK        eclipse
) g$ E% x* E6 ?+ ~' L, E     软件平台
" U' Y2 \+ I3 g. q1 v$ {* S8 K' |LWIP        DJYIP
5 R, h+ S9 X, Q网络驱动接收方式        中断        中断
# w. l5 ?" o/ {: k! apbuf大小        16kbytes        16kbytes
( r, l6 D  d0 ]$ A: eTCP窗口       " a2 R9 ], d  f9 i+ ~
2048
' F8 e9 [/ v$ @% a2048
( q7 ]& y; K: w    其中,运行在STM32756G-EVAL2的LWIP的软件代码,是直接从ST官方下载的STM32Cube_FW_F7_V1.6.0版本固件库,
4 H, @9 c+ n. }/ F编译运行在MDK5.12.& j5 b# s7 X& x% t- @! J

+ S# {" @' ~; p: }+ m# J4、测试步骤

6 |/ T$ [" z; g  c. F6 X" f4 P    (1)源码编写及修改. Y- a; H* T, p9 P
             主要是比较基础的socket编程,发送板作为TCP客户端,两块接收板作为TCP服务器,客户端板建立TCP连接后,一直
3 ]* t4 x6 N+ _2 I! F+ E' V发送程序,服务器一直接收TCP数据,并统计接收速度。" q3 u* m) f# [) a1 T& z. b
              对STM32Cube_FW_F7_V1.6.0源码中LWIP的配置,需要修改lwipopts.h,主要修改了如下两行代码( F4 D, T: k! ~$ R  _
  1. #define PBUF_POOL_SIZE          11//8
    ' `$ U1 B' m; e: }7 [% ~
  2. #define TCP_WND                 2048//(2*TCP_MSS)
    0 b7 c( ^; [7 o+ x
  3.     (2)客户端发送. _, M+ Y, a0 C, |( z
  4.        while(1)   ( X: k6 Z5 c0 v1 ^- ~+ L8 h2 j
  5.       {* A0 S6 o# U4 G8 y
  6.             byMsgBuf[0] = byMsgBuf[0] + 1;+ T1 f8 R( v; f$ o- ]3 a0 b* ~  k$ j
  7.             if(ClientSndRand)
      k$ k& s4 {9 I+ \: N( R4 I  l
  8.             {6 p6 J3 C& Z- I3 T- a6 }6 F6 D% E
  9.                        iMsgLen =  (int)(drand48() * TCP_PKG_LEN_MAX);
    3 s: D4 R9 [% N  Z/ @
  10.             }' L( w& L( W% R8 G- {' k
  11.             else
    # g% u) I  X* @& ]: x0 H9 |# Q
  12.             {$ S2 W" \2 w1 y; X, I3 U' c
  13.                     iMsgLen = ClientSndLen;3 [! S" F- j* g3 u$ u$ M9 x
  14.             }7 _5 N% _' ?( _' @2 s
  15.             if(iMsgLen)# p8 B- e4 v) Z% ~, E
  16.                     iMsgLen = send(sockfd, byMsgBuf, iMsgLen, 0);5 W; F8 w1 `& a6 }5 J
  17.     }( F  i( |$ Z$ h
  18.     (3)服务器接收9 |4 |7 \5 z, C5 N
  19.           while(1)0 R" g. u% s# N
  20.          {& t0 a( K/ ~. O% a* }) a
  21.                  iMsgLen = recv( sFd, byMsgBuf, SvrRcvLen, 0);
    ( r' }; l% B4 v* z( T* [
  22.                  iMsgCnt += iMsgLen;( \$ W- S+ ]6 [+ P/ l( L( I! x3 x
  23.           }
复制代码

3 S8 G+ h, ^' [5 D( u0 `/ O! Z5、测试结果
3 d- K3 r, P6 Y: t! N+ _% N/ y       测试结果如下表所示
# P: J7 `& J" O, [% v% @& \( M6 D: O, B/ ?
发送包(byte)        LWIP(Mbytes/s)        DJYIP(Mbytes/s)1 f& b: r/ \* w5 j5 n. e8 X  Q
1400                      3.02                                 3.18
% Y# S3 i3 e9 w( ]% {9 Q# @1024                       4.22                                3.162 o% o1 b5 Y3 t3 p* }9 t
512                        3.07                                    3  S1 z3 [) K0 D5 Q5 |& c) f" V5 ^
256                        2.02                                    2.55 R& m0 X! Z' E- F4 J. E( w
128                       0.2±0.2                              1.76
: h: E9 f3 q9 E64                          0.2±0.2                             1.12
0 f# o5 X7 c4 U$ z1 r* hrand*1460        1M内变动        2.52
& Y/ h- q$ g$ ?$ I+ b      其中,rand是产生0~1的随机数。LWIP这组数据中,1024的速度大于1400,有可能是
% i% Y$ w$ ?! z  P) Q8 R% }2 y因为1024是2的整数次幂的原因(可能猜测)。
; S* ]$ ^2 c5 W/ z0 Y' z% m) [. v, l( r  J
* B8 G9 W, Y) P4 i5 b+ Z
赞 收藏 评论0 发布时间:2021-12-17 12:05

举报

0个回答

所属标签

相似技术帖

官网相关资源

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