Part Number:AM2732
从编译出的 map 文件看到 memp_memory_POOL_1792_base 占用了约600KB,memp_memory_PBUF_POOL_base 占用了约312KB。
对 lwip 的内存管理不熟,正在了解中。想问下这两块内存都是必要的吗?希望 lwip 内存占用不要超过 200 KB,当前计划使用的场景就是建立一个tcp client,用来向外传输点云数据;建立一个tcp server,用来接收外界的简单控制命令。
Chris Meng:
你好,
有计划在优化网络驱动的大小,但可能要3Q末才能提供。
如果你现在就需要做优化,英文论坛上也有一些相关讨论,提到可以在网上搜索一些优化的建议。
(1) AM2432: Memory footprint of Lwip and ICSS_EMAC driver – Arm-based microcontrollers forum – Arm-based microcontrollers – TI E2E support forums
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1083645/mcu-plus-sdk-am243x-lwip-stack-code-data-size/4029933
,
qing zhang:
简单了解了lwip的内存分配策略,主要有2中,内存池和内存堆。现在sdk里默认是用内存池 MEM_USE_POOLS 的方式进行分配。使用这个方式优点是分配释放快,没有内存碎片,内存容易浪费,用空间换时间。而且内存需要自己深入理解底层的运行和业务才能确认分多大。
1、现在想用内存堆的方式来分配,但 r5f_linker_enet.cmd里相关内存不知道怎么处理,有相应指导吗?
2、memp_memory_POOL_1792_base 占用了约600KB,memp_memory_PBUF_POOL_base 占用了约312KB。这两个例程中分配这么大的原因可以描述下吗?看看是否能直接减小这两块内存分配?
,
Chris Meng:
你好,
demo应该使用了两个cmd文件,你可以看一下编译demo后mss 的map文件,了解现有的内存使用情况。
,
Chris Meng:
你好,
优化IWIP驱动的信息更新,见下:
MCU-PLUS-SDK-AM273X: LWIP driver and stack size – Arm-based microcontrollers forum – Arm-based microcontrollers – TI E2E support forums