скрытое меню

Настраиваем LWIP 2.1.2 под Atollic True Studio

Работаем под Atollic True Studio.

region `RAM' overflowed by 140520 bytes

На версии 1.4.1 модифицированной Сергеем Фетисовым под RNDIS проблем с нехваткой памяти не возникало несмотря на то ,что там еще USB стек поднимался.

А вот в чистом скачанном LWIP 2.1.2 пришлось разбираться , так как упрямо не хватало памяти RAM .

USB стек мы по прежнему используем, отказываться нельзя. Но дело не в этом. Не хватает 140К при имеющихся 128К. Это совсем не шутки.

Анализируем map файл

Итак имеем результирующий файл *.map . Там есть инфа по расходу памяти. Другие файлы банально не появляются и их анализировать не получится . Хотя есть такая хитрость : можно в ld файле прибавить размер RAM и все прекрасно соберется, только прошивать такой файл нельзя конечно.

В map файле натыкаемся на информацию Allocating common symbols и оказывается , что это довольно полезная вещь . Видим , что :

memp_memory_PBUF_POOL_base


memp_memory_PBUF_POOL_base
                    0x3b2e0           Src\core\memp.o
.....
                0x2000547c                memp_memory_TCP_SEG_base
                0x2000579c                memp_memory_PBUF_POOL_base
                0x20040a7c                memp_memory_FRAG_PBUF_base

Где-то для memp_memory_PBUF_POOL_base выделяется очень много памяти. Это надо выяснить ... 0x3b2e0 это размер 242400 , но в варианте с lwip1.4.1 в map файле этого нет.

PBUF_POOL_SIZE

Ответ пришел не сразу, пришлось помучатся, но смысл такой :
в проекте с LWIP 1.4.1 :
#define PBUF_POOL_SIZE 16
В проекте с 2.1.2:
#define PBUF_POOL_SIZE 400

И похоже эти цифры - килобайты. Вот так все банально оказалось.