практически не вижу вообще вариантов восстановления состояния с
одним байтом :) как правило нужно ещё хранить несколько параметров
и текущих состояний периферии, к примеру. Если нужно максимально
надёжно восстанавливать состояние устройства после сбоя. то это
делается на уровне особенной организации структуры программы, и
конечно нужна выделенная область памяти для хранения параметров системы и программы (нескольно десятков байт хотя бы) Эту область нужно контролировать CRC, а ещё лучше дополнительно сделать три подобных области и организовать мажоритарное чтение-запись-модификацию. Но это нужно серьёзно подходить не только к организации работы с памятью, но и, как я говорил уже, к структуре программы в целом.
но вот честно, не представляю подобных задач на уровне программы в оном кристалле. На уровне железа да, понимаю, если какой-нить автопилот имеет тройное резервирование и аппаратную горячую автоматическую замену. Но на уровне программы в одном процессоре - в чём смысл?? нет никакой гарантии, что какой-то сбой работы программы в одной ветке не затронул остальные. Тут нужно резервирование и автоматическое восстановление состояния и работоспособности по-моему на аппаратном уровне. А это совершенно другие трудозатраты и вообще другая история :)