Jump to content

    

Новые STM32H7 - два ядра (M7+M4), 480 МГц

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

Который, скажем из-за выхода из строя какой-то периферии, стал циклически перезагружаться вотчдогом.

У МК есть статусный регистр с указанием источника перезагрузки.

Если у вас 10 перезагрузок от IWDT, то это можно программно определить. Есть флаги перезагрузки по пину RESET и подаче питания POR.

Share this post


Link to post
Share on other sites
3 часа назад, haker_fox сказал:

Я имел в виду не отладку на столе, а прибор. Который, скажем из-за выхода из строя какой-то периферии, стал циклически перезагружаться вотчдогом. Т.е. запускается, делает какие-то действия, перезагружается, снова выполяет действия и т.д. Т.е. цикл "старт устройства, перезагрузка" и так до бесконечности может быть нежелателен. Ведь до перезагрузки прибор может начать выполнять какие-то действия, например, закрывать задвижку на газопроводе.

Так если работа программы возможна без этой периферии, то пишите её драйвер так, чтобы программа не висла. Ведь WDT срабатывает при зависании ПО, а не периферии.

 

PS: Мне в одном из устройств по ТЗ необходима была замена LCD на "горячую". При том что LCD был подключен по I2C и всё время обновлялся. И ничего - реализовал. И даже можно менять на LCD другого типа (сегментного на графический и наоборот) на ходу и без перезагрузки. И ничего не виснет.

В другом девайсе вис кодек, подключенный по I2C и I2S. Вис изредка, из-за воздействия помех. Схемотехнически побороть не удалось. Тоже сделал периодический опрос состояния и сброс через ключ на питание.

Share this post


Link to post
Share on other sites
3 hours ago, haker_fox said:

... а прибор. Который, скажем из-за выхода из строя какой-то периферии, стал циклически перезагружаться вотчдогом.

IMHO, так не должно быть. Никакой выход из строя периферии не должен приводить к таким последствиям.

Share this post


Link to post
Share on other sites
4 часа назад, haker_fox сказал:

Написать программу "маэйнлупом", без прерываний по поллингу, и, я думаю, будет работать...

Гы:smile:

У меня самописный кооперативный планировщик, который я однажды уже представлял на обзор любым заинтересованным:bb: Глюков замечено не было...

Share this post


Link to post
Share on other sites
5 hours ago, aaarrr said:

Сохраняйте состояние в RAM, принимайте решение по восстановлению после сброса.

Да, точно! А ведь простое решение я сразу и не увидел. Спасибо!

 

Share this post


Link to post
Share on other sites
2 hours ago, Aleksandr Baranov said:

IMHO, так не должно быть. Никакой выход из строя периферии не должен приводить к таким последствиям.

Ну "не должен" это в теории. На практике я наблюдал совершенно иные результаты. Конечно они были из-за некачественно написанного ПО. Но всё же. Суть-то вопроса не в этом.

1 hour ago, Arlleex said:

Глюков замечено не было...

Тем более! Тогда вместо какой-нить pca9543 самое милое дело поставить маленький cortex-m0.

Share this post


Link to post
Share on other sites
3 часа назад, jcxz сказал:

PS: Мне в одном из устройств по ТЗ необходима была замена LCD на "горячую"...

Просто интереса ради - а чего за девайс такой, что вандально дисплей приходилось отдирать?:blush:

Могу предположить только, что это был некий стенд для проверки тех самых дисплеев.

Share this post


Link to post
Share on other sites
29 минут назад, Arlleex сказал:

Просто интереса ради - а чего за девайс такой, что вандально дисплей приходилось отдирать?:blush:

Могу предположить только, что это был некий стенд для проверки тех самых дисплеев.

Нет. Счётчик электроэнергии.

Но Вы были близки к истине: На сколько помню - это было нужно для технологического прогона счётчиков на стенде.

Share this post


Link to post
Share on other sites
7 часов назад, haker_fox сказал:

Написать программу "маэйнлупом", без прерываний по поллингу, и, я думаю, будет работать. Единственное, нужно тщательно тестировать. Но и, на всякий случай, завести ножки программирования этого простого МК к "большому брату". чтобы иметь возможность перепрограммировать его.

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

Share this post


Link to post
Share on other sites
4 часа назад, haker_fox сказал:

Да, точно! А ведь простое решение я сразу и не увидел. Спасибо!

А можете описать это решение? По-моему, ОЗУ никак не поможет определить был это сброс по питанию, внешнему сигналу RESET или watchdog`у.

Чем биты регистра RCC->CSR не угодили?

Share this post


Link to post
Share on other sites
6 hours ago, adnega said:

А можете описать это решение?

В устройствах, которыми я занимаюсь, есть часы реального времени и немного байт ОЗУ, которое питается от батарейки. Мы можем в регистрах МК узнать причину сброса и записать эту причину с отметкой времени. Если с момента времени предыдущей загрузки прошло менее, чем N сек, то можно заблокировать себя в вечном чикле. Или поступить более сурово: запустить схему crowbar, которая пережгёт предохранитель и обесточит нас гарантированно. Алгоритм можно усложнить, и анализировать, к примеру, не только время от предыдущей загрузки но и то, была ли она успешной, сколько раз мы уже перезагрузились на отрезке времени K сек и т.д. и т.п. Тут, естественно, есть нюансы. Если это часы на шине I2C, то нужно на момент загрузки иметь рабочий драйвер. Если это МК типа LPC4337, то пара сотен байт у нус висит прямо на внутренней шине, и сразу готова к использованию. В принципе, если это только перезагрузка, то мы можем использовать обычную ОЗУ внутри МК. Её значение не измениться, если это будет секция __no_init.

Share this post


Link to post
Share on other sites
4 часа назад, haker_fox сказал:

Или поступить более сурово: запустить схему crowbar, которая пережгёт предохранитель и обесточит нас гарантированно. Алгоритм можно усложнить, и анализировать, к...

Да, действительно сурово...  Неужели проблема с этими перезагрузками так актуальна и требуется такое "оперативное вмешательство"??

Share this post


Link to post
Share on other sites
Just now, mantech said:

Да, действительно сурово...  Неужели проблема с этими перезагрузками так актуальна и требуется такое "оперативное вмешательство"??

Нет, я это уже в качестве примера привёл)))

Share this post


Link to post
Share on other sites

Сейчас понял что этим двуядерникам нехватает - еще одного ядра М0!

Share this post


Link to post
Share on other sites
8 minutes ago, Михась said:

Сейчас понял что этим двуядерникам нехватает - еще одного ядра М0!

Всегда говорил, и буду говорить: не хватает маленькой cpld на этом же кристалле, абсолютно независимой от МК.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now