Я работаю над спутниковым проектом, и часть проекта заключается в том, чтобы сохранить избыточную копию программного кода во флэш-памяти. Я искал везде и ничего не нашел. Есть ли способ использовать компоновщик c ++ для размещения копий кода в двух областях памяти? Я ограничен в коде компоновщика. Есть ли другой способ сделать это, если не с компоновщиком, кроме использования процедуры запуска, когда микроконтроллер изначально загружается после перепрошивки?
Просто для ясности: в одной области флэш-памяти будет находиться исполняемая версия кода, а в другой области флэш-памяти — и, если возможно, неисполняемая версия кода. Программный код включает в себя все векторы прерываний. Я уже изменил код компоновщика, чтобы разделить флэш-память на сегменты, которые я хочу.
Заранее спасибо.
ИМХО, если вы пытаетесь защитить свою систему таким образом (двойной случай), потому что вы ожидаете переворотов из-за радиации в космосе, то ваши шансы на выживание системы дольше, чем в 10 раз больше расчетного среднего времени между инцидентами (радиация немного меняется) ) довольно тонкий. Обнаружение ошибки контрольной суммы относится к 1 дефекту в 10 ^ 6 образцах в устройствах массового производства с требованиями отказоустойчивости. Он не подходит для отказоустойчивых систем, где риск и стоимость системы соответствуют более или менее 4-балльной системе координат.
Других решений пока нет …