Цитата(IVN2013 @ Jan 12 2014, 17:23)

Я не так давно имею дело с AVR GCC и С++ вообще, до этого работал с ассемблером. Насколько понял опции линкера доступны в проект > свойства...>toolchain >AVR/GNU linker> miscellaneous или > memory settigs .
Можно и через эти опции.
Цитата(IVN2013 @ Jan 12 2014, 17:23)

И что будет давать -Wl,--section-start=.text=0x30000? - адрес с которого будет заливаться весь код?,
Да, код загрузчика будет расположен по адресам начиная с 0x30000.
Цитата(IVN2013 @ Jan 12 2014, 17:23)

это ведь не определяет принадлежность кода к области загрузчика?
Принадлежность кода к области загрузчика определяется двумя вещами:
1) размер бута и стартовый адрес определяется фузами.
2) программа бута должна быть расположена по адресам в соответствии с фузами
Цитата(IVN2013 @ Jan 12 2014, 17:23)

Смысл того что я хочу сделать это: исполняемая бесконечно программа application части, которая стартует сразу, и после прихода по USART определенной команды - переход в бутлоадер, после чего можно либо вернуться обратно, либо залить другую прошивку application части, после чего - сразу переход к ее выполнению.
Можно и так конечно, но лучше, чтобы загрузчик стартовал первым (для чего есть соответствующий фуз). В остальном - нормально.
Цитата(IVN2013 @ Jan 12 2014, 17:23)

Может быть следующая инфа из boot.h описывает именно как разместить код в лоадер?: #define BOOTLOADER_SECTION __attribute__ ((section (".bootloader")))
Как-то так наверное:
Код
BOOTLOADER_SECTION void BootFunc()
{
///
}
или так(не проверял) :
Код
void BootFunc() BOOTLOADER_SECTION
{
///
}
Цитата(IVN2013 @ Jan 12 2014, 17:23)

Если у кого есть какие мысли по этому поводу, пишите. Заранее спасибо!
Только зачем макрос BOOTLOADER_SECTION? Не лучше ли всю программу сместить с помощью опций линкера?