HTTPD_USE_MEM_POOL

Попробуем переключить использование памяти для HTTP данных на вариант HTTPD_USE_MEM_POOL . То есть память будет выделяться в зарезервированном пуле , в одном из его регионов.

Проверяем на LWIP 1.4.1 вариант RAW , STM32F205 , FreeRTOS, Atollic True Studio.

При активации #define HTTPD_USE_MEM_POOL 1 по умолчанию сразу получаем ошибки компиляции. Это потому , что надо в файле memp_std.h прописать пару макросов , понимание которых выносит мозг поначалу :

LWIP_MEMPOOL(HTTPD_SSI_STATE, 20, 300, "HTTPD_SSI_STATE")
LWIP_MEMPOOL(HTTPD_STATE, 20, 200, "HTTPD_STATE")

Тогда к примеру в коде получаться соответственно такие значения :

MEMP_HTTPD_STATE = 9 - это у нас номер региона в массивах memp_sizes , memp_num , memp_desc, определяется номер по порядку следования написания макросов LWIP_MEMPOOL в файле memp_std.h.

memp_sizes[MEMP_HTTPD_STATE] = 200
memp_num[MEMP_HTTPD_STATE] = 20


И тогда такой участок кода , скомпилируется без ошибок.

#if HTTPD_USE_MEM_POOL
#define HTTP_ALLOC_SSI_STATE()  (struct http_ssi_state *)memp_malloc(MEMP_HTTPD_SSI_STATE)
#define HTTP_ALLOC_HTTP_STATE() (struct http_state *)memp_malloc(MEMP_HTTPD_STATE)
#else /* HTTPD_USE_MEM_POOL */
......
#endif /* HTTPD_USE_MEM_POOL */

По-видимому если отказаться от динамического выделения памяти , то MEM_SIZE можно смело установить в ноль.

#define MEM_SIZE   0 // 16000