Перейти к содержанию
    

STM32F107 ethernet проблема со старым оборудованием

Два дня ловил черную кошку :(. а проблема была с MR820TR(10Мбит хаб, удобно смотреть обмен т.к. не режет пакеты как свичи). Симптомы следующие, устройство не сообщает свой MAC на ARP  запрос. Выяснилось, что, если просто остановиться в отладчике, ответ проходит, если без остановки - нет, причем пакеты от устройства идут без проблем. Со 100мбит оборудованием проблем нет. Версия - MR820TR долго переключается с передачи на прием и не может принять начало ответа. LWIP, STM32F107, RTL8201BL

Можно ли это победить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, viakon сказал:

Можно ли это победить?

Пакеты в МАС засылаете по флагу освобождения или по таймеру? Если посл- тут и проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пакеты в MAC заливает DMA. Я только складываю пакет в свободный chain буффер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12.08.2021 в 10:53, viakon сказал:

Симптомы следующие, устройство не сообщает свой MAC на ARP  запрос.

Так именно "устройство не сообщает" или всё-таки ваше ПО его ответ не принимает?

Это всё-таки совершенно разные вещи....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, jcxz сказал:

Так именно "устройство не сообщает" или всё-таки ваше ПО его ответ не принимает?

Пакет ответа не видно в wireshark и устройство, что делало запрос, его тоже не видит. Хотя он попадает в буфер DMA для отсылки.

Я думаю забить на это, сейчас найти использующееся оборудование 10Мбит не реально.

Изменено пользователем viakon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, viakon сказал:

Пакет ответа не видно в wireshark. Хотя он попадает в буфер DMA для отсылки.

Ничего не понятно....  :wacko2:

Ответа чьего? Того устройства, которое на ARP не отвечает? Так вы его отлаживаете? Посылаете ему ARP-азпросы с какого-то стороннего устройства?

Напишите пожалуйста более внятно.

Цитата

Я думаю забить на это, сейчас найти использующееся оборудование 10Мбит не реально.

Г*вно всегда проще не вычищать, а замести под ковёр. Только потом надо всегда быть осторожным, ходя по этому ковру. И гостей предупреждать, которые приходят....  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую объяснить понятней. Есть устройство 1, назовем Dev1, и устройство 2, назовем Dev2. Dev 1, хочет отправить пакет к Dev2, формирует ARP запрос MAC адреса Dev2. Dev2 принимает запрос, отвечает в сеть, но ответ пропадает(возникает коллизия или еще что). Соответственно Dev1 не может ничего отправить, т.к. не знает MAC Dev2. На MR820TR работает так. На 100Мбит оборудовании все работает как надо. Я припоминаю, попадалась как то инфа в интернете, что надо делать задержку перед отправкой в LWIP(могу путать, давно было), может как раз по этой причине. Но сейчас все найденные примеры использования LWIP такой задержки не имеют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 минут назад, viakon сказал:

Попробую объяснить понятней. Есть устройство 1, назовем Dev1, и устройство 2, назовем Dev2. Dev 1, хочет отправить пакет к Dev2, формирует ARP запрос MAC адреса Dev2. Dev2 принимает запрос, отвечает в сеть, но ответ пропадает

А отлаживаете вы какое? Dev2?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если

1 час назад, viakon сказал:

Пакет ответа не видно в wireshark

то возможно - неправильно формируете этот ответ? Содержимое ответного пакета точно правильное? CRC & etc.?

12.08.2021 в 10:53, viakon сказал:

если просто остановиться в отладчике, ответ проходит, если без остановки - нет

Один из вариантов: после отправки (точнее: после постановки на передачу для DMA), содержимое этого пакета разрушаете в памяти (до того, как он был реально выплюнут DMA наружу).

После завершения DMA-TX для данного пакета, проверьте его содержимое в памяти. Совпадает ли с изначальным?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, jcxz сказал:

то возможно - неправильно формируете этот ответ

Т.е. для 100Мбит пакет формируется правильно, а для 10 - криво? Маловероятно, это с программой никак не связано, это настройка MAC. Содержимое буфера точно не портится, у меня 10 буферов зарезервировано на отправку, они используются циклично и пока до него снова очередь не доходит информация в нем не переписывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 минут назад, viakon сказал:

Т.е. для 100Мбит пакет формируется правильно, а для 10 - криво?

Конечно. Например: Поставили пакет для DMA на передачу, а потом сразу поместили этот пакет в очередь доступных для формирования нового кадра (ну или ещё куда-то эту память отдали). На 100Мбит пакет успел уйти до порчи, на 10Мбит - не успел, что-то успело записаться поверх.

Или просто задача, заполнявшая пакет завершилась, освободила CPU для выполнения следующей задачи, которая тупо портит память по некоторым адресам. Пока заполнявшая задача пакет заполняла, её приоритет был выше и она просто не давала кривой задаче произвести её чёрное дело (или она очень быстро заполняла пакет). На 100Мбит оно успевает проскочить до порчи, на 10 - не успевает. Завтра в ПО что-то сдвинется (расположение в памяти каких-то объектов или задержки выполнения участков кода) и станет портиться на 100Мбит. Только и всего.

Возможных причин может быть море. Главное, что баг где-то есть и как он будет проявляться и в какую ещё пятку выстрелит - вы не знаете. Пока его не найдёте. :unknw:

Цитата

Содержимое буфера точно не портится,

Проверили? После завершения отправки.

Цитата

у меня 10 буферов зарезервировано на отправку, они используются циклично и пока до него снова очередь не доходит информация в нем не переписывается.

Вам виднее, программа то ваша. И если она где-то глючит - глюки тоже ваши. У нас-то всё работает.  :wink:

 

Также может быть какая-то кривая обработка других пакетов (из-за которой опять же портится память). Совсем не в функции заполнения пакета. Но на 100 и на 10 Мбит - разные временные моменты прохождения пакетов и временные соотношения между процессами их обработки (задачи, ISR-ы). Поэтому - когда-то портится, когда-то промахивается.

Портить может даже криво настроенный DMA-RX от того же Ethernet-драйвера (а не обязательно программный код).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, viakon сказал:

Т.е. для 100Мбит пакет формируется правильно, а для 10 - криво?

Да запросто, вам тут уже объяснили почему. Отключите хотя бы пока все остальные процессы, кроме сетевого стека и посмотрите, будет ли разница...

Можно еще и просто подключить напрямую устройство к компу с вирешарком, и посмотреть содержимое пакетов от устройства.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и все таки дело не в программе, а в оборудовании. Заменил MR820TR на роутер dir-300s. Порты дирке выставил в 10мбит, все стабильно работает. минус в том что теперь траффик не посмотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

08.11.2021 в 09:18, viakon сказал:

и все таки дело не в программе, а в оборудовании.

Ну не знаю, по мне, так такой кривой косяк в продакшн не выпустили бы, тем более уважаемая контора, как Allied Telesyn...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...