搜索
bottom↓
回复: 14

STM32F2xx芯片,uCOS下UDP传送速度能到11.3MB/s,RTT只到4MB/s,我对问题的分析及RTT的网

[复制链接]

出0入0汤圆

发表于 2012-3-8 10:59:08 | 显示全部楼层 |阅读模式
1、RTT(1.0.0版本)中的lwip,怎么没有开启STM32的硬校验和?这样速度很难上去的,这也是STM32的一个特点:对网络的加速。
  最近我试着加入#define CHECKSUM_BY_HARDWARE发现,网络通一下之后就死掉了,跟踪进去,发现,收到的IP包在tcpip_input函数向mbox邮箱中发送成功,但是tcpip_thread函数中取不出来~不清楚在哪儿挂掉了。
2、memcpy问题:发现memcpy函数有很多可以优化的地方。我们都知道,对于STM32这种32位片子,如果拷贝的数据是字对齐的话,按字节搬移,要比单字节的搬移快许多。还有IAR,C语言库函数中也对memcpy函数做了优化。而RTT的lwip中rt_stm32_eth_tx函数,在向外发送数据的时候,用的是自定义的字节搬移。我调用C语言库函数的memcpy函数,UDP速度能到8.7M/s
3、同样我也在uCOS+lwip上做了比较,UDP发送速度最高能到11.3M/s。目前在uCOS+lwip上一切运行良好,我们也是想从uCOS+lwip迁移到RTT上来。希望大神们多多交流经验,RTT越来越好!
4、不知道大家在用RTT中的lwip,是否注意到了上面的问题。你们是用的软件产生校验和还是硬件产生校验和?,具体在用硬件产生校验和应该怎么实现,需要注意哪些地方?先谢谢了~~~~

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-3-8 11:45:09 | 显示全部楼层
好帖留名。

出0入0汤圆

发表于 2012-3-8 13:19:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-8 14:33:46 | 显示全部楼层
谢谢建议。

看了下驱动,目前确实是一个字节一个字节去搬的,这些驱动因为更多只是demo性质,也未用于产品中,所以能偷懒的部分估计都偷懒了。从STM32 EMAC的ip core角度来说,它应该有很大的优化空间

另外,关于校验和的问题,记得aozima曾经开启过。但是STM32 EMAC ip core的一个bug是,它不支持ICMP的校验,所以开启后导致不能够ping通。这块记得当时aozima也做了个work around,具体是驱动还是 LwIP 进行有些不记得了。

出0入0汤圆

发表于 2012-3-8 16:00:05 | 显示全部楼层
1. 20X的 CHECKSUM_BY_HARDWARE 没有改完。可以参考107修改。
   使用硬件校验时,需要为每一个包添加硬件校验的标致。
点击此处下载 ourdev_724939PML70T.zip(文件大小:25K) (原文件名:stm32f20x_emac_rtt.zip)
   
2. 使用memcpy会快些,原来的demo没有考虑这个。

3. RT-Thread+LWIP 在 STM32(仅限于内置EMAC)上收发速率可以达到93%。
   但一般应用并不是需要这么高的速度,所以一般以稳定为主。
   以下是207的netio的TCP测试:
TCP connection established.
Packet size  1k bytes:  8372.03 KByte/s Tx,  4380 Byte/s Rx.
Packet size  2k bytes:  7784.27 KByte/s Tx,  3268.82 KByte/s Rx.
Packet size  4k bytes:  8104.64 KByte/s Tx,  6664.97 KByte/s Rx.
Packet size  8k bytes:  8449.38 KByte/s Tx,  6438.47 KByte/s Rx.
Packet size 16k bytes:  8972.13 KByte/s Tx,  6617.94 KByte/s Rx.
Packet size 32k bytes:  8575.74 KByte/s Tx,  6387.14 KByte/s Rx.
Done.

