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