Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зависания EMAC AT91SAM7X256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
prottoss
Всем привет. Вопрос вот такой. Есть девайс на основе МК ATMEL AT91SAM7X256. Девайс коммутирует несколько относительно мощных нагрузок и управляется оператором по Ethernet и с пульта местного управления. Так вот, иногда, при переключении нагрузок на МК отпадает модуль ЕМАС. И что самое интересное, что модуль может отпадать частично. Например, при если во время переключения нагрузки шла передача от ЕМАС в сеть, то может отвалиться только передающая часть ЕМАС, если принимал, то только приемная. С передатчиком справился, отслеживая таймаут процесса передачи и полностью реиницализируя ЕМАС. С приемником что то туплю. Есть какие нибудь мысли?
Спасибо.
PS: на счет разводки просьба вопроса не поднимать, интересует только программное решение проблемы.
aaarrr
А симптомы зависания какие? Что в статусах, дескрипторах?
prottoss
Цитата(aaarrr @ Nov 19 2008, 22:17) *
А симптомы зависания какие? Что в статусах, дескрипторах?
Симптомов ни каких, если говорить конкретно о приемнике EMAC. PHY исправно мигает лампочкой при пингах. Но прерывания от приемника не происходит. В статусном регистре EMAC_RSR все биты сброшены
SpiritDance
Цитата(prottoss @ Nov 19 2008, 17:59) *
Всем привет. Вопрос вот такой. Есть девайс на основе МК ATMEL AT91SAM7X256. Девайс коммутирует несколько относительно мощных нагрузок и управляется оператором по Ethernet и с пульта местного управления. Так вот, иногда, при переключении нагрузок на МК отпадает модуль ЕМАС.

PS: на счет разводки просьба вопроса не поднимать, интересует только программное решение проблемы.

сталкивался с подобным поведением модуля SPI на S серии при условии коммутации рядом с девайсом высоковольтных линий и следовательно эм помех. Сожалею, но в данном случае проблема решалась переразводкой и установкой внешнего watchdog с пресбросом по питанию (reset контроллер в данном случае тоже вещь не надежная). Так что боюсь дело именно в разводке платы и программно эту проблему не решить. sad.gif
prottoss
Цитата(SpiritDance @ Nov 23 2008, 14:21) *
Так что боюсь дело именно в разводке платы и программно эту проблему не решить. sad.gif
Я тоже склоняюсь к такому мнению, но заказчика ПО убедить не получаетсяsmile.gif
aaarrr
Цитата(prottoss @ Nov 19 2008, 17:59) *
Есть какие нибудь мысли?

Есть все-таки мысль, что с софтом не все чисто, ибо это:
Цитата
...если во время переключения нагрузки шла передача от ЕМАС в сеть, то может отвалиться только передающая часть ЕМАС, если принимал, то только приемная.

выглядит странно.

Точно битые пакеты (фрагменты) в приемном буфере нормально обрабатываются?
prottoss
Цитата(aaarrr @ Nov 24 2008, 01:38) *
Точно битые пакеты (фрагменты) в приемном буфере нормально обрабатываются?

Все пакеты обрабатываются, если о них знает поток TCPIP стека. Потоку семафорит прерывание по приему от ЕМАС. Так вот о зависаниях приемной части ЕМАС я сужу по тому факту, что прерывания по приему пакета перестают возникать.
aaarrr
Я имел в виду пакеты и фрагменты в приемной очереди EMAC. После аварии очередь пуста или забита?
prottoss
Цитата(aaarrr @ Nov 24 2008, 22:27) *
Я имел в виду пакеты и фрагменты в приемной очереди EMAC. После аварии очередь пуста или забита?
Там остается произвольное количество пакетов, и, после зависания, она не изменяется. ЕМАС в память больше ничего не ложит.
SpiritDance
Цитата(prottoss @ Nov 24 2008, 18:14) *
Так вот о зависаниях приемной части ЕМАС я сужу по тому факту, что прерывания по приему пакета перестают возникать.