4. STM32的硬件校验要求原校验值必须为0,因为ICMP_RELPY在回应时,
   仅是将数据包的源地址和目标地址交换,所以校验值并不需要完全计算,
   仅做一下变换即可,所以LWIP没有提供关闭ICMP的校验方法。
   因此,需要在STM32的EMAC驱动中清0 ICMP的校验。

以下是综合测试:
icmp reply speed: 11881 kBytes/s
UDP 32   bytes Rx speed: 520   kBytes/s
UDP 64   bytes Rx speed: 1041  kBytes/s
UDP 128  bytes Rx speed: 2083  kBytes/s
UDP 512  bytes Rx speed: 6250  kBytes/s
UDP 1024 bytes Rx speed: 12500 kBytes/s
UDP 1460 bytes Rx speed: 11881 kBytes/s
UDP 32   bytes Tx speed: 280   kBytes/s
UDP 64   bytes Tx speed: 604   kBytes/s
UDP 128  bytes Tx speed: 1182  kBytes/s
UDP 512  bytes Tx speed: 4240  kBytes/s
UDP 1024 bytes Tx speed: 7683  kBytes/s
UDP 1400 bytes Tx speed: 8847  kBytes/s

出0入0汤圆

 楼主| 发表于 2012-3-8 21:11:03 | 显示全部楼层
回复【3楼】ffxz  
-----------------------------------------------------------------------

谢谢ffxz跟aozima的回复,对于ICMP的校验和的问题,ST公司在其demo中已经做了修改。
我在aozima给的程序基础上,把ICMP的校验和部分去掉了,而是按照ST公司给的demo中直接加到了icmp.c文件中了
刚测试了下速度,RTT+lwip的UDP同样能到11.3MB/s。

出0入8汤圆

发表于 2012-3-8 22:04:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-8 22:52:54 | 显示全部楼层
学习

出0入0汤圆

发表于 2012-3-8 23:00:29 | 显示全部楼层
请问收发速率是如何测出来的?

出0入0汤圆

发表于 2012-3-9 12:52:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-5-30 10:46:22 | 显示全部楼层
请问大哥们,以下是综合测试:
icmp reply speed: 11881 kBytes/s
UDP 32   bytes Rx speed: 520   kBytes/s
UDP 64   bytes Rx speed: 1041  kBytes/s
UDP 128  bytes Rx speed: 2083  kBytes/s
UDP 512  bytes Rx speed: 6250  kBytes/s
UDP 1024 bytes Rx speed: 12500 kBytes/s
UDP 1460 bytes Rx speed: 11881 kBytes/s
UDP 32   bytes Tx speed: 280   kBytes/s
UDP 64   bytes Tx speed: 604   kBytes/s
UDP 128  bytes Tx speed: 1182  kBytes/s
UDP 512  bytes Tx speed: 4240  kBytes/s
UDP 1024 bytes Tx speed: 7683  kBytes/s
UDP 1400 bytes Tx speed: 8847  kBytes/s

这个测试怎么做?在命令提示符里打什么吗?

小弟纯新手,勿喷勿喷

出0入0汤圆

发表于 2012-5-31 00:00:46 | 显示全部楼层
backsmar 发表于 2012-5-30 10:46
请问大哥们,以下是综合测试:
icmp reply speed: 11881 kBytes/s
UDP 32   bytes Rx speed: 520   kBytes/ ...

RT-Thread下的lwip的例子使用netio来测试速度

出0入0汤圆

发表于 2012-5-31 15:40:59 | 显示全部楼层
aozima 发表于 2012-5-31 00:00
RT-Thread下的lwip的例子使用netio来测试速度

谢谢~ 唉,也不知道什么时候论坛能恢复下载附件

出0入0汤圆

发表于 2012-6-10 11:38:40 | 显示全部楼层
aozima 发表于 2012-5-31 00:00
RT-Thread下的lwip的例子使用netio来测试速度

那个网页是测试  TCP性能的,  但怎么测试  UDP   呢?  谢谢

出0入0汤圆

发表于 2012-6-13 14:31:46 | 显示全部楼层
记下,好东东
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 01:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表