Начну с того, что разработчик (в данном случае вы) волен сам выбирать решения. Их много. Любую задачу можно решить десятками способов. Я буду, для начала приводить общепринятые решения под фишкой "обычно".

Цитата(demon_lee @ Mar 31 2009, 22:20)

то есть проверяет целостность прямо у себя во флеши?
Естественно. Этим он контролирует правильность программы, которую планирует выполнять. Кроме того, этим он проверяет была ли закончена операция обновления приложения. Представьте себе, что во время записи приложения у вас произошёл сбой питания. В этом случае ничего страшного не произойдёт, так как при перестарте бут проверит целостность приложения, увидит что не совпадает CRC и будет ждать повторной передачи приложения.
Цитата
этим будет рулить модем, я демаю он будет ресетить мегу, а та при старте начнет искать прошивку.
Обычно делают так:
1) бут записывает приложение сразу себе во флэш.
2) Например работа вашего устройства состоит в выдаче пакета на запрос. (как я понял). Соответственно вы вводите ещё один запрос на выдачу версии. И ещё один запрос на обновление приложения. Внешнего ресета - не требуется. Будет внутренний переход на бут. При этом при ресете обязательно запускается бут анализирует и переходит на прилож, как я писал выше.
Цитата
1-ая ссылка совершенно не из той оперы. Это метод программирования контроллера с помощью внешнего контроллера.
2-ая - да. Это по теме. Можно ещё порекомендовать AVR231. Очень многие его брали за основу.
Если же говорить о протоколах, то лучше почитайте что-нибудь типа WakeUp. Простой, но дающий общую картину.
Цитата
это будет
чтобы упростить программу бута, картина вырисовывается такая:
ресет, старт бута, он по SPI из внешней еепромки качает приложение себе, проверяет, стартует, работает
при необходимости ребутим мегу, предварительно залив вовнешнюю еепром программу.
логично.
Можно и так.
Обычно так:
Передаём команду в приложение и по ней мега переходит на бут.
Передаём новый код приложения буту. Бут записывает.
по финишу бут контролирует и переходит назад на приложение. (новое)
Можно и так:
Передаём приложению новое приложение и мега складывает его в отдельную eeprom. Контролирует целостность.
По завершению передаём команду и переходим на бут. бут переносит приложение из eeprom во флэш. Перестартует.
Можно и как ваш случай, тогда надо организовывать совместное использование eeprom.
Цитата
но тогда вопрос, а можно ли одним контроллером в еепром писать, а другим из неё читать на примере spi (просто у меня по и2с обмен с модемом сделан, а он слейвом на шине быть отказывается).
я это как бы сказать...чайник в этом деле
Как раз по i2c это вполне возможно. Будет 2 мастера. Один записывает - второй читает. Только не одновременно, а попеременно.
С SPI придётся городить аппаратный мультиплексор выбора. В принципе не сложно. И ещё надо организовывать чтото типа признака занятости для каждого из процессоров. Тоже в принципе не сложно. Если это нужно конечно.