|
Микроконтроллер (неважно какой). Внешняя блочная флеш (которую можно одновременно писать и читать) и ОЗУ. Один из блоков флеш (под системные таблицы, которые общие для обеих вариантов рабочей программы) - в адресном пространстве ОЗУ. В него всегда можно писать и читать.
Еще два блока - под варианты рабочих программ. Они в адресном пространстве памяти программ. Если работаем от "нижнего" блока - "верхний" перемещается в адресное пространство внешнего ОЗУ - в него можно шить новую программу "на ходу". Если работаем от "верхнего" блока - все наоборот. При этом инвертируем старший адресний разряд - и всегда для текущей активной программы ее блок "нижний", резервный - "верхний" и доступный для записи/чтения. Монитор - во внутренней памяти программ. В принципе, его можно перенести и в еще один блок внешней флеш (н.р BootBlock), но это не очень удобно - и зашивать флеш придется внешним оборудованием до впаивания в плату (это большой минус для завода), и при "слете" (возможном) флеша для восстановления загрузчика придется отпаивать флеш.
К, сожалению, здесь тяжело вести продолжительные обсуждения - слишком быстро меняется страница (можно успеть только пофлеймить).
А задача довольно интересная.
E-mail: info@telesys.ru