Решение конечно не ахти какое но... может следует изобразить таймер, сбрасывающийся и по приему пакета. Если прерывания зависнут таймер истечет и по этому событию можно отключить и снова включить emac через PMC. Остается только подобрать правдоподобный интервал.
Это если конечно присутствует 100% уверенность в существующем софте.
prottoss
Цитата(SpiritDance @ Nov 25 2008, 00:03) *
Решение конечно не ахти какое но... может следует изобразить таймер, сбрасывающийся и по приему пакета. Если прерывания зависнут таймер истечет и по этому событию можно отключить и снова включить emac через PMC. Остается только подобрать правдоподобный интервал.

Этот вариант я тоже рассматриваю. Но хотелось бы что то более разумное.
Цитата(SpiritDance @ Nov 25 2008, 00:03) *
Это если конечно присутствует 100% уверенность в существующем софте.

Софт работает 100% уже около полугода. Да и проблема достаточно локализирована.
aaarrr
Цитата(prottoss @ Nov 24 2008, 19:08) *
Там остается произвольное количество пакетов, и, после зависания, она не изменяется. ЕМАС в память больше ничего не ложит.

Т.е. место точно есть, ошибок никаких точно нет, а приемник стоит - я правильно понимаю?

Цитата(prottoss @ Nov 24 2008, 20:19) *
Софт работает 100% уже около полугода. Да и проблема достаточно локализирована.

Вопрос в том, работает ли он в идеальных условиях (без потерь/искажений пакетов), или же в приближенных к реальным (с потерями/искажениями пакетов, но без ЭМ-помех)?
SpiritDance
Я начинаю припоминать что добивались такого иногда просто подключая землю цифрового осциллографа к работающей плате, то есть проблема была в разводке земли там иногда аж искры пробегали. Попробуйте добиться эффекта не коммутируя нарузку. Может проблема отыщется совсем в другом месте и это место удастся ликвидировать без переразводки напаиванием сверху.
prottoss
Цитата(aaarrr @ Nov 25 2008, 01:09) *
Т.е. место точно есть, ошибок никаких точно нет, а приемник стоит - я правильно понимаю?
Да. Т.е. перестают возникать прерывания от приемника ЕМАС.
Цитата(aaarrr @ Nov 25 2008, 01:09) *
Вопрос в том, работает ли он в идеальных условиях (без потерь/искажений пакетов), или же в приближенных к реальным (с потерями/искажениями пакетов, но без ЭМ-помех)?
Без подключенных мощных реле сервер работает, т.е. таких проблем не возникает. С этими реле, иногда, возникают сбои, о которых я пишу. Отпадает приемник или передатчик ЕМАС, либо все вместе. С передатчиком я разобрался. С приемником пока не получается.
bookevg
Цитата(prottoss @ Nov 25 2008, 05:22) *
Без подключенных мощных реле сервер работает, т.е. таких проблем не возникает. С этими реле, иногда, возникают сбои, о которых я пишу. Отпадает приемник или передатчик ЕМАС, либо все вместе. С передатчиком я разобрался. С приемником пока не получается.

Попробуйте землю платы в точке установки разъема Ethernet через высоковольтный конденсатор на корпус посадить
prottoss
Цитата(bookevg @ Nov 25 2008, 17:42) *
Попробуйте землю платы в точке установки разъема Ethernet через высоковольтный конденсатор на корпус посадить
Так и сделано
aaarrr
Цитата(prottoss @ Nov 25 2008, 05:22) *
Без подключенных мощных реле сервер работает, т.е. таких проблем не возникает.

Если никаких проблем не возникает, то это не значит еще, что работает. Повторю вопрос: испытывался ли сервер в условиях наличия сбоев на шине Ethernet?
prottoss
Цитата(aaarrr @ Nov 26 2008, 00:12) *
Если никаких проблем не возникает, то это не значит еще, что работает. Повторю вопрос: испытывался ли сервер в условиях наличия сбоев на шине Ethernet?
Что Вы имеете ввиду? Битые пакеты?
aaarrr
Цитата(prottoss @ Nov 25 2008, 20:27) *
Что Вы имеете ввиду? Битые пакеты?

