Цитата(cpl @ Oct 27 2011, 22:28)

Какой менеджер памяти в freertos используете ? сколько памяти под кучу ?
Сколько памяти выделено для стека ?
Попробуйте включить полное протоколирывание, а так непонятно что не так.
Использую heap_2, и в lwIP используется только куча freeRTOS, памяти выделил около 50кБ, стеку хватает, так как в ином случае последний бы ругался в лог и к тому же принимая в цикле данные pbuf = netconn_recv вижу, что используются одни и те же сегменты pbuf - и паять не утекает. И еще - увеличение или уменьшение кучи не приводит ник чему - 9 пакетов и стопорится. Хотя изредка 1 на 100 случаев принимается от 10 до 13 пакетов.
Подключался в разных местах - размеры пакетов у разных операторов в разных точках немного отличались - от 1260 до 1460 байт, но результат один - 9 пакетов:-)
Модемы тоже менял - без изменений!
Код
struct netbuf * in_buf;
unsigned short k = 2;
while (bytesleft)
{
if (in_buf = netconn_recv(conn))
{
// успешно приняли что то
char * incoming_data;
unsigned long buflen = netbuf_len(in_buf);
if (incoming_data = (char *)pvPortMalloc(buflen))
{
{
char * data; u16_t len;
netbuf_data(in_buf, (void **)&data, &len);
printf_diagn("%d: %lX->%lX (%d:%d)\r\n\r\n", k, data, incoming_data, buflen, bytesleft-buflen );
}
netbuf_copy(in_buf, incoming_data, buflen);
//file_write(file, buflen, (unsigned char *)incoming_data);
vPortFree(incoming_data);
}
bytesleft -= buflen;
netbuf_delete(in_buf);
k++;
}
else
bytesleft = 0;
}
lwipopts.hsio.cПорт sys_arch.c lwIP для FreeRTOS взял из примера ST для STM32F2xx.
Больше ничего в стеке я не менял! И потому хотел поинтересоваться - получалось ли у вас принимать такие передачи в стеке lwIP и в частности через их PPP?
Вот логи:
TCP log:
TCP+.txtIP log:
IP.TXTPPP log:
PPP.txtСняты с разных подключений, но все остановлены на месте где модем перестает выдавать очередной пакет - всегда после 9 пакета.
Сообщение отредактировал kan35 - Oct 29 2011, 08:00