Да... похоже загадка не для одного меня...
Сегодня для сравнения собрал демо FreeRTOS:
в составе:
1.собственно ось
2. uIP TCP/IP
3. HTTP sеrver
4. Read Only File system
Все добро работает при любых уровнях оптимизации хоть по скорости, хоть по размеру...
Занимает все это:
19 588 bytes of CODE memory
34 422 bytes of DATA memory
9 954 bytes of CONST memory - примерно 8 кБайт ресурсы WEB
uc/OS-II
1. собственно ост
2. uc/TCPIP стек
3. быстро-быстро написанный WEB сервер для теста системы вот такого содержания:
Код
/*******************************************************************************
test http server for uc/OS-II TCP/IP
source file
*******************************************************************************/
#include <includes.h>
#include <https.h>
/* task stack array */
OS_STK HTTPS_TaskStk[HTTPS_TASK_STK_SIZE];
/* rx data array */
#define HTTPS_RX_DATA_BUF_LEN 1500
char HTTPS_rx_buf[HTTPS_RX_DATA_BUF_LEN];
/* tx data array */
char HTTPS_tx_data[1500];
/* server erro page 404 */
const char HTTPS_not_found_page[];
void HTTPS_Task(void *p_arg)
{
/* create socket */
int socket_id = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(socket_id < 0)
{
OSTaskDel(HTTPS_TASK_PRIO);
}
/* create server port */
struct sockaddr_in MySockAddr;
MySockAddr.sin_family = AF_INET;
MySockAddr.sin_port = htons(80);
MySockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
int bind_stat = bind(socket_id, (struct sockaddr *)&MySockAddr,
sizeof(struct sockaddr_in));
if(bind_stat < 0)
{
OSTaskDel(HTTPS_TASK_PRIO);
}
/* set socket to listen mode */
int listen_stat = listen(socket_id, 1);
if(listen_stat < 0)
{
OSTaskDel(HTTPS_TASK_PRIO);
}
/* server loop */
while(1)
{
/* wait client connection */
int new_socket_id;
int addr_len;
while(0 > (new_socket_id = accept(socket_id,
(struct sockaddr *)&MySockAddr,
&addr_len)))
{
LED_On(2);
OSTimeDlyHMSM(0, 0, 0, 75);
LED_Off(2);
OSTimeDlyHMSM(0, 0, 0, 75);
}
/* ok! client connection established...
get data and check https protocol request */
int data_len = recv(new_socket_id, HTTPS_rx_buf, HTTPS_RX_DATA_BUF_LEN, 0);
if(0 == data_len)
{
close(new_socket_id);
continue;
}
/* Check for GET */
char *buf = HTTPS_rx_buf;
if(0 != memcmp(buf, "GET", 3))
{
close(new_socket_id);
continue;
}
/* send page */
send(new_socket_id, (void *)HTTPS_not_found_page, strlen(HTTPS_not_found_page), 0);
/* close connection */
close(new_socket_id);
}
}
void HTTPS_Start(void)
{
OSTaskCreateExt(HTTPS_Task,
NULL,
(OS_STK *)&HTTPS_TaskStk[HTTPS_TASK_STK_SIZE - 1],
HTTPS_TASK_PRIO,
HTTPS_TASK_PRIO,
(OS_STK *)&HTTPS_TaskStk[0],
HTTPS_TASK_STK_SIZE,
NULL,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
}
const char HTTPS_not_found_page[] = "HTTP/1.0 200 OK\r\n\
Last-modified: Fri, 18 Oct 2002 12:04:32 GMT\r\n\
Server: AS-SAM7X256-based devboard 10/1.0\nContent-type: text/html\r\n\
Content-length: 404\r\n\
\r\n\
<HEAD>\
<TITLE>PROTTOSS test WEB Server</TITLE></HEAD>\
<BODY>\
<H2>HTTP 1.0 404 Error. File Not Found</H2>\
The requested URL was not found on this server.\
<HR>\
<BR>\
<I>\
<b>AS-SAM7X256-based devboard v.1.1</b>, 2007\
<BR>\
Web Server for Embedded Applications\
</I>\
<BR>\
<A HREF=http://www.prottoss.com>\
под ucOS-II система занимает 80кБ кода и 40 кБ данных!!!
Может я где то что то не правильно делаю???

Копался в конфигах системы и TCP стека, поодключал все что можно про DEBUG - Толку мало - жир не слез...