Именно.
prottoss
Цитата(aaarrr @ Nov 26 2008, 00:41) *
Именно.
Битые пакеты, если они попали в память, определенную для ЕМАС, отрабатываются корректно. Но, в память они не попадают, генерация прерывания по приему пакета не происходит, о чем я говорил выше. Т.е, я так думаю, что то в железе приемника ЕМАС зависает напрочь, да так шибко, что даже попытки перезагружать, почему то, у меня, не оканчиваются успехомsad.gif
Перезагрузку делаю так:
1.Запрещаю все прерывания от ЕМАС.
2.Запрещаю работу ЕМАС.
3.Удаляю семафоры ОС.
4.Вызываю по новой функцию инициализации ЕМАС
aaarrr
Если это SAM7_EMAC.c из демки FreeRTOS, то он не совсем без греха, хотя виснуть не должен.

А PHY после сбоя работает? RXDV генерируется?
prottoss
Цитата(aaarrr @ Nov 26 2008, 01:24) *
Если это SAM7_EMAC.c из демки FreeRTOS, то он не совсем без греха, хотя виснуть не должен.А PHY после сбоя работает? RXDV генерируется?
Это не демка FreeRTOS:) хотя файл у меня называется именно так:)RXDV генерируется, по MDI PHY отвечает, т.о. я почти убежден, что отказ в приемнике ЕМАС.
aaarrr
Цитата(prottoss @ Nov 25 2008, 21:28) *
я почти убежден, что отказ в приемнике ЕМАС.

А я почти убежден, что дело в софте smile.gif
Согласитесь, трудно себе представить ситуацию, когда от внешнего воздействия почему-то падает именно EMAC (несмотря на наличие гальванической развязки), а все остальное продолжает спокойно работать.
prottoss
Цитата(aaarrr @ Nov 26 2008, 01:36) *
А я почти убежден, что дело в софте smile.gif
Согласитесь, трудно себе представить ситуацию, когда от внешнего воздействия почему-то падает именно EMAC (несмотря на наличие гальванической развязки), а все остальное продолжает спокойно работать.
Но именно так, по крайней мере визуально, происходит. Задача, которая мониторит внешние датчики и отображает показания на дисплее преспокойно работает, задача TCPIP постоянно сидит на семафоре приемника ЕМАС... И не получает ни одного пакета... Нету прерывания от приемника ЕМАС... Ну нету и все тут smile3046.gif
aaarrr
Да забудьте про ОС! Копайте регистры состояния и статистики, очереди дескрипторов и т.д. - только так можно получить полноценную картину аварии.
prottoss
Цитата(aaarrr @ Nov 26 2008, 01:54) *
Копайте регистры состояния и статистики, очереди дескрипторов и т.д.
Копаю...
prottoss
Проблему локализировали... Дело было в линии RESET от дисплейной платы до основного модуля. Наводки по линии RESET. Эта линия подтянута к напряжению питания на плате. На дисплейной плате просто подключена к кнопке. Длина шлейфа около 35 см. Вот такой глупый прикол...
aaarrr
Цитата(prottoss @ Jan 9 2009, 19:13) *
Проблему локализировали... Дело было в линии RESET от дисплейной платы до основного модуля. Наводки по линии RESET. Эта линия подтянута к напряжению питания на плате. На дисплейной плате просто подключена к кнопке. Длина шлейфа около 35 см. Вот такой глупый прикол...

PHY слетал?
prottoss
Цитата(aaarrr @ Jan 9 2009, 23:53) *
PHY слетал?
Ага, в добавок ногу POWERDOWN заземлили, для экономии ног МК, и ее из ступора не вывести совершенно ни как. Счас вот экспериментирую с внешними цепочками и задержкой на инит ЕМАС и PHY.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.