Дуня перегружается. Небанальная проблема

Коллеги,

Есть довольно большой проект на Arduino Nano.
3 года он развивался и всё было хорошо.
А на днях прошивка начала перезагружать дуню. Никаких значимых изменений не было.

Пытался делать откаты на 100% стабильные билды. Ничего не помогает. Если заливать архивные hex стабильного билда - всё норм, а если пересобрать заново - перезагрузка.

Что предшествовало – сказать трудно. И Arduino 2.0 была поставлена, и какие-то общие библиотеки обновились. И VS Micro обновлялся. И VS2019 на VS2022 обновлялась. Общие библиотеки откатить не получится, ибо неизвестно какие версии стояли. Их, похоже еще и установка Arduino IDE 2.0 обновила…

Памяти точно хватает, с указателями работаю аккуратно, с массивами тоже….

Может, и случился какой косяк, но как его теперь найти – я не понимаю. Всё веду в git, но откаты до стабильных релизов не хватает. Давно надо было переходить на platformio. Там хоть библиотеки инкапсулируются в проект.

Интересует совет как найти причину. Какую технику применить.

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

Проект живёт на vsmicro с кучей Shared libraries.

Другое железо возьми да проверь, мошт память текёт, аппаратно

1 лайк

Разные нано уже менял.

Значить, программно накосячил.

1 лайк

Очень даже может быть. Наверное, пришло время прокачать свои навыки отладки.
Кроме обычной трассировки в Serial, есть какие-то способы?

Если перегружается, я бы последил за памятью череp MemoryExplorer.

С чего Вы, кстати, взяли, что проблема не банальна? По мне так …

1 лайк

я бы начал с внедрения WDT + корректную логику после перезагрузки, чтоб устройство продолжало полноценно работать

а потом уже проблему искать

1 лайк

устройство грузится буквально сразу, неск. секунд работы, и всё
не могу придумать как wdt поможет. дуня не виснет, она перегружается. думал, что wdt срабатывает, сделал на 8 сек. нет, не он. отключил совсем. то же самое.

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

MemoryExplorer погуглю. не слышал такого

Нууу… по телефону аппендицит не вЫрезать, увы. По интернету - тоже.

1 лайк

полный компилируемый код в студию…на посмотреть.

а количество этих секунд после Reset одинаковое?
если в голый МК, без обвеса устройствами, залить прошивку - так же перезагружается?

Ну а питание менял ?

1 лайк

Вообще-то, это одна из самых глобальным проблем в программировании.

Чё его гуглить, он родился на этом форуме и всю жизнь на нём живёт

1 лайк

И в своё время сильно помог мне, тупенькому. :slight_smile:

до первого ресета программа проходит заметно дальше, чем при последующих

да, это без разницы.

к сожалению, мне нельзя это выкладывать.
я понимаю, что это резко усложняет дело

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

Ну и предложить тогда особо нечего…
Начать с комментированич всего что в loop, потом с самого конца то что в setup и т д…
ЗЫ. Мой хрустальный шар говорит что проблема с работой с указателями /данными progmem. Недавно именно аналогичные симптомы были.

А может переписать всё с нуля, с учётом уже полученного опыта?

Может там даже и стринги секретные имеются, да маллоки без фри.