По мне решение выглядит так:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Алехин Александр 21 ноября 2003 г. 14:43
В ответ на: А вектора прерываний откуда брать? отправлено Алехин Александр 21 ноября 2003 г. 14:32

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

К, сожалению, здесь тяжело вести продолжительные обсуждения - слишком быстро меняется страница (можно успеть только пофлеймить).
А задача довольно интересная.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru