Цитата(zuy @ Dec 7 2009, 18:16)

Имеется девайс с USB хостом, который через USB EDGE модем выходит в интернет и принимает данные.
Софт организован на связке FreeRTOS + LwIP.
Для упрощения отладки весь пакет софта, кроме драйвера USB хоста и модема был портирован на PC.
На PC софт работает, с модемом общается через COM порт и все ОК.
В реальном девайсе наблюдается следующая картина:
1. Если на PC пакеты шли в основном полной длины около 1062 байт, то на девайсе эти же пакеты принимаются с длиной 511 байт.
причем изменение длины стоит в самом загоровке IP внутри пакета. Т.е. я от сервера уже получаю более мелкие пакеты.
2. Некоторые пакеты приходят не завершенными. Я не вижу в конце пакета завершающего 0x7E. при этом следующая порция данных из модема присылает новый пакет.
т.е. не похоже, что я его не до конца вычитал.
Софт на PC и в девайсе идентичный, файлы прямо копируются из одного в другой.
Что может заставить сервер присылать укороченные пакеты?
Как это происходит?
Возможно проблема в том, что девайс с хостом просто не успевает справляться с потоком принимаемых данных и происходит переполнение входного буфера. Но т.к. данный считаются принятыми с точки зрения протокола, то высылается следующий пакет.
Уменьшение размеров пакетов, видимо, связано с той же причиной. Серверу сообщается, что вы не можете обработать пакеты длиной больше 511 байт.