结构探索与研究-数控滚圆机滚弧机缩管机张家港液压缩管机滚圆机
作者:lujianjun | 来源:欧科机械 | 发布时间:2019-03-25 14:32 | 浏览次数:

LwIP的本质就是对数据包的处理,在LwIP中利用不同类型的pbuf来对数据的处理进行一系列的管理。在此基础上,主要是对pbuf的基本内存结构、内存类型、内存申请、内存释放以及相对应的部分重要源代码进行了研究与探索,分析了如何通过源代码中的相关参数来改变内存池的个数以及尺寸大小,并在以Cortex-M3为内核的开发板上进行模拟PBUF_RAM类型内存的申请和释放。这对更好地理解内存分配问题有很大的帮助,对以后更加灵活地运用pbuf结构来管理数据包奠定了基础。 用程序发送和接收的数据可能会远远大于一个PBUF_POOL所存储的数据量,而且内存池类型的内存分配每次分配到的大小是固定的,图3所示一般需要多个PBUF_POOL类型并通过指针next指向下一个PBUF_POOL类型,从而使型链接成一个链表,用于存储数据分组。虽然经过多次分配构成一个链表,结构探索与研究-数控滚圆机滚弧机缩管机张家港液压缩管机滚圆机滚弧机但是它们仍然是一个数据包,因此只有第一个pbuf有offset来存储有关数据包的信息,其余的则不需要。图样都是从内存池中申请得到的,本文有公司网站全自动缩管机采集转载中国知网整理  http://www.suoguanji.cc 但是不同之处是它们使用的是内存池MEMP_PBUF。如图4所示,这两种类型的pbuf所图4PBUF_ROM和PBUF_REF申请的内存主要是用来存放pbuf结构体结构探索与研究-数控滚圆机滚弧机缩管机张家港液压缩管机滚圆机滚弧机,并没有给数据空间申请内存,但是这两个的数据空间可以应用其它地方的内存(RAM/ROM)进行数据存储。3pbuf的释放在对pbuf进行内存释放的时候是通过调用来完成,当释放pbuf的时候,LwIP会自动检测pbuf的类型,然后再调用相关的函数进行相对应的删除。但是在对其内存进行释放的时候需要先满足一定的条件,其中主要是通过检测ref“”的大小,只有当ref的数值不型较多,而且在对数据管理的时候可能为多种类型混合使用,不易针对某个类型的pbuf进行单独内存分配和释放实验。对该内存堆的操作类似于C语言中的]。所以该实验主要是通过运用malloc/free函数在内部内存RAM分配和释放内存的方式来模拟PBUF_RAM在RAM中的分配和释放[16-18],并通过LCD进行字符串的存储地址、写入的字符串,以及RAM使用率的显示。其中图5、图6中的SRAMINUSED字样表示RAM的使用率,Addr用来表示数据存放的地址。通过图5可以看出,当向内部内存RAM中写入字符串“,其内存使用率为10%,存储地址为0X200092C0,说明已经将字符串写入到RAM中。图6是对其内存释放,可以看出其内存使用率减小,其地址变为0,表明将RAM中的数据进行了释放,但是其内存使用率理论上应该为0,这里的5%就是内存碎片。由于嵌入式系统的内存空间是非常宝贵的,尤其对于数据的传输而言,如果每次传输都产生碎片,那就是资源的浪费。所以对pbuf结构的分析与探究是非常必要的。图5内存申请图6内存释放结语通过对pbuf结构进行了探索和研究,并对其4种类型进行了代码和图表详解,还分析了如何申请和释放pbuf类型,最后对其内存的申请和释放进行了模拟实验,并且实验效果和预期一样,通过以上一系列的分析和操作,会对pbuf有更加清楚的认识,这对以后合理小于1的时候,pbuf才有可能被释放,但不是一定会被释放,当有其它类型的pbuf结构探索与研究-数控滚圆机滚弧机缩管机张家港液压缩管机滚圆机滚弧机本文有公司网站全自动缩管机采集转载中国知网整理  http://www.suoguanji.cc