Цитата(piz2383 @ Jul 23 2009, 01:49)

Т.е. единственное что нужно добавить это что бы загрузчик размещался с адресов 0x100000, а пользовательская программа с адреса 0x108000 и во время копирования нужно копировать с адреса 0x100000 в адрес 0x200000. Правильно я понимаю Вас?
Да. И несколько иначе описать сами вектора в файле линкера. Поищите по форуму по ключевому слову INTVEC, я буквально на прошлой неделе пример приводил.
Но если программный сброс был собакой или битом в контроллере сброса, то ремап автоматически переключится на флеш в процессе сброса. Я, для определения откуда попали в загрузчик, использую один из битов направления порта. При включении питания он настроен на ввод. Приложение его настраивает на вывод.
Цитата(piz2383 @ Jul 23 2009, 01:49)

Кстати в обработчик бутлоадера мы можем попасть как после включения так и после программного сброса. Если после включения питания то remap не вызывался, а если после программного сброса то выполнялась команда ремап. Как-то программно можно это определить?
У SAM7 довольно хитро: берете любой адрес в ОЗУ (например, адрес автоматической переменной на стеке), находите соответствующий ему адрес в области ремапа и сравниваете содержимое по этому адресу. Если не совпало - в нулевые адреса отражена флеш. Если совпало - изменяете переменную и смотрите, изменилось ли так же содержимое ячейки в области ремапа. Если изменилось - отражено ОЗУ.