реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> проблемы с lwIp
_fun_
сообщение Mar 13 2012, 04:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-04-08
Пользователь №: 37 032



Здравствуйте уважаемые гуру lwIP sm.gif Видно, не выйдет из меня толкового электронщика. Почитаешь форум, тут люди за пару недель с нуля интернет прикручивают или с Осями разбираются, а я иногда месяцами на одном месте сижу...sad.gif Вообщем проблема в следующем: как-то прикрутил к своему проекту на LPC1768 (под IAR) lwip неизвестной версии, столкнулся со следующей проблемой - через некоторое время при пересылке больших пакетов (>100 байт ) контроллер перестает отвечать. С маленькими (десятки байт) все стабильно. Попробовал решить эту проблему скачав и прикрутив lwIP 1.4 - заменил файлы и повис на ошибке - Error[Li005]: no definition for "ethernetif_input". Нифига не понимаю - почему IAR эту функцию не видит, ethernetif.h находит, ethernetif.с в проект включен

Сообщение отредактировал _fun_ - Mar 13 2012, 05:01
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Mar 13 2012, 05:08
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



У lwip файлик ethernetif.c в каталоге netif идет в качестве примера - настоящий ethernetif.c лежит в каталоге port. ethernetif.h у меня вообще в проекте не наблюдается - вроде в lwip 1.4 его не было.
Go to the top of the page
 
+Quote Post
_fun_
сообщение Mar 13 2012, 06:05
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-04-08
Пользователь №: 37 032



lwIp 1.4.0 заработал, а проблема с большими пакетами осталась. Такое впечатление, что все это как-то связано с памятью..
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 13 2012, 06:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(_fun_ @ Mar 13 2012, 08:39) *
Видно, не выйдет из меня толкового электронщика. Почитаешь форум, тут люди за пару недель с нуля интернет прикручивают или с Осями разбираются, а я иногда месяцами на одном месте сижу...sad.gif

За пару недель интернет прикручивается при наличии опыта. У меня тоже всё это начиналось со скрипом, а сейчас кажется ерундой.

Цитата(_fun_ @ Mar 13 2012, 10:05) *
lwIp 1.4.0 заработал, а проблема с большими пакетами осталась. Такое впечатление, что все это как-то связано с памятью..

Про "связано с памятью" - это комментарий от безысходности, наверное.
Я бы не рассчитывал на то, что сейчас кто-то появится и скажет: "О! У меня это уже было! Делать нужно так и так..."
Нужно досконально разобраться в принципах работы МК, Ethernet MAC, lwip. Только так можно гарантировать, что всё это будет работать. Более того, только так можно быть уверенными, что будущие глюки будут исправлены. Ну и тщательная отладка: благо, сейчас есть средства внутрисхемной отладки, а lwip позволяет вести довольно подробную статистику.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Mar 13 2012, 08:54
Сообщение #5


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



1. LwIP проверен не одним проектом и не одной платформой стек рабочий. (Правда я его обновляю с репозитория что и вам советую).

2. Указывайте более детальную информацию хотя бы какой протокол используете с ОС или без.

3. Все проблемы на 90% находятся в драйвере MAC и от его реализации, также от его реализации сильно зависит пропускная способность.

4. Вам придется написать свой драйвер для MAC, ибо те которые я встречал в интернете да и примерах с IAR глючные и годятся только подсмотреть использовать их не рекомендую.

5. Изучите все настройки стека их довольно много но без этого никак. В вашем случае я бы хотел обратить внимание на значение PBUF_POOL_SIZE и PBUF_POOL_BUFSIZE. Возможно их не хватает, а драйвер не умеет обрабатывать правильно ситуации переполнений или еще чего.

6. Правильно ли вы работаете в LwIP буферами (pbuf) ? Обязательно изучите их исходники они являются основой стека.

7. Если вы используете без OC убедитесь что все таймера вызываются вовремя (теже pbuf).

8. Убедитесь что у вас нет утечки памяти и все ресурсы освобождате правильно.

Ну вот такие рекомендации.


Цитата
Видно, не выйдет из меня толкового электронщика. Почитаешь форум, тут люди за пару недель с нуля интернет прикручивают или с Осями разбираются, а я иногда месяцами на одном месте сижу...


