Большое спасибо за ответ! С утра буду опять мучать контроллер.
В данной ситуации меня попросили сделать именно так, чтобы грузилась основная программа, поэтому тут мне выбирать не приходится.
По поводу опций линкера не совсем понял что значит параметр ".text" в примере -Wl,--section-start=.text=0x30000 ?, нашел относительно этого пример на
http://www.nongnu.org/avr-libc/user-manual...#faq_reloc_code ,
там приводится пример: -Wl,--section-start=.bootloader=0x1E000, т.е. указывается ".bootloader".
Относительно отдельного определения положения функций, по той же ссылке, приводится следующее:
First, the code should be put into a new named section. This is done with a section attribute: __attribute__ ((section (".bootloader")))
In this example, .bootloader is the name of the new section. This attribute needs to be placed after the prototype of any function to force the function into the new section.
void boot(void) __attribute__ ((section (".bootloader")));
и далее To relocate the section to a fixed address the linker flag --section-start is used. This option can be passed to the linker using the -Wl compiler option:
-Wl,--section-start=.bootloader=0x1E000
Не пойму - что здесь такое - "атрибут" ? , и здесь ".bootloader" это произвольное название секции которое указываем в опции линкера: -Wl,--section-start=.bootloader=0x1E000 ?
Т.е. в любом случае нужно указывать название и адрес области в линкере? Что - то начинаю совсем запутываться )
Цитата(_Артём_ @ Jan 12 2014, 19:02)

Только зачем макрос BOOTLOADER_SECTION? Не лучше ли всю программу сместить с помощью опций линкера?
Даже не знаю, может быть и лучше. Дело в том, что попросили сделать так чтобы старт был именно из application части.
Возможно при этом будет удобнее залить тестовую программу в application часть, для отладки и отдельно часть бутлоадера. А для этого нужно раскидывать код по отдельности.