|
lwIP (PPP) проблема, странная |
|
|
|
Oct 21 2011, 06:51
|
Знающий
   
Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594

|
Модем Quectel M72, FreeRTOS 7 на sm32. Работаем через PPP протокол и сверху TCP/IP по виалоновскому протоколу. При приемо-передаче небольших пакетов данных проблем не возникает. Но при передаче на устройство большого массива байтов прием сбоит. Стек принимает ровно 9 IP пакетов (по ~1400байт каждый), после чего netconn_recv перестает принимать пакеты (потому что модем их перестает выдавать). Память нигде не утекает, это контроллируется. На нехватку памяти не похоже. FreeRTOS находится в IDLE >92% времени. Такое ощущение что проблема на уровне IP, перешевелил все настроки, которые понимал и не понимал, но бесполезно - 9 пакетов и хоть умри. Тип и содержание файла не влияет на результат. Из зависания выходит если начать новую передачу на устройство. При этом в лог сыпется такое: Код pppInProc[0]: got 1355 bytes [b]pppInProc[0]: Dropping bad fcs 0x63B8 proto=0x0021[/b] pppDrop: pbuf len=500 pppInProc[0]: got 1405 bytes pppInput[0]: ip in pbuf len=492 pppifOutput[0]: proto=0x0021 pppInProc[0]: got 1405 bytes pppInput[0]: ip in pbuf len=492 pppifOutput[0]: proto=0x0021 Тут видно, что начинается передача которая подвисла, но срывается FCS (но потом восстанавливается) и в конечном итоге, когда массив допередастся, система вновь приходит в штатное состояние. Подскажите где могла собака порыться? Чую что какие то настройки надо подправить в lwipopt.h, но допетрить не могу. Спасибо!!!!!
Сообщение отредактировал kan35 - Oct 21 2011, 13:08
|
|
|
|
|
 |
Ответов
|
Nov 2 2011, 08:46
|
Знающий
   
Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594

|
Рано обрадовался. Началось совершенно непонятное. IFC=1,1 конечно было не лишним, но как оказалось XON и XOFF - 0x11 и 0x13 в пакетах так и не начали участвовать, это значит что RX буферы модема вполне все вмещают. Мои dropped были из за того, что в контроллере переполнялся messagebox, я увеличил его и все стало гладко. Пришлось вручную добавить поддержку XON XOFF в свой драйвер, это оказалось не сложным делом. Однако, образовалось новое ограничение - 35 пакетов и остановка. Я первым делом взял старые резервные копии и опробовал - и почему то не удивился, на них тот же самый результат - 35 пакетов! стабильно, четко... вот моя инициализация модема: ATV1 AT+CLIP=1 AT+CRC=0 AT+IFC=1,1 AT+CGDCONT=1,"IP","internet.beeline.ru" ATD*99***1#\r ... и поехал PPP
на что думать?
|
|
|
|
|
Nov 2 2011, 09:37
|
Местный
  
Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340

|
XON-XOFF Не применял, пока обхожусь CTS-RTS. Стек об XON-XOFF нечего не знает, это больще относится к SIO. Цитата(kan35 @ Nov 2 2011, 11:46)  Однако, образовалось новое ограничение - 35 пакетов и остановка. Что значит остановка ?
|
|
|
|
|
Nov 2 2011, 10:38
|
Знающий
   
Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594

|
Цитата(cpl @ Nov 2 2011, 13:37)  XON-XOFF Не применял, пока обхожусь CTS-RTS. Стек об XON-XOFF нечего не знает, это больще относится к SIO.
Что значит остановка ? Я в SIO и добавил отслеживание XON XOFF. Попробую аппаратно прокинуть еще и RTS, CTS. Остановка это значит, что контроллер отправил подтверждение приема очередного пакета (№35) ~1400байт и все, модем не выдает следующий пакет. Как только по таймауту выходит из netconn_recv прога начинает предпринимать попытки ожить - отправляет данные, пытается принять подтверждения, и в это время с подтверждениями сыпятся все те пакеты, которые не дошли! все сыпется кучей, как только пакеты заканчиваются, прога оживает полноценно (до следующей попытки принять большой массив). При чем что характерно, каждая новая порция данных - это всегда ровно 35 пакетов. Потом опять торможение до нового netconn_write, после него опять 35... И до ни прога ни стек не падают мертво - весгда все очухивается и продолжает трудиться, я уже в отчаянии. Почему вдруг стало вместо 9 35, при чем и в старых проектах и на других платах и с разными операторами...
Сообщение отредактировал kan35 - Nov 2 2011, 10:54
|
|
|
|
Сообщений в этой теме
kan35 lwIP (PPP) проблема Oct 21 2011, 06:51 kan35 Заменил модем на SIM300DZ - результат на 100% тот ... Oct 21 2011, 13:19 cpl Какой менеджер памяти в freertos используете ? ско... Oct 27 2011, 18:28 kan35 Цитата(cpl @ Oct 27 2011, 22:28) Какой ме... Oct 29 2011, 07:44  cpl CTS-RTS модема обрабатываются корректно ?
Попробуй... Oct 30 2011, 20:13   kan35 Цитата(cpl @ Oct 31 2011, 00:13) CTS-RTS ... Oct 31 2011, 17:49    cpl Где в стеке поддержка XON XOFF, в lwip1.3.2 не наш... Oct 31 2011, 20:02     kan35 Цитата(cpl @ Nov 1 2011, 00:02) Где в сте... Nov 2 2011, 04:48 kan35 GPRS не тормозит на самом деле, а стоит только отп... Nov 2 2011, 19:38 cpl Цитата(kan35 @ Nov 2 2011, 22:38) Я бы не... Nov 2 2011, 20:24  kan35 Цитата(cpl @ Nov 3 2011, 00:24) Держите.
... Nov 3 2011, 07:08   cpl Цитата(kan35 @ Nov 3 2011, 10:08) у вас к... Nov 3 2011, 07:38    kan35 Цитата(cpl @ Nov 3 2011, 11:38) 6.0.3
а б... Nov 3 2011, 13:14     cpl Цитата(kan35 @ Nov 3 2011, 16:14) а больш... Nov 3 2011, 13:46 kan35 Я начал работать на аппноте от ST - там был ethern... Nov 3 2011, 14:11 cpl Цитата(kan35 @ Nov 3 2011, 17:11) Еще не ... Nov 3 2011, 14:29 kan35 нет, с FlowControl нет проблем и не было (просто т... Nov 3 2011, 15:42 kan35 Проблема решена, оказывается дело не в стеке и даж... Nov 17 2011, 11:48 cpl Примите мои искрение поздравления. Nov 17 2011, 13:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|