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

 
 
> stm32f207+lwip, bug(s) or/and feature(s) ?
Entuziast
сообщение Sep 23 2012, 08:13
Сообщение #1





Группа: Validating
Сообщений: 14
Регистрация: 22-10-07
Пользователь №: 31 604



имеется устройство на stm32f207 с dp83848CVV в качестве phy-интерфейса в режиме RMII. запускается и нормально работает пример от ST tcp/udp-echo server.
Проблема в том что всё работает только если в сети есть сервер и только один клиент. если появляется второй клиент то с ним не устанавливается соединение и пропадает соединение с первым клиентом. при выключении
второго клиета соединение с первым востанавливается без перезагрузки сервера и начинает снова пинговаться и зеркалиться. первый клиент так же не перезагружается. клиенты - компьютеры, сервер бежит на самодельной железке. HW сетевой части - полный копи-пэйст с ST-ой демоборды для stm32f207. IP-адреса на сервере и клиетах задаются статически.
Можно ли сделать , чтоб сервер работал с несколькими клиетами?

Сообщение отредактировал Entuziast - Sep 23 2012, 08:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MBR
сообщение Sep 26 2012, 06:23
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Плавали. lwip кривой. TCP уровень не thread-safe, поэтому и проблемы при появлении второго клиента. О чем можно вполне погуглить. Частично проблема решается мьютексами вызовов lwip.
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 27 2012, 05:49
Сообщение #3


Гуру
******

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



Цитата(MBR @ Sep 26 2012, 10:23) *
Плавали. lwip кривой. TCP уровень не thread-safe, поэтому и проблемы при появлении второго клиента.

Про то, что lwip не thread-safe, они прямо пишут. Так и говорят: TCP должен работать в отдельном потоке.
Однако, проблема топикстартера скорее всего не в этом. Вероятно, пример от ST не предназначен для работы с двумя клиентами. Надо смотреть, как там устроен код установления соединения.
Сам делал HTTP сервер и TELNET сервер на lwip. Никаких проблем с одновременным соединением нескольких клиентов не было. Более того, однажды даже ограничивал число соединений к TELNET серверу одним клиентом: пока сервер занят, соединение от второго клиента не принималось.
Go to the top of the page
 
+Quote Post
MBR
сообщение Sep 27 2012, 06:33
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(scifi @ Sep 27 2012, 09:49) *
Про то, что lwip не thread-safe, они прямо пишут. Так и говорят: TCP должен работать в отдельном потоке.

Тем не менее, это не особо помогает. Я не могу сказать про реализацию сервера, скажу лишь про реализацию нескольких клиентов на одном lwip: при попытке одновременного вызова функций lwip из разных процессов, lwip гарантированно валится. А изолировать все вызовы lwip внешними мьютексами тоже не всегда возможно.


Цитата(Entuziast @ Sep 27 2012, 09:42) *
последний вопрос - не могли бы порекомендовать надёжную реализацию стека TCP -платную либо бесплатную чтобы бежала на 3-ем кортексе?

К сожалению, не подскажу много. Есть еще у tnkernel своя реализация, но там нет lcp.
Go to the top of the page
 
+Quote Post
Entuziast
сообщение Sep 27 2012, 07:27
Сообщение #5





Группа: Validating
Сообщений: 14
Регистрация: 22-10-07
Пользователь №: 31 604



Цитата(MBR @ Sep 27 2012, 10:33) *
К сожалению, не подскажу много. Есть еще у tnkernel своя реализация, но там нет lcp.

what is "lcp"?

Цитата(scifi @ Sep 27 2012, 09:49) *
Про то, что lwip не thread-safe, они прямо пишут. Так и говорят: TCP должен работать в отдельном потоке.
Однако, проблема топикстартера скорее всего не в этом. Вероятно, пример от ST не предназначен для работы с двумя клиентами. Надо смотреть, как там устроен код установления соединения.
Сам делал HTTP сервер и TELNET сервер на lwip. Никаких проблем с одновременным соединением нескольких клиентов не было. Более того, однажды даже ограничивал число соединений к TELNET серверу одним клиентом: пока сервер занят, соединение от второго клиента не принималось.

втом то и дело что моя поблема именно с tcp-echo. с НТТР и телнeт в lwip подобного не наблюдалось

Цитата(Entuziast @ Sep 27 2012, 11:23) *
what is "lcp"?

tnkernel - do you mind "thinkernel" from yuri temkin?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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