Цитата(Nikola Kirov @ Sep 28 2005, 06:26)
...Проблем получается потом. А в проекте где боотлоадер будем ползоват нада указат что верхная граница флаша ето начало боотлоадера. Иначе линкер может ползоват област боотлоадера и разположит там кое что...
Проблема решается, что называется, в лоб:
перед функцией int main(void), в области, где, например, определяешь глобальные переменные пишем:
#define BOOT_LOADER_SIZE 0xFF // 256 байт, хотя можно сколь угодно
#pragma location = FLASHEND - BOOT_LOADER_SIZE
__root char __flash boot_loader_code[BOOT_LOADER_SIZE];
макрос FLASHEND определен в заголовочном модуле на примененный в проекте CPU. Например, в фйле для МК ATmega8515 - iom8515.h макрос FLASHEND имеет значение 0x1FFF
Естественно, перед прошивкой, массив boot_loader_code можно удалить. Однако, неоходимо проверять не увеличился ли код, после удаления массива. Размер сгенерированного кода можно увидеть, если в меню Tools->Options, на вкладке Messages в поле Show build messages установить пункт All