首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Web的嵌入式设备管理 02

基于Web的嵌入式设备管理 02

2 LwIP内存治理的实现
 在运行TCT/IP协议栈的嵌入式系统中。可以把整个系统的存储区域分为协议栈治理的存储器和应用程序治理的存储器两部分。

2.1 协议栈治理的存储器

 协议栈治理的存储器是指TCP/IP内核能够操作的内存区域,主要用于装载待接收和发送的网络数据分组。当接收到分组或者有分组要发送时,TCP/IP协议栈为这些分组分配缓存;接收到的分组交付给应用程序或者分组已经发送完毕后,对分配的缓存回收重用。协议栈分配的缓存必须能容纳各种大小的报文,例如从仅仅几个字节的ICMP回答报文到几百个字节的TCP分段报文。

 LwIP中的pbuf有四种类型:PBuF_POOL、PBUF__RAM、PBUF_ROM、PBUF_REF。这四种类型的pbuf都是从TCP/IP协议栈治理的存储器中分配的,其中PBUF_ROM和PBUF_REF与应用程序治理的存储区域密切相关。

 PBUF_POOL是具有固定容量的pbuf,主要供网络设备驱动使用,为收到的数据分组分配缓存。在协议栈治理的内存中初始化了一个pbuf池(PBUF_P00L),具有相同尺寸的pbuf都是从这个pbuf池中分配得到。一般使用多个PBUF_POOL链接成一个链表,用于存储数据分组。如图1所示。 字串8

arm

LwIP用一个宏定义一个PBUF_P00L的大小。一个分组需要分配几个PBUF_POOL,而在数据较少时分配一个PBUF_POOL即可。由于分配一个PBUF_P00L类型的pbuf很快,适合在中断处理中使用,所以PBUF_POOL主要供网络设备驱动使用,为收到的数据分组分配缓存。
返回列表