Не помню кто говорил: Если ты знаешь один язык программирования ты знаешь их все. Если ты умеешь программировать один микроконтроллер сможешь и другой. С осями тоже самое если знаешь отлично одну то и с другой быстро разберешься.
Go to the top of the page
 
+Quote Post
_fun_
сообщение Mar 13 2012, 10:36
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-04-08
Пользователь №: 37 032



Спасибо всем большое, буду разбираться, но параллельно хотелось бы и дальше в этой теме задавать вопросы на которые я толком пока не могу найти ответа.
EMAC взял готовый из интернета. (LPC17xx_EMAC). ОС нету. До этого работал с UIP, с ним разобрался, думал LWIP тоже самое, но не тут то было (по крайней мере для меня sm.gif ). За что именно отвечает PBUF_POOL_SIZE и PBUF_POOL_BUFSIZE ??? пробовал изменять значения, что-то происходит, но толком пока сказать не могу. И еще, я извиняюсь, но можете мне обьяснить на пальцах значение слова "POOL" (или "пулить"? )?? часто где его встречаю

Сообщение отредактировал _fun_ - Mar 13 2012, 10:37
Go to the top of the page
 
+Quote Post
ReRayne
сообщение Mar 13 2012, 10:46
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 12-10-11
Из: Москва
Пользователь №: 67 699



Цитата
"О! У меня это уже было! Делать нужно так и так..."

Аха-ха-ха-ха)))
Черт, а я думала только на STM32 такая проблема, грешила на драйвер DMA изернета, что его Suspend mode не вытаскивают.
Пинги и на малые пакеты со временем умрут.
Лично у меня просто перестает подниматься прерывание от Ethernet....
Предлагаю автору в привате переговорить и провести совместно серию тестов на наших контроллерах.
Кстати PHY уровень Ethernet какой?)

Сообщение отредактировал ReRayne - Mar 13 2012, 12:04
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Mar 13 2012, 11:55
Сообщение #8


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
До этого работал с UIP, с ним разобрался, думал LWIP тоже самое, но не тут то было (по крайней мере для меня ).


UIP - это жалкое подобие TCP/IP стека, рассчитанное на 8 битники с малыми размера ми памяти, за это вы платите скорость и функциональностью.

LWIP - очень близок к серьезным стекам, он более - менее соответствует всяким RFC.


PBUF_POOL_BUFSIZE - размер входящего буфера, если входящий пакет будет больше чем этот размер, нужно буфера обьеденять в цепочку (если это неумело сделать то эффект может быть такой как у вас), что приводит к петере производительности но у величивает расход памяти, эсли памяти до черта идеальный размер 1540 (1532) в зависимости от MAC.

PBUF_POOL_SIZE - указывает количество вхjдных буферов для входящих фреймов. Если буферов будет мало пакеты начнут теряться что в случае TCP приведет ку резкому снижению пропускной способности (а то и вобще к неработаспособности в зависимости от настроек других параметров), в случае UDP это привет к потере данных.

как то так MY_BUFF[ PBUF_POOL_SIZE ][ PBUF_POOL_BUFSIZE ];

Цитата
Пинги и на малые пакеты со временем умрут.
Лично у меня просто перестает подниматься прерывание от Ethernet....


Это 100% кривой драйвер MAC.
Если вы используете STM32 и LwIP без ОС, вам вообще не нужны прерывания от мак контроллера.
Go to the top of the page
 
+Quote Post
_fun_
сообщение Mar 14 2012, 06:44
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-04-08
Пользователь №: 37 032



Вообщем я, похоже, нашел причину : в opt.h стояло значение TCP_SND_BUF меньше, чем я указывал в tcp_write(...) , увеличил и все починилось sm.gif, хотя, можно было и несколькими пакетами я так понимаю отправить. Подскажите пожалуйста, зачем нужен TCP_QUEUE_OOSEQ ???
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 14 2012, 07:04
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(_fun_ @ Mar 14 2012, 10:44) *
Подскажите пожалуйста, зачем нужен TCP_QUEUE_OOSEQ ???

