之前是由陈工在进行LWIP的移植,之后陈工因为学业原因暂时离开公司,之后便由我接手后续的工作。所以和之前的博客地址不一样。我写的没有陈工那么好,但我会尽量按照比较清晰的逻辑把LWIP移植过程中的坑说明白。
经过前面三个实验,虽然网络已经能够正常收发了,可是有一些非常严重的问题
当有大量数据传输的时候,大概半个小时,网络通信就会挂。
这个问题有如下四个原因
原子例程中设置的存放数据的方式是HEAP
使用HEAP作为数据包储存方式会产生大量内存碎片,使得大数据包越来越难找到合适的内存来存放数据,只有将HEAP改为POOL才能解决这个问题。通过更改MEM_USE_POOLS和MEMP_USE_CUSTOM_POOLS这两个宏定义为1并且自己编写lwippool.h能够从HEAP切换为POOL。下面是我自己写的lwippool.h
#if MEM_USE_POOLS
LWIP_MALLOC_MEMPOOL_START
LWIP_MALLOC_MEMPOOL(