Ковыряю дизасм от небольшой автомобильной прошивки. Там запись
критичных значений в eeprom происходит с резервированием в три
копии. При записи - проверяется корректность записи, при чтении -
поиск и восстановление одиночного сбоя. Программа ведет постоянную
проверку на наличие сбоев. Постоянно идет вычитывание "троек" из
EEPROM, постоянно идет пересчет КС прошивки, постоянно идет
тестирование RAM (гасим прерывания, проверяем корректность
резервной области памяти путем записи-чтения 0x55/0xAA , затем копируем рабочую память опять же с чтением-проверкой, проверяем корректность основной памяти 0x55-0xAA, копирование рабочих значений обратно).
Ну и всё увешано таймерами, которые измеряют длительности различных рабочих циклов. Бесконечные циклы (например ожидание готовности значения АЦП) ограничены, длительные циклы побиты на куски (например тот же пересчет КС прошивки). Ну и естественно проверка внешних состояний на запрещенные, измеряется ток потребления "моторчика" которым это ПО управляет. Для диагностики ошибочных состояний заведены счетчики числа срабатываний в EEPROM, они доступны через диагностический интерфейс (и похоже сделаны исключительно для этого).