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

 
 
> STM32 + switch KSZ8895
cyrax0
сообщение Dec 9 2014, 11:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 9-12-14
Пользователь №: 84 046



Здравствуйте!
Используем данную связку (см. сабж), объединяя таким образом контроллеры в общую сеть. Внутри них крутится программа, которая очень часто посылает сетевые UDP-пакеты (скажем, 200 пакетов в секунду). Все хорошо (почти), за исключением того, что через 1-10 часов работы один или более контроллеров из 10 прекращают обмен. При этом вызов udp_send возвращает ноль, т.е. с точки зрения ethernet-а контроллера все хорошо. Свич тоже живой: индикаторы портов мигают и производится пересылка бродкаст-пакетов, а также срабатывает прерывание свича по изменению link status (при подключении/отключении сетевого провода). Но реально программа и свич уже не общаются.

Дебаггер к этому времени уже сто раз отвалится, да и проблемный контроллер не угадать. Поэтому вопрос в том, куда копать?
Если запостил не туда, прошу направить в нужное направлениеsm.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
scifi
сообщение Dec 9 2014, 12:01
Сообщение #2


Гуру
******

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



Для начала надо потыкать MII/RMII щупом осциллографа и определить, это МК не выдаёт кадры или свич их не пропускает.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 9 2014, 13:43
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(cyrax0 @ Dec 9 2014, 17:50) *
Дебаггер к этому времени уже сто раз отвалится, да и проблемный контроллер не угадать. Поэтому вопрос в том, куда копать?

Для отладки без дебаггера используют обычно отладочный вывод в UART к примеру.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 9 2014, 14:17
Сообщение #4


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(cyrax0 @ Dec 9 2014, 14:50) *
... Поэтому вопрос в том, куда копать?...


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

ставьте контрольные точки. либо записывать либо выводить в юсарт.
думать можно на разные вещи - ваша задача раздербанить на составные и опознать проблему или хотя бы локализовать место.

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 9 2014, 14:59
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



недавно SM писал про какой-то СТМ который зависал в ходе обмена, просто стэк наедался кексов при повышении плотности обмена и мало мальской нагрузке на проц.

При этом поглядите в стеке функции отправки, были жалобы что большая часть аварийных ситуаций заткнута заглушками "все хорошо". Ковыряли что-то что идет с СТЭамими, вроде бы это был LwIP. Это я к тому что возвращаемый 0 от UDP - вовсе не означает что все хорошо, просто там все плохо, но на этом плохо стоит заглушка которая возвращает 0 код ошибки...
Go to the top of the page
 
+Quote Post
doom13
сообщение Dec 9 2014, 18:36
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Dec 9 2014, 17:59) *
недавно SM писал про какой-то СТМ который зависал в ходе обмена, просто стэк наедался кексов при повышении плотности обмена и мало мальской нагрузке на проц.

При этом поглядите в стеке функции отправки, были жалобы что большая часть аварийных ситуаций заткнута заглушками "все хорошо". Ковыряли что-то что идет с СТЭамими, вроде бы это был LwIP. Это я к тому что возвращаемый 0 от UDP - вовсе не означает что все хорошо, просто там все плохо, но на этом плохо стоит заглушка которая возвращает 0 код ошибки...

Что-то Вы тут явно напутали. Это про тот случай, когда процессор захлёбывался от приёма потока broadcast-ов?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 9 2014, 20:01
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



SM - да про бродкасты, ТС тоже что-то писал.


про заглушки в функциях - это отдельный случай, не связанный с тем. В нем пошли по цепочки вызовов функций, и нашли что куча ошибок заглушено просто нулевым возвратным кодом...
Go to the top of the page
 
+Quote Post
cyrax0
сообщение Dec 10 2014, 12:18
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 9-12-14
Пользователь №: 84 046



Спасибо всем за ответы!
К сожалению, сеть пока не упала (контроллеры часто перезагружаются, хотя могла бы и упасть...), поэтому проверить советы пока нет возможности.
Надо отметить, что ошибка может быть чисто программная и косвенно устраниться сама собой. Поскольку ПО сейчас активно обновляется, эта ситуация вполне вероятна.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 10 2014, 12:40
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



не поленитесь проглядите драйвер мак уровня. Так или иначе все стеки в конце концов спускаются до него, а у STM там некрасиво сделано, много мест где скоменчено что пользователи сами должны дописать обработку нештатки...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:48
Рейтинг@Mail.ru


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