В ваших краях гугл сломался?
Tuning TCP
Go to the top of the page
 
+Quote Post
_fun_
сообщение Mar 14 2012, 08:47
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-04-08
Пользователь №: 37 032



Цитата(scifi @ Mar 14 2012, 11:04) *
В ваших краях гугл сломался?
Tuning TCP


Прочитал, спасибо sm.gif Но с английским туго, как ни стараюсь. Понял то, что эта весчь нужна когда когда есть опасность потерять пакет в большом объеме. Правильно?
Подскажите, пожалуйста FTP сервер для LWIP какой не сильно сложный и не очень замудреный лучше использовать?? я скачал отсюда:
FTP , сижу разбираюсь, пока вышел затык с Фифо и файловой системой (???). Начал сомневаться что я с правильного конца начал.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 14 2012, 09:09
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(_fun_ @ Mar 14 2012, 12:47) *
Прочитал, спасибо sm.gif Но с английским туго, как ни стараюсь.

Ну и зря. Без знания английского поднимать lwip - это мазохизм.

Цитата(_fun_ @ Mar 14 2012, 12:47) *
Понял то, что эта весчь нужна когда когда есть опасность потерять пакет в большом объеме. Правильно?

Без знания TCP поднимать lwip - это совсем неприлично.
Почитайте про TCP. Первоисточники - это всяческие RFC. Но и на русском тоже много написано. Хотя бы тут:
TCP
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Mar 14 2012, 09:18
Сообщение #13


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
Подскажите, пожалуйста FTP сервер для LWIP какой не сильно сложный и не очень замудреный лучше использовать??


Я сам писал. готового под LwIP и FATfs нету.
Go to the top of the page
 
+Quote Post
_fun_
сообщение Mar 14 2012, 12:20
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 24-04-08
Пользователь №: 37 032



Цитата(scifi @ Mar 14 2012, 12:09) *
Ну и зря. Без знания английского поднимать lwip - это мазохизм.


Без знания TCP поднимать lwip - это совсем неприлично.
Почитайте про TCP. Первоисточники - это всяческие RFC. Но и на русском тоже много написано. Хотя бы тут:
TCP


Уважаемый scifi, мне право не удобно, такое чувство, что я на очень авторитетном для меня форуме задаю какие-то мегаглупые вопросы. По английски я как-то читаю, но вот мозгов у меня не хватает понять правильно (или корректно перевести???) следующую вещь:
Queueing out-of-sequence packets (TCP_QUEUE_OOSEQ)
Strictly, queueing out-of-sequence packets is only necessary when packet loss is expected, since can prevents resending all packets (e.g. packets 2, 3, 4) when only one packet is lost (e.g. packet 2 is lost but 3 and 4 have been received correctly: with TCP_QUEUE_OOSEQ disabled, packets 3 and 4 would be discarded as they are out-of-sequence and would have to be resent in-sequence by the remote host once packet 2 got through). However, even in environments where packet loss isn't expected, it might still happen, so enabling this is recommended.

Поэтому и спросил. Думал, может кто на пальцах объяснит. Параллельно пытаюсь разобраться сам. TCP считал что знаю, раньше UIP к LPC17xx прикручивал, разбирался и в физике и в Дункеле. По крайней мере та ссылка которую вы мне дали для меня не нова. Считаете, нужно вернутся к истокам?)) Типа "смотрю в книгу - вижу фигу"??? ))))
Сейчас еще ситуация сложилась, что в ограниченное время нужно разобраться со многим. Поэтому и начал сюда писать.

Цитата(MALLOY2 @ Mar 14 2012, 12:18) *
Я сам писал. готового под LwIP и FATfs нету.


А прилично будет попросить у вас показать исходники?

Сообщение отредактировал _fun_ - Mar 14 2012, 12:24
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Mar 14 2012, 12:38
Сообщение #15


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Да могу, но это код работает с FREERTOS, LwIP и FATfs, реализует не все команды FTP (только которые мне нужны были), и не поддерживает пассивный режим FTP.


Прикрепленные файлы
Прикрепленный файл  ftp.zip ( 4.38 килобайт ) Кол-во скачиваний: 114
 
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 02:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016