搜索
bottom↓
回复: 17

【经验分享】如何减少MQX RTCS使用内存

[复制链接]

出0入0汤圆

发表于 2014-8-27 10:24:14 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_DANIEL 于 2014-8-27 14:28 编辑

嵌入式系统内存非常有限,在开发基于RTCS的应用程序时,我们经常会碰到TCP/IP内存不足的问题。如何降低内存,同时又满足嵌入式系统的需求是每个开发者需要考虑的问题。本文主要介绍RTCS的初始化参数及如何合理的配置来降低嵌入式系统的内存。
        RTCS协议栈中有一些全局变量,应用程序创建RTCS协议栈时对这些变量赋值。这些变量包括_RTCSPCB , _RTCS_msgpool , _RTCS_socket_part,Tx Window Size and Rx Window Size 所有的变量都有一个默认值,如果你想改变这些默认值,必须在创建RTCS之前。
1    _RTCSPCB / _RTCS_msgpool / _RTCS_socket_part
RTCSPCB 表示数据包控制块 , 指的是你希望RTCS协议栈能够处理的包的数量,如果你发现有丢包现象,可能与此参数有关,你需要增加该值。
RTCS_msgpool 表示RTCS消息池, 它用来封装对RTCS协议栈的应用请求,该值指的是应用程式同时能发多少个请求给RTCS协议栈。
RTCS_Sockets 指的是应用中创建的所有的socket的数量.
“_init”是在RTCS 创建时分配的数量.  在运行时,当RTCS需要更多的资源,它可以根据“grow”值来增加。“max”是指定的能够分配的最大值。这些参数必须在RTCS启动前修改。
RTCS协议栈中,这些参数的默认值为以下这些宏,RTCSCFG_PCBS_INIT, RTCSCFG_PCBS_GROW,  RTCS_PCBS_MAX,  RTCSCFG_MSGPOOL_INIT, RTCSCFG_MSGPOOL_GROW, RTCSCFG_PCBS_MAX, RTCSCFG_SOCKET_PART_INIT, RTCSCFG_SOCKET_PART_GROW,  RTCSCFG_SOCKET_PART_MAX.  在项目中我可以自己定义这些变量,也可以在user_config.h中指定。


怎样来配置这些参数?   对于具体的应用没有一个固定的方法. 我们可以从默认值开始, 然后花时间来调试。可以用它RTCS TAD工具来观察各资源占用的内存情况,然后根据具体的需求来修改
Example:  the configuration in web_hvac demo
    _RTCSPCB_init = 4;
    _RTCSPCB_grow = 2;
    _RTCSPCB_max = 20;
    _RTCS_msgpool_init = 4;
    _RTCS_msgpool_grow = 2;
    _RTCS_msgpool_max  = 20;
    _RTCS_socket_part_init = 4;
    _RTCS_socket_part_grow = 2;
    _RTCS_socket_part_max  = 20;
    RTCS_Create();

2  Tx Window Size and Rx Window Size
每个socket都有一个发送buffer和接收buffer. Each socket requires to allocation Tx and Rx window size for a listening socket and then for each connected client.  默认的 tx window size 和 rx window size 是 4380 字节. 使用 TAD调试工具, 我们可以观察到每个新的TCP socket连接需要使用内存是500+4392x2+148=9432B,    见下:
MQX -> Lightweight Memory Block Summary
Size (Decimal) Owner    Type
500      0x10001  TCP Control Block;RTCS/TCP
4392   0x10001  TCP Tx Window;RTCS/TCP
4392   0x10001  TCP Rx Window;RTCS/TCP
148     0x10001  TCP Send Clock;RTCS/TCP
(TCP/IP Task id is 0x10001)
如果我们使用 setsockopt() 来减小tx 和 rx buffer, for example,        
uint_32 value;

value = 1024;
setsockopt(sock, SOL_TCP,OPT_TBSIZE,&value,sizeof(value));
setsockopt(sock, SOL_TCP,OPT_RBSIZE,&value,sizeof(value));

则创建新的socket需要的内存的详细:为
MQX -> Lightweight Memory Block Summary
Size (Decimal) Owner    Type
500  ->  500   0x10001  TCP Control Block;RTCS/TCP
4392 -> 1108   0x10001  TCP Tx Window;RTCS/TCP
4392 -> 1108   0x10001  TCP Rx Window;RTCS/TCP
148  ->   84   0x10001  TCP Send Clock;RTCS/TCP

我们可以看到,建立新的socket 需要内存  500+1108*2+84=2800

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-8-27 10:36:09 | 显示全部楼层
前排听课,坐等高手

出0入0汤圆

发表于 2014-8-27 10:57:53 | 显示全部楼层
跟楼上听课,请保持队形。

出0入0汤圆

发表于 2014-8-27 11:13:43 | 显示全部楼层
绑定一下,这个是跑在飞思卡尔的那个开发板上的

出0入0汤圆

发表于 2014-8-27 11:30:29 | 显示全部楼层
非常感谢!

出0入0汤圆

发表于 2014-8-27 12:17:29 | 显示全部楼层
感谢楼主分享,慢慢学习

出0入0汤圆

发表于 2014-8-27 12:26:53 | 显示全部楼层
占座学习

出0入0汤圆

发表于 2014-8-27 12:47:10 | 显示全部楼层
学习一下,等换到高级板子来上MQX

出0入0汤圆

 楼主| 发表于 2014-8-27 14:26:38 | 显示全部楼层
maimaige 发表于 2014-8-27 11:13
绑定一下,这个是跑在飞思卡尔的那个开发板上的

这kinetis和coldfire上,所有使用MQX RTCS协议栈的开发板

出0入0汤圆

发表于 2014-9-1 13:55:34 | 显示全部楼层
这个不懂,过来看看先。

出0入0汤圆

发表于 2014-9-1 14:20:10 | 显示全部楼层
好东西值得分享

出0入0汤圆

发表于 2014-9-1 20:22:09 | 显示全部楼层
以后肯定有用,先MARK!

出0入0汤圆

发表于 2014-9-4 14:58:33 | 显示全部楼层
mark                       

出0入0汤圆

发表于 2014-10-19 15:07:28 | 显示全部楼层
mark  要用到RTCS

出0入0汤圆

发表于 2014-10-19 15:13:41 | 显示全部楼层
针对一个应用特例的优化

出100入101汤圆

发表于 2014-12-23 13:30:34 | 显示全部楼层
RTCS对单片机的资源要求有点高。

出0入0汤圆

发表于 2015-4-22 16:14:18 | 显示全部楼层
在使用RTCS时没有改变默认的TBsize和RBsize,导致每次只能连接上几个client,刚好参考到你的文章。

谢谢LZ!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-3-29 17:14

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

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