LWIP
念念有余
这个作者很懒,什么都没留下…
展开
-
LWIP内存管理之动态内存池
无论在哪一种系统中,动态内存管理都是一个非常重要的机制。无论在内核对各种网络数据的接收和处理本质上是对各种内存的分配、传递和处理。LWIP中用到了内存池和内存堆这两个东东。我们来仔细看看。1 动态内存池: 动态内存池分配策略可以说是一个比较笨的分配策略了,但其分配策略实现简单,内存的分配、释放效率高,可以有效防止内存碎片的产生。这种方式下,用户只能申请大小固定的空间。在LWIP中,这...原创 2018-03-30 17:39:33 · 2331 阅读 · 2 评论 -
LWIP初体验
从本文开始来学习一下lwip这款协议栈,主要参考资料为朱升林的《嵌入式网络那些事儿》 LwIP是TCP/IP协议中一种独立、简单的实现,其设计目的在于:在保证嵌入式产品拥有完整TCP/IP功能的同时,又能保证协议栈对处理器资源的有嫌消耗,其运行一般仅需要几十kB的RAM和40kb的ROM。LwIP有很多版本,我们使用的是1.4.1版本。源代码结构源代码src包括下面几个文件夹:api:包含了se...原创 2018-03-27 17:55:37 · 5737 阅读 · 0 评论 -
LWIP网络数据包
这一章我们来看看LWIP中网络数据包pbuf。在协议栈内核中移动的数据包,无疑是整个内核最关键的部分。数据包的种类和大小五花八门:首先是网卡上接收的原始数据包,它可以是包含TCP报文的长达数百字节的数据包,也可以是仅有几十字节的ARP数据包;然后是要发送的数据包,上层应用可能是各种各样的数据交给LWIP内核发送。数据包管理机构采用数据结构pbuf来描述协议栈中使用的数据包,结构pbuf的定义如下:...原创 2018-04-16 16:32:12 · 2673 阅读 · 1 评论 -
LWIP内存管理之动态内存堆
上一篇文章讨论了LWIP中动态内存池的概念。动态内存池只能分配固定大小的内存区域,这种情况主要用在分配IP、UDP、TCP等协议的头部区域,对于不是固定大小的内存区域,我们使用动态内存堆的方法,本文就来看LWIP中动态内存堆的实现。 动态内存堆分配策略的本质就是对一个实现定义好的内存块进行合理有效的组织和管理,其内存分配策略采用首次拟合方式,只要找到一个比用户请求空...原创 2018-04-11 18:00:33 · 620 阅读 · 0 评论