搜索
bottom↓
回复: 9

请教:ffxz关于RTT+lwip+STM32F207中硬校验和及UDP速度问题?

[复制链接]

出0入0汤圆

发表于 2012-3-6 10:53:59 | 显示全部楼层 |阅读模式
我们最近在做一个项目,想用RTT+lwip的UDP做大量高速数据传输。目前测试的最大速度才到4M/s左右,从中也发现一些问题:
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周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2012-3-6 12:59:38 | 显示全部楼层
关注

出0入0汤圆

发表于 2012-3-6 14:01:39 | 显示全部楼层
马基

出0入0汤圆

发表于 2012-3-8 14:39:11 | 显示全部楼层
回复【楼主位】qinmeng  琴梦
我们最近在做一个项目,想用rtt+lwip的udp做大量高速数据传输。目前测试的最大速度才到4m/s左右,从中也发现一些问题:
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函......
-----------------------------------------------------------------------

下次不用加我的名字了,时间忙,非常忙。加了我的名字,别人都可能不会回答你。如果确实需要我来讨论,那么向RT-Thread的邮件列表发邮件吧,我看到后会直接回复邮件。谢谢。

出0入0汤圆

发表于 2012-3-8 15:18:22 | 显示全部楼层
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汤圆

发表于 2014-5-8 23:13:21 | 显示全部楼层
aozima 您能告诉下你的参数配置吗?我也是stm32207加83848,速度跟你的完全不是一个级别啊

出0入0汤圆

发表于 2014-5-10 01:17:51 来自手机 | 显示全部楼层
楼主,你在207上跑网络稳定不?性能怎么样,能不能给一个参数配置的思路?

出0入0汤圆

发表于 2014-11-3 17:58:46 | 显示全部楼层
aozima 发表于 2012-3-8 15:18
1. 20X的 CHECKSUM_BY_HARDWARE 没有改完。可以参考107修改。
   使用硬件校验时,需要为每一个包添加硬件 ...

我把你的配置加进去了,但是接收也就1.8M左右,发送5M左右,没达到你的8M啊,怎么回事?

出0入0汤圆

发表于 2014-11-4 09:15:33 | 显示全部楼层
求楼主工程,我用的207+83848.+ucos发送速度一直上不去。想问你是怎么配置的?

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-3-28 22:43

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

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