Память SRAM и LWIP

Наш первый вариант реализации HTTP сервера через RNDIS адаптер на STM32F205VG под Atollic True Studio с FreeRTOS v1 .

RAW

Мы иcпользуем HTTP server вариант RAW библиотеки LWIP. Тот вариант, что по логике исходников LWIP вроде бы НЕ предназначен для OS. Но тем не менее почему бы и не попробовать. И ведь работает. При этом в коде у нас #define NO_SYS 1 .

#define NO_SYS                          1
#define SYS_LIGHTWEIGHT_PROT            0
#define LWIP_NETCONN                    !NO_SYS //!! = 0 
#define LWIP_SOCKET                     !NO_SYS   //!! = 0 
#define LWIP_NETCONN_FULLDUPLEX         LWIP_SOCKET
#define LWIP_NETBUF_RECVINFO            0
#define LWIP_HAVE_LOOPIF                0
#define TCPIP_THREAD_TEST

Канал USB у нас является физической средой передачи данных. Работает управление каналом USB ( как и любой USB) только в одном направлении (от хоста к девайсу) , на девайсе вызывая USB прерывание .

Пора поизучать возможность сокращения памяти SRAM . На текущий момент имеем , что LWIP использует львиную долю SRAM (особенно bss) . А на надо быть готовым , что скоро память наша закончится (у нас 128К SRAM).

text	   data	    bss	    dec	    hex	
111364	    476	  96364	 208204	  32d4c	

В нашем HTTP сервере используется несколько файлов для закачки клиентом zepto.min.js., картинка, сам html и т.д. . То есть браузер будет при запросе страницы 192.168.7.1 запрашивать много страниц (много соединений будет устанавливаться "одновременно"). Соответственно мы в контроллер должны их все послать и обратно ответы из контроллера вернуть, ничего не потеряв.

Для настроек использования памяти LWIP использует много дефайнов ? в основном они вынесены в файл lwipopts.h , также к общим настройкам относится файл opt.h и может еще что-то.

Для использования с FreeRTOS нашего LWIP с памятью надо разбираться : выкидывать все malloc от слова совсем. FreeRTOS делаем static.