Определение причины перезапуска

Добрый день! Каким образом можно определить причину перезапуска WB6?
Задача разделить перезапуск по питания от программного перезапуска.
Программно определить из user code

Добрый день!
А что именно вы понимаете под программным перезапуском?
Стандартное ПО контроллера само никогда не инициирует перезапуск, речь про какое-то ваше ПО?

Имеется в виду перезапуск по watchdog (если отслеживаемая программа зависла), по команде из терминала.

Надо смотреть на messages
Будут сообщения от ватчдога типа:
wb-daemon-watchdogs: Failed to restart
wb-daemon-watchdogs: Error:

Спасибо за ответ.
Это не поможет, если был ребут из shell.
Типовое решение такой задачи запись в неиспользуемую RAM какого-то значения.
На старте ПО проверяется наличие этого значения.
Возможен ли на WB6 подобный подход?

RAM-то регенирироваться должна. Надо поднять даташит на чип часов - в них часто есть RAM энергонезависимая.

RAM часов вещь понятная. Ее в этой задаче не применить. Но важна именно причина перезапуска.
RAM регенерируется в используемом диапазоне. Если есть свободные участки, то они должны быть для ОС недоступны. И там можно хранить флаг

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

В реализации watchdog, перезагрузки и всего похожего в Wiren Board 6 нет ничего специфического - всё как в любом другом компьютере с Linux.

Необходимости писать именно в RAM нет: обычная файловая система всегда доступна на запись и данные там точно сохранятся после перезагрузки. Поэтому и писать проще всего туда.

Я бы просто рекомендовал парсить лог, чтобы определить срабатывание watchdog, или даже дописать в watchdog.conf выполнеие собственных команд перед перезагрузкой.
Вместо отправки “reboot” в терминале предусмотреть свою обёртку, которая тоже оставить правильные следы в нужном месте. Обычный reboot, конечно, тоже оставит записи в логе, возможно вы сможете пользоваться и ими.