《LWIP应用开发实战指南》读书笔记

内存管理:
LWIP的两种内存管理策略:内存池、内存堆;
内存堆可由内存池实现;
内存池可由内存堆实现;
内存池和内存堆可独立实现;
此外,支持C标准库的malloc和free;

pbuf:
pbuf结构体是描述协议栈中数据包的数据结构;
4种类型:
PBUF_RAM:内存堆分配;
PBUF_POOL:内存池分配;
PBUF_ROM:不包含数据区域,数据存储在ROM中;
PBUF_REF:不包含数据区域,数据存储在RAM中;
MEMP_PBUF为专门存放pbuf数据结构的内存池,主要适用于PBUF_ROM和PBUF_REF类型的pbuf;
MEMP_PBUF_POOL包含pbuf结构和数据区域,即PBUF_POOL类型的pbuf,以固定长度分配,对于较大的数据包,可能需要申请多个pbuf;
用户需自行设置PBUF_ROM和PBUF_REF的pbuf结构体中的payload指针;
对于一个数据包,可能使用多种不同的pbuf一起描述;
tot_len字段记录自身即其后面的pbuf总大小;
ref字段记录pbuf数据包被引用的次数;
内存池申请的pbuf使用memp_free释放;
内存堆申请的pbuf使用mem_free释放;

网卡发送数据:low_level_output();
网卡接收数据:low_level_input();
pbuf数据包递交上层:ethernetif_input();

lwipopts.h:用于配置LWIP的相关参数,如果没有在此配置,那么LWIP会使用opt.h默认的参数;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值