Только что сделал примерно следующее:
Makefile
Код
START_BOOT_ADDR = 0x1000
MAIN_BOOT_ADDR = 0x1010
LDFLAGS += -Wl,--section-start=.boot0=$(START_BOOT_ADDR)
LDFLAGS += -Wl,--section-start=.boot1=$(MAIN_BOOT_ADDR)
main.c
Код
void pre_boot(void) __attribute__((section(".boot0"),used,naked));
void Boot_Loader(void) __attribute__((section(".boot1"), used,OS_main));
void pre_boot(void)
{
asm("clr r1"::);
SP = RAMEND;
asm("rjmp Boot_Loader"::);
}
Это годится хоть для совместного использования с бутом, хоть для совместной заливки хоть для раздельной