lwip编译选项

修改默认选项时,不要修改opt.h文件,通过lwipopts.h修改。

和内存管理以及TCP发送性能相关的选项

// 为1时使用系统库malloc/free进行内存管理
#ifndef MEM_LIBC_MALLOC
#define MEM_LIBC_MALLOC 0
#endif
// 使用mem_malloc/mem_free替代pool内存池管理
// lwip支持使用内存池来管理一些需要经常分配/释放的数据结构
// 例如pcb
// 将下面选项置1禁用该特性
// 一般和MEM_LIBC_MALLOC选项一道使用
// 使得所有内存分配都通过系统库进行
#ifndef MEMP_MEM_MALLOC
#define MEMP_MEM_MALLOC 0
#endif
// 使用内存池而不是malloc来分配一般性内存
// 此选项需要和MEMP_USE_CUSTOM_POOLS一起使用
#ifndef MEM_USE_POOLS
#define MEM_USE_POOLS 0
#endif
// 用于PBUF_ROM和PBUF_REF的pbuf结构数量
// 如果程序主要使用零拷贝方式发送大量数据
// 需要较大数量的该结构
#ifndef MEMP_NUM_PBUF
#define MEMP_NUM_PBUF 16
#endif
// PBUF内存池(PBUF_POOL类型的PBUF)中的PBUF数量
#ifndef PBUF_POOL_SIZE
#define PBUF_POOL_SIZE 16
#endif
// TCP发送缓冲区大小(已发出但还未收到ACK的最大允许数据量)
// 只是设定大小,并不实际分配内存
// 如果你的程序需要发送大量零拷贝数据
// 可以将这个值设大一些
// (因为零拷贝数据“总是在那里”,不占LwIP动态内存)
// 最小不应小于单次调用tcp_write时可能发送的最大数据量

// 调用tcp_write时的参数len若大于tpcb->snd_buf将导致返回ERR_MEM
// (在LwIP代码中,每成功执行一次tcp_write相应减小tpcb->snd_buf,
// 每收到一次ACK相应增加tpcb->snd_buf)
// 考虑到一般系统“隔一个确认”的原则,
// 一般设置为TCP_MSS的2倍或更大的值。
#ifndef TCP_SND_BUF #define TCP_SND_BUF (2 * TCP_MSS) #endif
// MEM_SIZE是一般意义上的动态内存大小
// 如果程序需要进行较大量的拷贝数据发送
// 则需要较大数量的该内存
// 因为所有的拷贝发送数据都需要复制到
// 这种“一般意义”的动态内存中
// PBUF_RAM类型的PBUF即从中分配
#ifndef MEM_SIZE #define MEM_SIZE 1600 #endif
// PBUF内存池中的每个PBUF大小
// 默认值是能放下一个完整的TCP包(包括下层协议头)
// 如果你能确定很少接收全长TCP包,可以使用小一点的值
#ifndef PBUF_POOL_BUFSIZE #define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN+4/*VLAN_TAG*/+4/*CRC*/) #endif 
// 在单个pcb中排队的待发pbuf数量上限
// 不应小于 (2 * TCP_SND_BUF/TCP_MSS)
// 考虑以下几点:
// 1. 对于REF/ROM类型的数据,协议头和协议数据是分开存放的,因此每段数据需要两个PBUF
// 2. LwIP可能会将多次tcp_write中的待发数据合并到一起
// (如果每次tcp_write数据量都较小)
// 3. 需要Copy发送的数据,协议头和数据在单一PBUF里面
// 一般用默认值即可
#ifndef TCP_SND_QUEUELEN #define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) #endif
// App层发送的超过MSS大小的数据量会被拆分为SEG
// 每个SEG内数据量不超过MSS
// 每个SEG可能拥有多个pbuf
// 不小于TCP_SND_QUEUELEN #ifndef MEMP_NUM_TCP_SEG #define MEMP_NUM_TCP_SEG 16 #endif

 

鸿蒙操作系统是华为开发的一款面向物联网和智能设备的全场景操作系统。在鸿蒙系统中,编译lwip库是指使用编译器将lwip库源代码转化为目标代码(可执行文件或动态链接库)的过程。 首先,我们需要获取lwip库的源代码。可以通过从官方网站下载或者从开源代码托管平台(如GitHub)上获取lwip库的源代码。 接下来,在鸿蒙系统上进行编译lwip库的操作。编译过程主要包括以下几个步骤: 1. 配置编译环境:在鸿蒙系统上,需要安装好编译工具链和相关的开发环境,包括编译器、链接器、构建工具等。 2. 设置编译选项:根据需求和目标平台的特性,设置lwip库的编译选项,如宏定义、编译参数、库依赖等。 3. 构建Makefile:在lwip库的源代码目录下,创建一个Makefile文件,定义编译规则和依赖关系。 4. 执行编译命令:在终端或者命令行界面中,切换到lwip库的源代码目录,并执行编译命令,如make或者cmake。 5. 等待编译完成:编译过程需要一定的时间,具体时间取决于代码量和编译环境的性能。 6. 验证编译结果:编译完成后,可以在指定的输出目录中找到编译生成的目标文件或动态链接库文件。 需要注意的是,编译lwip库可能会遇到一些依赖问题或者平台适配问题。在编译过程中,可能需要安装一些额外的库或者进行一些适配工作,并进行相应的配置和调试。 总之,编译lwip库是在鸿蒙系统上将lwip源代码转化为可执行文件或动态链接库的操作,需要配置编译环境、设置编译选项、构建Makefile,并执行编译命令。通过这些步骤,我们可以成功编译lwip库,实现在鸿蒙系统中使用lwip库的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值