Цитата(haker_fox @ Jul 11 2018, 12:53)

А если только MPU? Или у нас Cortex-M0 без оного?
Расчудесная и многими любимая фирма STMicroelectronics даже некоторые МК на Cortex-M3 умудряется делать без MPU. Видимо заботится о юзерах - чтоб мозги не перенапрягли, разбираясь в нём.

Цитата(ViKo @ Jul 11 2018, 13:22)

Есть не один способ сбросить МК без собаки. Зачем ждать, пока собака проснется?
Да знаем мы уже Ваш способ! этот способ - юзер с большим рубильником

Цитата(Arlleex @ Jul 11 2018, 14:52)

А если этот ваш МК стоит на приводе управления тормозами поезда? А если в самолете?
...то их (девайсов) должно быть как минимум 4-ро. Если один вздумал вольнодумничать - 3 других дадут ему по шее, так чтоб перезагрузился. А если пойдут 2 на 2, то попросят помощи у машиниста/пилота.

Цитата(AlexandrY @ Jul 11 2018, 16:15)

Ловить HardFault-ы в релизе во время эксплуатации нет особого смысла.
Слишком много информации надо зафиксировать о контексте события, слишком обременительно хранить историю версий и парсить многомегабайтные логи.
Лучше их выловить отладочным адаптером заранее.
Ну никто-ж не спорит, что лучше
быть богатым и здоровым чем бедным и больным писать код сразу и без багов. Но что-то ни у кого это не получается. И при компиляции в RELEASE ненайденные баги не исчезают волшебным образом.

Цитата(AlexandrY @ Jul 11 2018, 16:24)

Тестирование всего этого также повторяется с заданной периодичностью, хоть и раз в 10 мс.
Сдаётся мне, что попытка вытворить такое не уменьшит, а наоборот - увеличит вероятность наличия багов.
Цитата(haker_fox @ Jul 11 2018, 16:28)

MPU? Но ему же закалебёшься объяснять, какая память какой задаче принадлежит.
Вообще - это возможно. Если каждая задача работает только со своими переменными.
Собираем эти переменные в свои регионы памяти: для каждой задачи - отдельный регион, куда линкуются только её переменные; в хуке переключателя контекста (в uCOS такой уже есть, но если и нет - можно просто вставить в имеющийся переключатель) при переключении на какую-то задачу закрываем всю память от записи (или вообще любого доступа) кроме региона этой задачи.
Но так редко бывает, чтобы задача работала только со своими переменными без взаимодействия с другими задачами. Хотя тут тоже есть варианты.
А изначально Вам следовало определить причину HF. И от неё уже танцевать.
Конечно бывает, что HF вызывает вторичная причина (первичная просто разрушила чью-то память не вызвав HF, а когда пользователь этих данных полез к ним, то у него и случился HF). Тут уже сложнее. Но тоже есть варианты решений.
Цитата(Pavia @ Jul 11 2018, 19:21)

Место вставки элементарно подсчетом скобок определяется. Только для каждого класса надо будет добавить GetDebugString
Набежали, блин, PC-теоретики....

Цитата(AlexandrY @ Jul 11 2018, 21:30)

Замедление разработки в ответственных системах скорее всего даже полезно.
Да я тоже считаю что лучше 5 раз сходить на кофе-паузу чем 2!!! Ведь чем меньше времени программист проводит за клавиатурой, тем меньше у него времени плодить баги!
На прошлой работе у меня был коллега, так он так начальству и говорил: "Вот я сейчас лишние полчаса просидел в кафе, так я же это с целью ускорить разработку - иначе бы за это время успел написать баг, но поиски которого пришлось бы потратить несколько дней. А так - выпил лишнюю чашку кофе - и ускорил проект на несколько дней!"